![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
X,Y – табличные значения; x – точка интерполяции; n – количество узловых точек.
function res = Nuton1(x,X,Y,n)
res=Y(1);
% определение шага таблицы
H=X(2)-X(1);
for i=1:n
% построение матрицы конечных разностей
konrazn=diff(Y,i);
konrazn=konrazn(1);
% вычисление факториала
fact=prod(1:i);
% вычисление (x-x0)(x-x1)...(x-xn-1)
Mult=1;
for j=1:i
Mult=Mult*(x-X(j));
end;
res=res+(konrazn/(fact * H^i))*Mult;
end;
res
return
Функция EvalNuton.m вычисляет значения указанного полинома в заданном множестве точек:
function yy = EvalNuton(X,Y,xx,formNumber)
n=length(X)-1;
if (formNumber==1)
for i=1:length(xx);
yy(i)=Nuton1(xx(i),X,Y,n);
end;
else
for i=1:length(xx);
yy(i)=Nuton2(xx(i),X,Y,n+1);
end;
end;
return
Пример вызова функций и построения графика:
>> x = [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
>> y = [0.99602 1.07670 1.15402 1.22777 1.29776 1.36386 1.42592 1.48384 1.53751 1.58688]
>> EvalNuton(x,y,0.04,1)
res =
1.0287
>> EvalNuton(x,y,0.89,2)
res =
1.5821
>> xx=linspace(0,1,1000)
>> yy=EvalNuton(x,y,xx,1)
>> figure('Color','w')
>> hold on
>> plot(xx,yy,'r')
>> plot(x,y,'bo')
Дата публикования: 2015-04-07; Прочитано: 285 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!