Jedna od funkcija kojom je direktno moguce konstruisati Lagrange-ov interpolacioni polinom jeste p=polyfit(x,y,n). Argumentima x i y je predstavljena tabela interpolacije (x je vektor vrednosti cvorova, a y vektor vrednosti u cvorovima), dok je n stepen rezultujuceg polinoma. Funkcija vrsi interpolaciju u slucaju da je stepen n za 1 manji od od dimenzije vektora x, odnosno y. STUDENTIMA SE SAVETUJE DA SAMI TESTIRAJU KOD KOJI CE DA USLEDI I UVERE SE U NJEGOVU ISPRAVNOST.
Problem: Koriscenjem MATLAB-a izvrsiti interpolaciju funkcije f(x)=1/(1+25*x^2) na intervalu [-1,1] Lagrangeovim interpolacionim polinomom stepena 9.
a) Interpolaciju izvrsiti na ekvidistantnoj mrezi.
b) Za cvorove interpolacije odabrati cos(19*pi/20), cos(17*pi/20),..., cos(pi/20).
Uporediti u kom slucaju je interpolacija preciznija.
Naredni kod konstruise Lagrange-ov interpolacioni polinom za oba izbora cvorova i iscrtava grafike interpolanta (funkcije f(x) koja se interpolira) i polinoma iz dela pod a) na jednoj, odnosno interpolanta f(x) i polinoma iz dela pod b) na drugoj slici.
% Interpolant (obratiti paznju na nacin na koji se zadaje funkcije - posebno koriscenje znaka "." i podsetiti se iz Racunarskih alata koja je svrha istog)
f=inline('1./(1+25*x.^2) ');
% Broj cvorova interpolacije
n=10;
%Mreza za iscrtavanjanje same funkcije f
X=linspace(-1,1);
%Ekvidistantni cvorovi (za deo pod a))
xeqd=linspace(-1,1,n);
%Cvorovi za deo pod b)
xcos=cos((2*(n-1:-1:0)+1)/(2*n)*pi);
%Vrednosti funkcije u jednim i drugim cvorovima (obratiti paznju na koriscenje funkcije "feval")
yeqd=feval(f, xeqd);
ycos=feval(f, xcos);
%Konstruisu se odgovarajuci interpolacioni polinomi za delove a) i b) redom
Leqd=polyfit(xeqd, yeqd, n-1);
Lcos=polyfit(xcos,ycos, n-1);
%Iscrtavaju se najavljeni grafici
%Za slucaj ekvidistantne mreze (grafik funkcije je plav - 'b'; grafik polinoma je crven - 'r' i obratiti paznju na koriscenje funkcije "polyval" kojom se racunaju odgovarajuce vrednosti polinoma, 'ro' se koristi da bi se cvorovi istakli kruzicem; podsetiti se naredbi "subplot" i "grid on")
subplot(1,2,1); grid on;
plot(X, f(X), 'b', X, polyval (Leqd, X), 'r', xeqd, yeqd, 'ro')
title('f(x)=1/(1+25*x^2) - ekvidistantna mreza');
legend('f(x)', 'Leqd(x)');
%Za slucaj mreze pod b) (opet grafik funkcije plav - 'b'; grafik polinoma crven - 'r', opet se odgovarajuci cvorovi isticu kruzicem)
subplot(1,2,1); grid on;
plot(X, f(X), 'b', X, polyval (Lcos, X), 'r', xcos, ycos, 'ro')
title('f(x)=1/(1+25*x^2) - ekvidistantna mreza');
legend('f(x)', 'Lcos(x)');
ZAKLJUCAK: Mreza zadata pod b) daje precizniju interpolaciju, sto je inace poznata cinjenica u Teoriji interpolacije.
A. Pejcev