Hallo,
Regressionsanalysen trigonometrischer Funktionen sind immer schwierig, weil
diese in der Regel viele Minima aufweisen.
Ferner sollte ein geeignetes Modell gewählt werden. Wenn data ein additives
und gleichzeitig ein exponentielles Glied als Funktion von x besitzt
(nämlich 10 Exp[0.2 x]), dann wäre es ganz nett dem Modell zumindest ein
solches zu spendieren, das von x abhängt!
Dann würde ich in solch einem Fall selber die Summe der Fehlerqudrate
programmieren, und diese dann minimieren. Bei MMA 4.2 gibt es
NumericalMath`NMinimize`:
Needs["NumericalMath`NMinimize`"]
fn2[a_, b_, c_, d_, x_] = a Sin[ b x + d] + c x
data = Table[ {x, 20 Sin[3 x] + 10 Exp[0.2 x] + 10 Random[]}, {x, 0, 2Pi,
0.01 Pi}];
{la, lb, lc, ld} =
{a, b, c, d} /.
NMinimize[Sum[
(fn2[a, b, c, d, data[[i,
1]]] - data[[i,2]])^2,
{i, 1, Length[data]}],
{a, b, c, d}, Method ->
"DifferentialEvolution"][[
2]]
Show[Plot[fn2[la, lb, lc, ld, x],
{x, 0, 2*Pi},
DisplayFunction -> Identity],
ListPlot[data,
DisplayFunction -> Identity],
PlotRange -> All,
DisplayFunction ->
$DisplayFunction]
Das Ergebnis ist nicht schlecht...
Gruß, Peter Klamser
-----Ursprüngliche Nachricht-----
Von: owner-dmug@XXXXXXX.ch [mailto:owner-dmug@XXXXXXX.ch]Im
Auftrag von Heiko Bierwald
Gesendet: Freitag, 14. März 2003 14:16
An: dmug@XXXXXXX.ch
Betreff: fit again ;-))
hallo,
kann man dieses problem irgendwie beheben ?
Needs["Statistics`NonlinearFit`"]
data = Table[ {x, 20 Sin[3 x] + 10 Exp[0.2 x] + 10 Random[]}, {x, 0,
2Pi,0.01 Pi}];
fn = a Sin[ b x] + c;
lsg = NonlinearFit[data, fn, x, {a, b, c }]
Show[ ListPlot[data], Plot[lsg, {x, 0, 2 Pi}]] ;
und kann man daten aus dem programm "origin" nach mathematica importieren
???
gruss,
heiko
_________________________________________________________________
MSN Hotmail - Absolut kostenfrei! Der weltweit größte E-Mail-Anbieter im
Netz: http://www.msn.de/hotmail