%lagrange方法主函数
%同时计算多点插值
%已有点x,y
x=[-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8];
y=[1/(1+25*(-1)^2),1/(1+25*(-0.8)^2),1/(1+25*(-0.6)^2),1/(1+25*(-0.4)^2),1/(1+25*(-0.2)^2),1/(1+25*(0^2)),1/(1+25*(0.2^2)),1/(1+25*(0.4^2)),1/(1+25*(0.6^2)),1/(1+25*(0.8^2))];
yreal=[1/(1+25*(-1)^2),1/(1+25*(-0.8)^2),1/(1+25*(-0.6)^2),1/(1+25*(-0.4)^2),1/(1+25*(-0.2)^2),1/(1+25*(0^2)),1/(1+25*(0.2^2)),1/(1+25*(0.4^2)),1/(1+25*(0.6^2)),1/(1+25*(0.8^2))];
%需要插值点
t=[-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1];
disp('x')
du=[-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1]
%插值计算结果
yt=lag(x,y,t)
%函数值
disp('函数值')
yreal=[1/(1+25*(-1)^2),1/(1+25*(-0.8)^2),1/(1+25*(-0.6)^2),1/(1+25*(-0.4)^2),1/(1+25*(-0.2)^2),1/(1+25*(0^2)),1/(1+25*(0.2^2)),1/(1+25*(0.4^2)),1/(1+25*(0.6^2)),1/(1+25*(0.8^2))]'
disp('插值与函数误差')
dy=yt-yreal
%给出插值多项式
yt=lag(x,y);
%画出多项式图形
ezplot(yt,[-1,1])
hold on
%画出函数图形
ezplot('yrea1',[-1,1]);
hold off
评论3