Я должен решить эту проблему для некоторой домашней работы, и я не уверен, почему моя функция Лагранжа выдает значения, отличные от polyfit.
function [p] = LaGr(x, k, xk)
p = 1;
N = length(xk);
n = N - 1;
for j = 1:N
if(j ~= k)
p = p * (x - xk(j)) / (xk(k) - xk(j));
end
end
end
(https://imgur.com/a/L9GKAMh) (https://imgur.com/a/j44Nsbd)) Извините, я не могу опубликовать изображения, потому что моя репутация ниже 10.
Функция и значения x и yэто работает на
clear all;
f = @(x) 1 ./ (1 + 14 * x.^2);
xdata = linspace(-1,1,9);
x = linspace(-1,1,100);
ydata = f(xdata);
y = f(x);
for j = 1:length(x)
K = 5;
y(j) = LaGr(x(j), K, xdata);
end
hold on;
plot(x, y, 'r', 'LineWidth',2);
plot(x, f(x), '-', 'LineWidth', 2);
plot(xdata, ydata, '*k');
Я знаю, что это частично связано с первыми значениями в x, xdata, y и p, но я не уверен, почему. Просто polyfit более точенили что-то не так с моей функцией Лагранжа? Я бы опубликовал значения x, y, xdata и ydata, но в x и y есть 100 значений.