\require{AMSmath}
WisFaq - de digitale vraagbaak voor wiskunde en wiskunde onderwijs


Printen

Re: Optimalisatie: aanpassing aan meetpunten

 Dit is een reactie op vraag 34117 
Beste Tom (of collega),
De links die je gaf, helpen me niet echt. Ik vind er wel uitleg over functies y(x) die een rechte lijn opleveren en functies die je tot zo'n rechtlijnig verband kunt herleiden, zoals y(x)=2*p*Ö(x/g) of y(x)=a*eb*x. Maar ik kan mijn functie y(x)=b+(a-b)*exp(-c*x) niet 'rechtlijnig' maken vanwege 'b+..'. Zodoende kom ik ook met http://mathworld.wolfram.com/LeastSquaresFittingExponential.html niet verder. Misschien moet ik een geschatte startwaarde van b kiezen; via lineaire regressie de beste bijpassende a en c vinden en dan itereren... maar zijn de uiteindelijke a, b en c dan wel onafhankelijk van geschatte startwaarden? Dank, Jaap

Jaap
Docent - donderdag 4 augustus 2005

Antwoord

Goeiedag

Het is inderdaad onmogelijk deze functie via een trucje lineair te maken. De kleinste-kwadraten-methode minimaliseert de som van de fouten in het kwadraat. Als de fit-functie niet lineair is in de gezochte parameters, kan dit minimum-probleem alleen via iteratieve methodes worden opgelost. Je zal de waarden a,b & c moeten schatten om te gebruiken in de eerste iteratiestap. Als je a, b of c volledig verkeerd schat, is het mogelijk dat de iteratie divergeert of convergeert naar een verkeerd minimum (lokaal minimum). In die zin is de uiteindelijke oplossing altijd afhankelijk van je startwaarden a, b & c. Maar in de praktijk ga je er natuurlijk vanuit dat een redelijke schatting van de parameters volstaat om het absolute minimum (beste fit) te verkrijgen.

Er bestaan verschillende methodes om dergelijke minimum-problemen iteratief op te lossen. Voorbeelden zijn de methodes van Newton, Gauss-Newton & Levenberge-Marguardt. Je gebruikt best voorgedefinieerde code als je deze methodes wil aanwenden. Hier vind je een hele interessante, doch niet eenvoudige, uitleg over hoe je met Matlab een niet-lineaire curve kan fitten.

Nog interessanter is deze website. Daar wordt jouw functie expliciet behandeld en er is zelfs een applet die je de waarden van a,b & c (p1,p2 & p3) uitrekent aan de hand van een iteratieve methode.

Mocht je zelf nog wat willen zoeken op het internet gebruik dan de zoektermen
"nonlinear least square".

Groetjes

Igor
zondag 7 augustus 2005

©2001-2024 WisFaq