帮忙编个matlab程序!拉格朗日插值的 runge现象画图!

2025-12-18 10:30:15
推荐回答(2个)
回答1:

function [x0,y0] = Lagrange_2(x,y,x0)
%输入: x, y 插值节点(点点互异,否则修改为参数形式)
% x0待求点
%输出:x0,y0,插值结果

n = length(x); % 插值节点个数,x,y应该要一致
m = length(x0); % 待求点个数
y0 = zeros(1,m);% 为输出分配空间

for j = 1:m

for i=1:n
% Lagrange插值公式:li(x) = yi*prod(x-xj)/prod(xi-xj),i~=j;
xj = x;
xj(i) = [];
y0(j) = y0(j) + y(i)*prod( x0(j) -xj ) / prod( x(i) - xj );

end

end

%%%%%%%%%%%%%%
调用方法:
x = [-5:5];
y = 1./(1+x.^2);
x0 = [-5:0.01:5]; %根据自己电脑性能选取合适步长
[x0,y0] = Lagrange_2(x,y,x0);
hold on;
plot(x0,1./(1+x0.^2),'r');%原函数y=1/(1+x^2)图像
plot(x0,y0);%插值函数图像

回答2:

dsfdsffs