Проблема с интерполяцией Лагранжа в Matlab - PullRequest
0 голосов
/ 09 мая 2018

У меня проблема с завершением этой функции Лагранжа, и я не уверен, в чем проблема.

Я получаю ошибку «Индекс превышает размеры матрицы».Я предполагаю, что это потому, что я не перемещаюсь через массив правильно.Я попробовал комбинацию вещей, но, похоже, продолжаю возвращаться к этой ошибке.

function y = lagrange(X, Y, x)
n = length(X);
if n ~= length(Y)
 error('X and Y must have the same length.');
end
y = zeros(size(x)); 
for i = 1:n 
  L = ones(size(x)); 
    for j = [1:i-1 i+1:n] 
      if (i~=j)
       L(1:i-1, i+1:n) = L(1:i-1, i+1:n).*(x-X(j))/(X(i)-X(j));
      end
    end
  y = y+Y(i)*L(1:i-1);
end

1 Ответ

0 голосов
/ 09 мая 2018

Я думаю, что функция ниже - это то, что вам нужно.

function y = lagrangian(X, Y, x)
if length(X) ~= length(Y); error('X and Y must have the same length.'); end
y = zeros(size(x));
for i = 1:length(X)
   L = ones(size(x));
   for j = [1:i-1 i+1:length(X)]
       L = L.*(x-X(j))/(X(i)-X(j));
   end
   y = y+Y(i)*L;
end
...