Интерполяция. Метод Лагранжа 3-его порядка

Страницы работы

Содержание работы

Балтийский государственный технический университет «Военмех»

им. Д.Ф. Устинова

Лабораторная работа №2

Интерполяция

Выполнил: Фрушенков А. Н

Проверила: Овчинникова О.С

Санкт-Петербург

2010

% интерполяция

% написал студент группы М-191 Фрушенков А.Н

xl=0; xr=5; n=100;

x=xl:(xr-xl)/(n-1):xr;

y=lab2(x);

figure(1)

plot(x, y)

xp=input('введите x')

while xp<xl | xp>xr

xp=input('введите x')

end

ind=1;

while xp>x(ind)

ind=ind+1;

end

% Лагранж 1

yl1=y(ind-1)*(xp-x(ind))/(x(ind-1)-x(ind))+y(ind)*(xp-x(ind-1))/(x(ind)-x(ind-1));

yp=lab2(xp); epsl1=abs((yp-yl1)/yp)*100

% Лагранж 2

yl2=y(ind-1)*(xp-x(ind))*(xp-x(ind+1))/((x(ind-1)-x(ind))*(x(ind-1)-x(ind+1)))...

+y(ind)*(xp-x(ind-1))*(xp-x(ind+1))/((x(ind)-x(ind-1))*(x(ind)-x(ind+1)...

))+y(ind+1)*(xp-x(ind-1))*(xp-x(ind))/((x(ind+1)-x(ind-1)))*(x(ind+1)-x(ind));

epsl2=abs((yp-yl2)/yp)*100;

% Лагранж 3

yl3=y(ind-1)*(xp-x(ind))*(xp-x(ind+1))*(xp-x(ind+2))/((x(ind-1)-x(ind))*(x(ind-1)...

-x(ind+1))*(x(ind-1)-x(ind+2)))+y(ind)*(xp-x(ind-1))*(xp-x(ind+1))*(xp-x(ind+2))...

/((x(ind)-x(ind-1))*(x(ind)-x(ind+1))*(x(ind)-x(ind+2)))+y(ind+1)...

*(xp-x(ind-1))*(xp-x(ind))*(xp-x(ind+2))...

/((x(ind+1)-x(ind-1))*(x(ind+1)-x(ind))*(x(ind+1)-x(ind+2)))+y(ind+2)...

*(xp-x(ind-1))*(xp-x(ind))*(xp-x(ind+1))...

/((x(ind+2)-x(ind-1))*(x(ind+2)-x(ind))*(x(ind+2)-x(ind+1)));

epsl3=abs((yp-yl3)/yp)*100

M(n)=0

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

M(k)=K(k)*M(k+1)+L(k);

end

h=x(ind)-x(ind-1);

yS=(M(ind-1)*(x(ind)-xp)^3)/(h*6)+(M(ind)*(x(ind-1)-xp)^3)/(h*6)+((y(ind-1)-M(ind-1)*h^2/6)...

*(x(ind)-xp))/h+(y(ind)-M(ind)*h^2/6)*((xp-x(ind-1))/h);

epsS=abs((yp-yS)/yp)*100;

disp(['для х=' num2str(xp) 'функцция У=' num2str(yp)])

disp(['Лагранж 1: У=' num2str(yl1) 'погрешность=' num2str(epsl1)])

disp(['сплайн: У='    num2str(yS)  'погрешность=' num2str(epsS)])

disp(['Лагранж 2: У=' num2str(yl2) 'погрешность=' num2str(epsl2)])

disp(['Лагранж 3: У=' num2str(yl3) 'погрешность=' num2str(epsl3)])

function res=lab2(x)

res=x.*sin(10*x);

return

для х=0.2функцция У=0.18186

Лагранж 1: У=0.18073 погрешность=0.61915

сплайн: У=0.17933 погрешность=0.3892

Лагранж 2: У=0.18481погрешность=0.6219

Лагранж 3: У=0.18195 погрешность=0.049333

Метод Лагранжа 3-его порядка дает самый точный результат, но очень сложен в реализации. Метод сплайна, не точен, но очень прост в реализации.

Похожие материалы

Информация о работе