0

У меня есть кусочно-линейная функцияинтерполяционный полином Лагранжа

picture

Я пытаюсь построить многочлен Лагранжа для 2, 6, 14 хостов. Но для моих хозяев, моя первоначальная функция стала неверная:

Я думаю, что мой полином поворачивает направо, но у меня есть проблемы рассчитывать и строить меру неточностей

a = 1; 
b = -1; 
c = -1; 
d = 1; 
x = -1:0.33:1; 
y = []; 
for i = 1 : length(x) 
if (x(i) <= c/2) 
    y(i) = x(i)+ 1; 
elseif(x(i) >= d/2) 
    y(i) = x(i) - 1; 
else 
    y(i) = -x(i); 
end 
end 
plot(x, y); 
hold on 
nx = -1:0.01:1; 
ny=lagrange(x,y,nx); 
plot(x,y,'bo'); 
plot(nx,ny,'r'); 

function ny=lagrange(x,y,nx) 
N = length(x); 
ny=zeros(size(nx)); 
for k=1:N 
    t=ones(size(nx)); 
    for j=[1:k-1, k+1:N] 
     t=t.*(nx-x(j))/(x(k)-x(j)); 
    end 
    ny = ny + y(k)*t; 
end 
+1

затем закройте вопрос –

ответ

0

Ну, я сделал несколько ошибок , Прежде всего, я использовал неправильные параметры для работы. Кроме того, я неправильно вычислил значения исходной функции. «Оригинальная» функция вычисляет значения исходного графа. Функция «lagrange» вычисляет значения многочлена.

x = -1:0.01:1; 
y = []; 
y = original(x); 
subplot (2, 1, 1); 
plot(x, y); 
xlabel('x'); 
ylabel('y'); 
hold on; 
grid on; 
%hosts 
xx = -1:0.5:1; 
%values of original func in hosts 
yy = original(xx); 
plot(xx,yy,'o'); 
nx = -1:0.01:1; 
ny=lagrange(xx,yy,nx);  
plot(nx,ny,'r'); 
subplot (2, 1, 2); 
%measure of inaccuracy 
plot(x,ny-y, ''); 
grid on; 

 Смежные вопросы

  • Нет связанных вопросов^_^