我必须做一些作业才能解决此问题,而且我不确定为什么我的Lagrange函数输出的值与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更准确还是我的Lagrange函数有问题吗?我会发布x,y,xdata和ydata值,但x和y中有100个值。