function[y0,N]=Lagrange_eval(X,Y,x0)
%X,Y是已知的插值点坐标点
%x0是插值点
%y0是Lagrange多项式在x0处的值
%N是Lagrange插值函数的权系数m=length(X);
N=zeros(m,1);
y0=0;
for i=1:m
N(i)=1;
for j=1:m
if j~=i
N(i)=N(i)*(x0-X(j))/(X(i)-X(j));
end
end
y0=y0+Y(i)*N(i);
end
X=[0.5,0.6];Y=[-0.693147,-0.510826];x0=0.54;
[y0,N]=Lagrange_eval(X,Y,x0)
y0 =
-0.6202
N =
0.6000
0.4000
X=[0.4,0.5,0.6];Y=[-0.916291,-0.693147,-0.510826];x0=0.54;
[y0,N]=Lagrange_eval(X,Y,x0)
y0 =
-0.6153
N =
-0.1200
0.8400
0.2800
X=[0.4,0.5,0.6,0.7];Y=[-0.916291,-0.693147,-0.510826,-0.356675];x0=0.54;
[y0,N]=Lagrange_eval(X,Y,x0)
y0 =
-0.6160
N =
-0.0640
0.6720
0.4480
-0.0560
实验1 Lagrange插值
【实验目的】
计算Lagrange插值多项式在x=x0处的值
【实验内容】
1.了解MATLAB语言的用法
2. 用线性插值、二次插值、三次插值计算ln0.54的近似值。
【实验所使用的仪器设备与软件平台】
计算机,MATLAB R2018a
【实验方法与步骤】
主程序
function[y0,N]=Lagrange_eval(X,Y,x0)
%X,Y是已知的插值点坐标点
%x0是插值点
%y0是Lagrange多项式在x0处的值
%N是Lagrange插值函数的权系数m=length(X);
N=zeros(m,1);
y0=0;
for i=1:m
N(i)=1;
for j=1:m
if j~=i
N(i)=N(i)*(x0-X(j))/(X(i)-X(j));
end
end
y0=y0+Y(i)*N(i);
end
【结果分析与讨论】