当前位置:文档之家› 拉格朗日插值实验报告

拉格朗日插值实验报告

实验名称:
实验一拉格朗日插值
1引言
我们在生产生活中常常会遇到这样的问题:
某个实际问题中,函数f(x)在区间[a,b ]上存在
且连续,但却很难找到其表达式,只能通过实验和观测得到有限点上的函数表。

显然,根据 这些点的函数值来求其它点的函数值是非常困难的。

有些情况虽然可以写出表达式,但结构 复杂,使用不方便。

所以我们总是希望根据已有的数据点(或函数表)来构造某个简单函数 P(x)作为f(x)的近似值。

插值法是解决此类问题的一种比较古老的、
但却很常用的方法。

它不
仅直接广泛地应用于生产实际和科学研究中,而且也是进一步学习数值计算方法的基础。

2实验目的和要求
运用Matlab 编写三个.m 文件,定义三种插值函数,要求一次性输入整函数表,并利用 计算机选择在插值计算中所需的节点。

分别通过分段线性插值、分段二次插值和全区间上拉 格朗日插值计算
f(0.15),f(0.31),f(0.47)的近似值。

已知函数表如下:
3算法原理与流程图
(1)原理
设函数y=在插值区间[a,b ]上连续,且在n+1个不同的插值节点a^X o ,x 1,…,x wb 上分别取 值
y o ,y 1,…,y n 。

目的是要在一个性质优良、便于计算的插值函数类 ①中,求一简单函数P(x), 满足插值条
件P(X i )=y i (i=0,1,…”n)而在其他点x I 上,作为f(x)近似值。

求插值函数P(x)的 方法称为插值法。

在本实验中,采用拉格朗日插值法。

①分段低次插值
当给定了 n+1个点X 0VXK …<x n 上的函数值y 0,y 1,…,y 后,若要计算x 处函数值f(x)的 近似值,可先选取两个节点X/与x i 使x € [x i-1,x i ],然后在小区间[x i-1,x i ]上作线性插值,即得
这种分段低次插值叫分段线性插值,又称折线插值。

类似地,我们可以选取距离X 最近的三个节点X i-1,X i 与X i+1,然后进行二次插值,即得
这种分段低次插值叫分段二次插值,又称分段抛物线插值。

②全区间上拉格朗日插值
对节点X i (i=0,1,…中)任一点X k (0 w k w,n 作一 n 次多项式l k (x),使它在该点上的取值为
f(x) P(x)
y i 1
x x i
X i 1 X i
x X i 1
Y i — X i X i 1
f(x)
P 2(X )
i 1
i 1
y k
k i 1 j i 1
j k
X X j
X k X j
1,
在其余点x i (i=0,1, ---Ikk+I,…,上取值为零。

对应于每一节
点x k (k=0,1,…,n)都能写出 一个满足此条件的多项式,这样写出了 n+1个多项式l o (x),l i (x),…n (x),其中
l k (x )
A k (x
x °)( X Xj 卅(x X k 1)( X X ki )卅?(x x n
);
由条件l k (X k )
1可得
于是我们可以得出如下的拉格朗日n 次插值多项式(对于全区间上的插值,n 取函数表
的长度)
4程序代码及注释
1、分段线性插值
%分段线性插值
fun cti on y=piece_li near(x0,y0,x) %x0 , y0为已知点,x 为待求点 n=le ngth(x0);p=le ngth(y0);m=le ngth(x);
(X
X °) |(x
x k 1)( x
x
k 1
)
1 l (x X
n
)
(x
k
x 0
)
|( (X k
x
k 1
)( x
k
x
k 1
)
1 I (X k
X
n
)
n
y k
k 0
y 。

1")
ygx )卅 y 」n (x )
(X k
X o ) I (X k
X k 1)( X k
X n )
P n (X )
—►
i F
P — 0.5*(ir tr 1J1|
分段二次插值 —

S-S+y c fkl fc p Tf~ <t+/
全区间拉格朗日插值
(2)流程图
分段线性插值
<农
I KI
/cfi-2 乂\
S-0
p-p%、區』in I i !
c<p+7 X
2、分段二次插值
%输出插值结果与所需节点
end
end
end
3、拉格朗日全区间插值
5算例分析
1、测试示例
>> x=[1 2 3 4];
>> y=[2 3 4];
>> y2=lagra nge(x,y,xO)
Error! Please in put aga in!
>> x=[1 2 3 4];
>> y=[2 3 4 5];
>> x0=[0.5 5.5];
>> y2=lagra nge(x,y,x0)
Error!x(1) is out of ran ge!
>> x=[1 2 3 4];
>> y=[2 3 4 5];
>> x0=[1.5 5.5];
>> y2=lagra nge(x,y,x0) y(1)=2.50000
Error!x(2) is out of ran ge!
y2 =
2.500000000000000
2、首先输入函数变及待求点
注:保证在matlab工作目录中有三个.m文件
3、分段线性插值
y0=piece_li near(x,y,x0)
y(1)=0.394039
x1=0.100 y1=0.39695,x2=0.195 y2=0.39142
y(2)=0.380067
x1=0.300 y1=0.38138,x2=0.401 y2=0.36812
y(3)=0.356927
x1=0.401 y1=0.36812,x2=0.500 y2=0.35206 y0 =
0.394039473684211 0.380067128712871 0.356926666666667 4、分段二次插值
>> y仁piece_square(x,y,xO) y(1)=0.394460
x仁0.100 y仁0.39695 x2=0.195 y2=0.39142 x3=0.300 y3=0.38138
y(2)=0.380225
x仁0.195 y仁0.39142 x2=0.300 y2=0.38138 x3=0.401 y3=0.36812
y(3)=0.357247
x仁0.300 y仁0.38138 x2=0.401 y2=0.36812 x3=0.500 y3=0.35206 y1 =
0.394460319548872 0.380224691595373 0.357246844884488 5、全区间拉格朗日插值
6讨论与结论
1
2、程序优化
由分段线性插值和分段二次插值的原理,x取值在函数表围时,插值结果有意义,而当x
取值在函数表围以外,利用分段线性插值公式仍可以进行运算并得到一个值,但其结果不准确;分段二次插值则无法找到三个合适的点以求插值,不予以输出结果;若输入的函数表x 与y的长度不相等,则无法插值。

所以加入以下判断以提高插值的准确性
3、作图比较
上图为三种方法的插值曲线,其中x取0到0.5,步长为0.001,由图可得,三种曲线非常接近,这说明我们用拉格朗日插值计算所给点函数值的近似值时,引起的误差还是比较小的。

参考文献
[1] 易大义,云宝,有法•计算方法(第2版),大学.p.29-53.
[2] 琨高思超毕靖编著MATLAB2010从入门到精通电子工业。

相关主题