Forum: Compiler & IDEs Exponentiellen Fit implementieren


von MW (Gast)


Lesenswert?

Hallo Leute,

ich schreibe gerade meine DA und komme nicht wirklich weiter. Und zwar 
habe ich einen AT91SAM7X128 und nehme damit Daten auf. Diese Daten 
ähneln eine Abklingkurve (vergleichbar mit Entladekurve eines 
Kondensators) und daher möchte ich diese Daten gerne einer 
exponentialfunktion annähern. Dazu würde ich gern auf dem Controller 
eine Fitfunktion nach dem Muster I(t)=I0*exp(-t/tau)+c implementieren, 
aber weiß nicht wirklich wo ich da anfangen soll.
Hat von euch schon jemand einmal solche mathematischen Fitfunktionen 
implementiert oder kann mir jemand einen Typ geben, wo ich da am besten 
nachschlagen kann?

Mfg MW

von Karl H. (kbuchegg)


Lesenswert?


von J.-u. G. (juwe)


Lesenswert?

Im Falle von Exponentialfunktionen bietet sich die 
Levenber-Marquardt-Methode an. Ein C-Codebeispiel ist "Numerical Recieps 
in C" zu finden. Eine ältere Version dieses Buches ist Online lesbar
(ab Seite 683).

von MW (Gast)


Lesenswert?

Hätte man eigentlich selber drauf kommen können:-)
Danke.

von Glubsch (Gast)


Lesenswert?

Zuerst sollte man so einen Fit natuerlich aufm PC testen.
Im Fall der Exponentialfunktion, welche ueber einige Ordnungen gehen 
kann, ist ein Least Square geanu der Falsche, denn dann ueberwiegen die 
paar grossen Werte gegenueber den kleinen. Was man dann machen kann 
waere im logarithmischen Raum zu rechnen.

von Detlef _. (detlef_a)


Lesenswert?

Die Fkt. I(t)=I0*exp(-t/tau) kann man logarithmieren und dann linear 
fitten, das ist der Standardhack bei diesem Problem:

ln(I(t)) = ln(I0)-t/tau

Cheers
Detlef

von Ulrich (Gast)


Lesenswert?

Wenn man Daten mit einem Offset hat, hilft das Logarithmieren auch nur 
sehr begrenzt.

Es hängt auch von der Herkunft der Daten und den zu erwartenden Fehlern 
ab, ob es besser ist direkt nach den kleinsten Quadraten anzupassen, 
oder ob die Daten erst umgerechnet werden sollten, z.B. durch den 
Logarithmus. Weder das eine noch das andere ist immer richtig.

von Detlef _. (detlef_a)


Lesenswert?

>>Wenn man Daten mit einem Offset hat, hilft das Logarithmieren auch nur
>>sehr begrenzt.

Den Offset kann man rausrechnen, weil I(t)=I0*exp(-t/tau)+c für t gegen 
unendlich gegen c geht, man also c kennt wenn man lange genug wartet.

Lineare Regression und Polynome fitten klappt immer gut, diese 
nichtlinearen fits haken immer irgendwo: Anfangswerte, Konvergenz, 
lokale Minima, was weiß ich. Das geht nur einigermassen, wenn man die 
Lösung schon so in etwa kennt.

Das sage ich so, weil ich das schon öfter gemacht habe und darin total 
erfahren bin, so ist das nämlich ;-)

Cheers
Detlef

PS: Der TO scheint an den Einlassungen zu seiner Frage nicht mehr so 
brennend interessiert zu sein. Sieht man häufig, Frage war wohl nicht 
allzu ernst gemeint, schade.

von MW (Gast)


Lesenswert?

Danke für die vielen Hinweise.

Natürlich bin ich noch an der Frage interessiert, sonst hätte ich sie 
nicht gestellt;-)
Leider hab ich gerade keine richtige Zeit mich damit zu beschäftigen, 
weil ich den schriftlichen Teil meiner DA bald abgeben muss und ich die 
Umsetzung des Fits erst danach machen will, weil es nicht Teil meiner 
Arbeit ist. Wollte nur schon mal ein paar Anregung einholen um nicht 
ganz von Null anzufangen. Also wie gesagt erstmal Danke für die tollen 
Ratschläge. Ich melde mich wieder, wenn ich mich mit dem Problem genauer 
auseinander gesetzt habe.

MFG MW

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.