GNU Octave/Interpolacja wielomianowa

Interpolacja wielomianowa

edytuj
 
Interpolacja wielomianowa dla 21 węzłów

Zaimplementować interpolację wielomianową. Znaleźć wielomian interpolacyjny dla węzłów rółnoodległych na odcinku   dla funkcji  .

Zadajemy wielomian i liczbę węzłów.

P=[1, 0, 1];
N=21;

Zadajemy punkty na podstawie danego wielomianu:

X=[-5:(10.0/N):5];
Y=polyval(P,X);
Y=Y';

Rozwiązanie macierzą Vandermonde'a, z użyciem funkcji vander:

V=vander(X);
A=inv(V)*Y;
B=V\Y;
blad_Vander_inv=norm(polyval(A,X)-Y',2)
blad_Vander_LU=norm(polyval(B,X)-Y',2)

Rozwiązanie Octave'a z użyciem polyfit

R=polyfit(X,Y',3);
blad_polyfit=norm(polyval(R,X)-Y',2)

Rysowanie danych i wyników:

_X=[-5.5:0.05:5.5];
_Y=polyval(R,_X);
_Z=polyval(A,_X);
_W=polyval(B,_X);
axis([-5.5,5.5,-2,30]);
plot(_X,_Y,"-g;Polyfit;",_X,_Z,"-b;Vander inv;",_X,_W,"-c;Vander LU;",X,Y,"*r;Dane;")

Wynik na komputerze autora (typowy PC):

blad_Vander_inv =  4.2279e-08
blad_Vander_LU = 0.024093
blad_polyfit =  7.3644e-16