W wielu zagadnieniach zwłaszcza ekonomicznych przyjmuje się wykładniczą postać funkcji \(\displaystyle{ f(x) = a\cdot e^{b\cdot x} }\) w Metodzie
Namniejszych Kwadratów.
W tym celu funkcję wykładniczą sprowadzamy do funkcji liniowej przez logarytmowanie:
\(\displaystyle{ \ln [f(x)] = b\cdot x +\ln(a), }\)
i stosując podstawienia:
\(\displaystyle{ F(x) = \ln[f(x)], \ \ \alpha = \ln(a), \ \ \beta = b,}\)
otrzymujemy funkcję liniową:
\(\displaystyle{ F(x) = \beta \cdot x + \alpha .}\)
Transformujemy punkty \(\displaystyle{ (x_{i}, y_{i}) }\) na punkty \(\displaystyle{ (x_{i}, \ln(y_{i})) }\)
obliczając wartości \(\displaystyle{ \beta }\) i \(\displaystyle{ \alpha. }\) Z równań \(\displaystyle{ b = \beta, \ \ a = e^{\alpha} }\) otrzymujemy \(\displaystyle{ a,b. }\)
Program w MATLAB
Kod: Zaznacz cały
function expmnk(x,y)
% Wykładnicza Metoda Najniejszych Kwadratów
n =length(x);
n=length(y);
z=log(y);
sumx=sum(x);
sumz=sum(z);
sumx2=sum(x.*x);
sumxz=sum(x.*z);
beta=(n*sumxz-sumx*sumz)/(n*sumx2-sumx^2);
b=beta;
alfa=(sumx2*sumz-sumxz*sumx)/(n*sumx2-sumx^2);
a=exp(alfa);
disp(' Wykladnicza Metoda Najmniejszych Kwadratów ')
fprintf('\n a=%12.6f\n',a)
fprintf('b=%12.6f\n',b)
disp('____________________________________________________________')
disp(' xi yi ln(yi) a*exp(b*xi) |yi-[a*exp(b*xi)]|')
disp('_____________________________________________________________')
for i=1:n
ye=a*exp(b*x(i));
err(i)=abs(ye-y(i));
fprintf('%6.2f %6.2f %6.2f %12.6f %12.6f\n',x(i),y(i),z(i),ye,err(i))
end
Kod: Zaznacz cały
>> expmnk(x,y)
Wykladnicza Metoda Najmniejszych Kwadratów
a= 3.801404
b= -0.044406
____________________________________________________________
xi yi ln(yi) a*exp(b*xi) |yi-[a*exp(b*xi)]|
_____________________________________________________________
1.00 4.00 1.39 3.636293 0.363707
3.00 3.50 1.25 3.327274 0.172726
4.00 2.90 1.06 3.182757 0.282757
6.00 2.50 0.92 2.912280 0.412280
9.00 2.75 1.01 2.549046 0.200954
15.00 2.00 0.69 1.952841 0.047159