0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

Wyprowadzenie wielomianów

a) metodą Lagrange'a

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

b) metoda Newtona

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

Kod programu

>> x=[0 pi/3 pi/2 3*pi/4];

y=sin(x).^2;

% interpolacje Lagrange'a

[A,L]=lagran(x,y);

w=length(x);

n=w-1;

L=zeros(w,w);

for k=1:n+1

V=1;

for j=1:n+1

if k~=j

V=conv(V,poly(x(j)))/(x(k)-x(j));

end

end

L(k,:)=V;

end

A=y*L;

%interpolacje Newtona

[C,D]=newpoly(x,y);

p=length(x);

D=zeros(p,p);

D(:,1)=y';

for j=2:p

for k=j:p

D(k,j)=(D(k,j-1)-D(k-1,j-1))/(x(k)-x(k-j+1));

end

end

C=D(p,p);

for k=(p-1):-1:1

C=conv(C,poly(x(k)));

m=length(C);

C(m)=C(m)+D(k,k);

end

%obliczenie błędu lokalnego

xlok=pi/4;

Blad=abs(sin(xlok)^2-(A(1)*xlok^3+A(2)*xlok^2+A(3)*xlok+A(4)));

xx=linspace(x(1),x(4),300);

ypom=sin(xx).^2;

yy=polyval(A,xx);

plot(x,y,'ro',xx,ypom,'b-',xx,yy,'k-');

>> x

x =

0 1.0472 1.5708 2.3562

>> y

y =

0 0.7500 1.0000 0.5000

>> A

A =

-0.2967 0.6248 0.3873 0

>> C

C =

-0.2967 0.6248 0.3873 0

>> Blad

Blad =

0.0458

Wykres

0x01 graphic

Wnioski

Błąd lokalny dla x=pi/4 wyszedł niewielki świadczy to o poprawnym obliczeniu wielomianu interpolacyjnego co również widać na załączonym wyżej wykresie. Z obliczeń widać również, że metoda Lagrange'a oraz Newtona dają takie same wyniki, inna jest tylko metoda obliczeń.