Тригонометрическая подгонка в Mathematica не работает? - PullRequest
3 голосов
/ 03 апреля 2012

Я пытаюсь подгонять кривые к некоторым периодическим экспериментальным данным и обнаружил, что методы, которые работают для подгонки кривой к другим функциям, не работают для тригонометрических - по крайней мере - так, как я это делаю.

Вот мой код:

falseData = Table[{x, N[3*Sin[4*x]]}, {x, 10}];
model = a*Sin[b*x];
fit = NonlinearModelFit[falseData, model, {a, b}, x]
Show[ListPlot[falseData, PlotStyle -> Red], Plot[fit[x], {x, 1, 10}]]

А вот что генерирует код:

FittedModel[-0.184706 Sin[1.00073 x]]

A failure of a curve fit

Это прекрасно работает, если я переключаюВ этом примере Sin функционирует как Log или как функция другого типа, но когда я пытаюсь использовать Sin или Cos, происходит сбой.

Есть предложения?

1 Ответ

3 голосов
/ 07 сентября 2012

Попробуйте использовать метод NMinimize:

falseData = Table[{x, N[3*Sin[4*x]]}, {x, 10}];
model = a*Sin[b*x];
fit = NonlinearModelFit[falseData, model, {a, b}, x, Method -> NMinimize]
Show[ListPlot[falseData, PlotStyle -> Red], Plot[fit[x], {x, 1, 10}]]

Вот вывод:

FittedModel[-3. Sin[2.28319 x]]

А вот результирующая кривая:

result of fitting

...