注意:采用的是 Lagrange 插值的第二种情况
实验二 Lagrange 插值
【实验目的】
1.了解插值法及 Lagrange 插值的基本概念.
2.学习、掌握 MATLAB 软件有关的命令。。
【实验原理】
插值法定义:设函数 y=f(x)在区间[a,b]上有定义,且已知 f(x)在[a,b]上 n+1 个互
异点
a x0<x1<…<xn b
处的值 yi=f(xi),i=0,1,2,…,n.若存在一个简单函数 P(x),使 P(xi)=yi (i=0,1,2,…,n)
(2.1)
成立,则称 P(x)为 f(x)的插值函数,f(x)称为被插函数,点 xi(i=0,1,2,…,n)称为
插值节点,[a,b]称为插值区间,(2.1)式为插值条件。求插值函数的方法为插值
法。
利用 n 次插值基函数可以将满足条件 Ln(xn)=yk(k=0,1,2,…,n)的插值多项式
Ln(x)表示为
yk (2.2)
称 Ln(x)为拉格朗日插值多项式
【实验内容】 在区间[-5,5]上取截点 n=11,等距间隔 h=1 的节点为插值节点,
对函数 f(x)=1/(1+x2)进行拉格朗日插值,并绘图。
下面的程序基于公式(2.2),且在 xi 点,Ln(xi)= yk
相应的 Matlab 代码为
function yi=lagrange(x,y,xi)
%Lagrange 插值
%x,y 为已知节点及其函数值向量
%xi 为插值点(可以是多个),yi 为插值
n=length(x);m=length(xi);%length 是 x 的长度,
for i=1:m
z=xi(i);s=0;
for k=1:n%for 循环语句
p=1.0;
for j=1:n
if j~=k
p=p*(z-x(j))/(x(k)-x(j));
end
end
s=p*y(k)+s;
end
yi(i)=s;
end
下面用 MATLAB 运行程序得到以下结果,如下图: