拉格朗日插值matlab程序
拉格朗日插值的调用函数
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
L=0.0;
for j=1:n
T=1.0;
for k=1:n
if k~=j
T=T*(z-x0(k))/(x0(j)-x0(k));
end
end
L=T*y0(j)+L;
end
y(i)=L;
end
四个图在一起:
x=[-1:0.05:1];
y=1./(1+25*x.^2);
x0=[-1:0.4:1];
y0=1./(1+25*x0.^2);
y1=lagrange(x0,y0,x);
x0=[-1:0.2:1];
y0=1./(1+25*x0.^2);
y2=lagrange(x0,y0,x);
x0=[-1:0.1:1];
y0=1./(1+25*x0.^2);
y3= lagrange(x0,y0,x);
plot(x,y,'-r')
hold on
plot(x,y1,'-b',x,y2,'-r',x,y3,'-r')
l5和fx在一起:
x=[-1:0.05:1];
y=1./(1+25*x.^2);
x0=[-1:0.4:1];
y0=1./(1+25*x0.^2); y1=lagrange(x0,y0,x); plot(x,y,'-r')
hold on
plot(x,y1,'-b')
l10和fx在一起:
x=[-1:0.05:1];
y=1./(1+25*x.^2);
x0=[-1:0.2:1];
y0=1./(1+25*x0.^2); y2= lagrange(x0,y0,x); plot(x,y,'-r')
hold on
plot(x,y2,'-b')
l20和fx在一起:
x=[-1:0.05:1];
y=1./(1+25*x.^2);
x0=[-1:0.1:1];
y0=1./(1+25*x0.^2); y3= lagrange(x0,y0,x); plot(x,y,'-r')
hold on
plot(x,y3,'-b')