Естественные науки

Как найти коэффициенты функции f(x)= a*(1/x^b) по трем известным точкам? Так, что бы это можно было запилить программно.

Мой гумманитарный мозг не осилил даже с гуглом. Идея такая: даны 3 точки и кривая через них проходящая предположительно должна строится по функции из заголовка. Надо достроить по этой функции остальные точки в некотором диапазоне, для чего нужны ее коэффициенты. Известно что с ростом х значение функции убывает значит b>0, вроде как а тоже больше 0. Уверен, что это возможно потому, что эксель это делает на раз через построение линии тренда к диаграмме из 3х точек.
Метод наименьших квадратов и аппроскимацию гуглите.
ОК
Ольга Косачева
52 248
Лучший ответ
Метод наименьших квадратов в каком-то виде.

Первое приближение можно взять как у Сергея Червякова, дальше методом Левенберга -Маркуадта.
Ме4Т@_ Иди()Т@ Хдд Тут есть какой-то сайт (проект, форум...) по математике и физике, название забыл. На эмблеме вроде стоит знак дифференциала. Прошу подсказать название, если знаете.
Метод наименьших квадратов солиднее и скорее всего точнее. Но если исходить из "метода С. Червякова", то нужно исходить из того, что точек не 2, а 3. Тогда следует коэффициенты определить для 3-х комбинаций точек (1 и 2, 1 и 3, 2 и 3) и найти их средние значения:
b1= (lgy2-lgy1)/(lgx1-lgx2), a1= y1*x1^b1; b2= (lgy3-lgy1)/(lgx1-lgx3), a2= y1*x1^b2; b3= (lgy3-lgy2)/(lgx2-lgx3), a3= y2*x2^b3. a= (a1+a2+a3)/3, b= (b1+b2+b3)/3.

А решение по методу наименьших квадратов несравненно легче, чем предлагает Кар...
Здесь есть два варианта, зависит от точного условия, от того, что требуется, потому что (судя по ответам) понимание нами вашей формулировки двоякое.

1) Если точно известно, что есть f(x)= a*(1/x^b)- функция, и
известны ТОЧНЫЕ координаты точек, через которые она проходит,
то, как правильно писал Сергей Червяков, ДОСТАТОЧНО двух точек.

Тогда система уравнений позволяет найти их.

2) Если же задача такая:
известно несколько точек,
нужно написать функцию (подобрать коэффициенты) вида f(x)= a*(1/x^b) так,
чтобы она "как можно ближе" проходила к указанным точкам (построить тренд),
то тогда используется метод наименьших квадратов.

Дело в том, что если точек более двух, то, скорее всего, найти коэффициенты подстановкой невозможно.

В этом случае берут данные точки
(х1,y1),
(x2,y2),
(x3,y3)

берут такие точки на графике функции
((х1, a/x1^b),
(x2,a/x2^b),
(x3,a/x3^b)

ищем отклонения от графика у данных точек
(у1-a/x1^b)
(у2-a/x2^b)
(у3,a/x3^b)

берем сумму их квадратов (чтоб нивелировать разницу в знаках)

(у1-a/x1^b)^2+ (у2-a/x2^b)^2+ (у3,a/x3^b)^2
получаем функцию двух переменных a и b, у которой ищем минимум.
...мой коэффициент восприятия вам не подойдёт...
Nodirbek Shafoatov
Nodirbek Shafoatov
24 932
Так как коэффициента два, то и точек достаточно две.
y1=a/x1^b; y2=a/x2^b

y1/y2=(x2/x1)^b ==> log(y1/y2)=b*log(x2/x1) ==> b=log(y1/y2)/log(x2/x1)
y1=a/x1^b ==> a=y1*x1^b; b из предыдущей строки
&K
<*dj. Kotik*>
3 981
составить систему уравнений, подставив значения функции и аргумента точек