GNU Octave/Interpolacja wielomianowa
Interpolacja wielomianowa
edytujZaimplementować 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