Strona 1 z 1

Hiperboliczna Metoda Najmniejszych Kwadratów

: 30 lip 2022, o 19:55
autor: janusz47
Hiperboliczna Metoda Najmniejszych Kwadratów

Hiperboliczna metoda Najmniejszych Kwadratów wykorzystuje jako funkcję aproksymującą - funkcję hiperboliczną

\(\displaystyle{ f(x) =a + \frac{b}{x} \ \ (1) }\)

Ten rodzaj aproksymacji stosuje się, gdy dane dążą do asymptot poziomych lub pionowych.

Przed znalezieniem i rozwiązaniem układu równań normalnych - linearyzujemy funkcję \(\displaystyle{ (1) }\) za pomocą podstawień:

\(\displaystyle{ F(x)= f(x), \ \ \alpha =a, \ \ \beta = b, \ \ }\) i \(\displaystyle{ X = \frac{1}{x}. }\)

Otrzymujemy funkcję liniową: \(\displaystyle{ F(x) = \alpha + \beta\cdot X, }\) przekształcamy współrzędne \(\displaystyle{ (x_{i}, y_{i}, ) }\) na \(\displaystyle{ \left(\frac{1}{x_{i}} , y_{i} \right), \ \ i=1,2,...,n.}\)

Program w MATLAB

Kod: Zaznacz cały

function hipmnk(x,y)
% Hiperboliczna Metoda Najniejszych Kwadratów
n =length(x);
n=length(y);
z=ones(size(x));
z=z./x;
sumz=sum(z);
sumy=sum(y);
sumz2=sum(z.*z);
sumzy=sum(z.*y);
b=(n*sumzy-sumz*sumy)/(n*sumz2-sumz^2);
a=(sumz2*sumy-sumzy*sumz)/(n*sumz2-sumz^2);
disp('     Hiperboliczna Metoda Najmniejszych Kwadratów      ')
fprintf('a=%12.6f\n',a)
fprintf('b=%12.6f\n',b)
disp('____________________________________________________________')
disp('   xi      yi   a+b/xi     a+b/xi   |yi-(a+b/xi)|')
disp('_____________________________________________________________')
for i=1:n
    yh=a+b/x(i);
    err(i)=abs(yh-y(i));
    fprintf('%6.2f %6.2f %6.2f %12.6f %12.6f\n',x(i),y(i),z(i),yh,err(i))
end
Przykład

Kod: Zaznacz cały

>> x=[1 3 4 6 9 15];
>> y=[4.0 3.5 2.9 2.5 2.75 2]; 
>> hipmnk(x,y)
     Hiperboliczna Metoda Najmniejszych Kwadratów      
a=    2.364128
b=    1.797526
____________________________________________________________
   xi      yi   a+b/xi     a+b/xi   |yi-(a+b/xi)|
_____________________________________________________________
  1.00   4.00   1.00     4.161654     0.161654
  3.00   3.50   0.33     2.963304     0.536696
  4.00   2.90   0.25     2.813510     0.086490
  6.00   2.50   0.17     2.663716     0.163716
  9.00   2.75   0.11     2.563853     0.186147
 15.00   2.00   0.07     2.483963     0.483963