matlab 拉格朗日插值函数m文件为function [Ln] = Lagrange(px,py)n=length(x);L=zeros(1,n); %一行n列for i=1:na=1;p=1;for k=1:nif =ia=a*(x(i)-x(k)); %计算分母p=conv(p,[1-x(k)]); %计算分子多项式endendL=L+(y(i)/a)*p;end主程序:x
2016-08-08
matlab 拉格朗日插值函数
m文件为
function [Ln] = Lagrange(px,py)
n=length(x);L=zeros(1,n); %一行n列
for i=1:n
a=1;p=1;
for k=1:n
if =i
a=a*(x(i)-x(k)); %计算分母
p=conv(p,[1-x(k)]); %计算分子多项式
end
end
L=L+(y(i)/a)*p;
end
主程序:
x = -5 :0.01 :5;
y = sin(x);
plot(x,y,'r:') % 绘制准确函数图像
hold on
px = -5 :1 :5; % 插值点
py = sin(px); % 插值点上的函数值
plot(px,py,'m+') % 绘制插值点
[Ln] = Lagrange(px,py); % 根据插值点及其值计算 Lagrange 插值多项式
Lx = -5:0.01:5; % 绘图点
Ly = polyval(Ln,Lx); % 计算绘图点上的多项式函数值
plot(Lx,Ly,'b-.') % 绘制 多项式 图像legend('sin(x)','point','Ln','Location','NorthEast')
hold off
错误处:
Undefined function or variable 'x'.
Error in ==> Lagrange at 2
n=length(x);L=zeros(1,n); %一行n列