Лабораторная работа №2
Функция ,реализующая подсчет при помощи полинома Лежандра:
Значение в точке t по значениям функции в узлах (x,f)
t - число, x, f - вектора одинаковой размерности
function p=lagr(t,x,f)
p=0;
for i=1:length(x)
W=t-x;
W(i)=1;
U=prod(W);
W=x(i)-x;
W(i)=1;
U=U/prod(W);
p=p+f(i)*U;
end
Результаты подсчета значения в точке 1.7
>> x = [-2:1:2]
x =
-2 -1 0 1 2
>> f=sin(x)
f =
-0.9093 -0.8415 0 0.8415 0.9093
>> lagr(1.7,x,f)
ans =
1.0162
>> sin(1.7)
ans =
0.9917
Использавали полином 4 порядка.
Ошибка интерполяции:
>> 1.0612 - 0.9917
ans =
0.0695
>>
Теоретическая оценка дает значение 0.0049
Пункт 3.
Текст программы для подсчета массива значений :
function [z] = lag (t,x,f)
for i=1:length(t)
z(i)= lagr(t(i),x,f);
end
Были получены два графика :по полиному Лежандра и по значениям ф-ии sin.Значения t выбирались в пределах от –2 до 2 с шагом 0.1.Полином получен по точкам от –2 до 2 с шагом 1.
Были получены два графика :по полиному Лежандра и по значениям ф-ии sin.Значения t выбирались в пределах от –2 до 2 с шагом 0.1.Полином получен по точкам x= -2, -1.1756, 0, 1.1756, 2.Ниже приведен график ошибки интерполяции: