2012-04-03 7 views
3

Ich versuche, einige periodische experimentelle Daten anzupassen und entdeckte, dass die Methoden, die für die Kurvenanpassung an andere Funktionen funktionieren, nicht für trigonometrische funktionieren - zumindest - so wie ich es mache.Trigonometrische Anpassung in Mathematica funktioniert nicht?

Hier ist mein Code:

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}]] 

Und hier ist, was der Code erzeugt:

FittedModel[-0.184706 Sin[1.00073 x]] 

A failure of a curve fit

Es funktioniert perfekt, wenn ich die Sin Funktionen in diesem Beispiel wechseln Anmelden oder zu einer anderen Art von Funktion, aber es schlägt fehl, wenn ich versuche, Sin oder Cos zu verwenden.

Irgendwelche Vorschläge?

+2

Dieses Problem im Wesentlichen abgedeckt wurde auf [ mathematika.se] von diesem [Antwort] (http://mathematica.stackexchange.com/a/23 27/52). – rcollyer

+0

@rcollyer Bitte denken Sie daran, dass die Mma Seite immer noch in der Beta ist ... –

+0

Danke rcollyer. Ich habe den Link zu den von mir verwendeten Google-Keywords nicht gefunden. –

Antwort

3

Versuchen Sie es mit NMinimize Methode:

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}]] 

ist hier die Ausgabe:

FittedModel[-3. Sin[2.28319 x]] 

Und hier ist die resultierende Kurve:

result of fitting