Page 23 - 4299
P. 23
delta=(X(N)-X(1))/Nn;
X1=X(1):delta:X(N);
for i=1:Nn+1
S=0;
for j=1:N1
r=a(N1-j+1)*X1(i)^(j-1);
S=S+r;
end
P(i)=S;
end
%Побудова графіка
plot(X1,P,'m-+',X,Y,'kо')
Підпрограма fun_Lagran
function [a,d]=fun_Lagran(X,Y)
%==============================================
%Вхід: X - вектор абсцис
% Y - вектор ординат
%Вихід: а - матр. коефіцієнтів інтерпол.
% полінома Лагранжа
% d - матр. коефіцієнтів полінома Лагранжа
n=length(X);%Кількість вузлів інтерпол.
N=n-1;
a=zeros(n,n);
%==============================================
%Формування коефіцієнтів полінома Лагранжа
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
d(k,:)=V;
end
%===============================================
%Визначення коефіцієнтів інтерполяційного
%полінома Лагранжа
a=Y*d;
Для запуску програми необхідно у 13 і 14 лінійках програми занести значення x у
k
такій формі: x : x x : , де x , x - перший і останній вузол інтерполяції; - крок
x
0 N 0 N
приросту аргументу x (у нашому випадку - X=0:0.2:1;), та сформувати значення Y як
вектор з компонентами y , k 1, N (у нашому випадку - Y=[1 0.86 0.84 0.91 1.09
k
1.37];)
Результатом роботи програми є вектор коефіцієнтів полінома Лагранжа a з
компонентами a , k 1, N . Знаючи коефіцієнти полінома, можна записати поліном P ( )x у
k N
такому вигляді:
2
P x a a x a x a x N 1 ,
N N N 1 N 2 1
де N - кількість коефіцієнтів полінома P x .
N
22