Exponentielle Regression

Aufgabe:

Die Trendlinie einer Anzahl von Punkten soll durch Erzeugung einer möglichst passenden Exponentialfunktion angenähert werden.


Code 01
:

load(descriptive);
x:[-2,3,5];
mx:mean(x);
y:[0.41,2.15,4.14];
my:mean(y);
lny:log(y);
mlny:mean(lny);
xy:x*y;
mxy:mean(xy);
x2:x^2;
mx2:mean(x2);
xlny:x*lny;
mxlny:mean(xlny);
k:(mxlny-mlny*mx)/(mx2-mx^2);
lnd:mlny-k*mx;
d:exp(lnd);
k:floor(k*100+0.5)/100.0;
d:floor(d*100+0.5)/100.0;
Ergebnis:Y=d*exp(k*X);
Die Verwendung von Unterprogrammen mit Hilfe von load() kann sinnvoll sein. Hier ist das nicht der Fall, weil nur die Funktion mean() dadurch zur Verfügung gestellt wird, das Programm aber nicht in allen Maxima-Interpretern funktioniert.


YAMWI, CESGA
Exponentielle_Regression

WxMaxima:

exponentielle_regression

Code 02:

mittel(L):=sum(L[i],i,1,length(L))/length(L)$
x:[-2,3,5];
mx:mittel(x)$
y:[0.41,2.15,4.14];
my:mittel(y)$
lny:log(y)$
mlny:mittel(lny)$
xy:x*y$
mxy:mittel(xy)$
x2:x^2$
mx2:mittel(x2)$
xlny:x*lny$
mxlny:mittel(xlny)$
k:(mxlny-mlny*mx)/(mx2-mx^2)$
lnd:mlny-k*mx$
d:exp(lnd)$
k:floor(k*100+0.5)/100.0$
d:floor(d*100+0.5)/100.0$
Ergebnis:Y=d*exp(k*X);
Eine benutzerdefinierte Funktion kann die Rolle eines Unterprogramms transparent ersetzen.


Vroomlab
:

exponentielle_regression2_vroom.PNG