函数的数值逼近-插值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称计算方法
实验项目名称函数的数值逼近-插值
实验成绩指导老师(签名)日期2011-9-16
一. 实验目的和要求
1.掌握用Matlab计算Lagrange、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。
2.通过实例学习如何用插值方法解决实际问题。
二. 实验内容和原理
1)编程题2-1要求写出Matlab源程序(m文件),并对每一行语句加上适当的注释语句;2)分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab源程序、运行结果和结果的解释、算法的分析等写在实验报告上。
2-1分析应用题
用
1
2
y x
=在0,1,4,9,16
x=产生5个节点
15
,,
P P。用以下五种不同的节点构造Lagrange
插值公式来计算5
x=处的插值,与精确值比较并进行分析。function y=lagr(x0,y0,x)
n=length(x0);
m=length(x);
L=zeros(1,n);
y=zeros(1,m);
for k=1:m
s=0;
for i=1:n
L(i)=1;
for j=1:n
if j~=i
L(i)=L(i)*(x(k)-x0(j))/(x0(i)-x0(j));
end
end
s=s+y0(i)*L(i);
end
y(k)=s;
end
1) 用
34
,P P 构造;
>> x0=[4,9]; >> y0=[2,3]; >> lagr(x0,y0,5) ans =
2.2000
2) 用234,,P P P 构造;
>> x0=[1,4,9]; >> y0=[1,2,3]; >> lagr(x0,y0,5) ans =
2.2667
3) 用2345,,,P P P P 构造;
>> x0=[1,4,9,16]; >> y0=[1,2,3,4]; >> lagr(x0,y0,5) ans =
2.2540
4) 用1245,,,P P P P 构造;
>> x0=[0,1,9,16]; >> y0=[0,1,3,4]; >> lagr(x0,y0,5) ans =
2.9524
5) 用全部插值节点12345,,,,P P P P P 构造。
>> x0=[0,1,4,9,16]; >> y0=[0,1,2,3,4];
>> lagr(x0,y0,5) ans =
2.0794
从结果看出,用34,P P 构造时误差最小,而用1245,,,P P P P 构造时并没有更精确,误差还更大,所以不是用的构造点越多越准确。
2-2 分析应用题
意大利柑橘的产量变化如下表。使用3次样条插值来估计1962年、1977年和1992年的产量。将这些结果与相对应的实际值进行比较,并说明计算的精度。实际值分别为12380,27403和32059(5
10⨯kg)。再利用Lagrange 插值多项式重新计算。
年份 1965 1970 1980 1985 1990 1991 产量(510⨯kg) 17769
24001
25961
34336
29036
33417
>> x0=[1965,1970,1980,1985,1990,1991];
>> y0=[17769,24001,25961,34336,29036,33417]; >> y1=spline(x0,y0,1962)
y1 =
5.1461e+003
>> y2=spline(x0,y0,1977)
y2 =
2.2642e+004
>> y3=spline(x0,y0,1992)
y3 =
4.1894e+004
利用Lagrange插值多项式计算:
>> x0=[1965,1970,1980,1985,1990,1991];
>> y0=[17769,24001,25961,34336,29036,33417]; >> y1=lagr(x0,y0,1962)
y1 =
-7.7765e+004
>> y2=lagr(x0,y0,1977) y2 =
1.5405e+004
>> y3=lagr(x0,y0,1992) y3 =
4.3127e+004
2-3 分析应用题
在区间[-1,1]上,在21个平均分布的节点上对函数()sin 2f x x π=进行估计。计算Lagrange 插值多项式和3次样条,并在给定的区间上将两个函数的曲线与f 进行比较。使用干扰数
据14
()(1)10i i f x +-=-来重复计算。注意观察,对于小扰动,Lagrange 插值多项式与3次样
条相比,分析哪个更敏感。
>> x=linspace(-1,1,21);
>> y=sin(2*pi*x)
y =
Columns 1 through 10
0.0000 0.5878 0.9511 0.9511 0.5878 -0.0000 -0.5878 -0.9511 -0.9511 -0.5878
Columns 11 through 20
0 0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878 -0.9511 -0.9511 -0.5878
Column 21
-0.0000
>> x0=linspace(-1,1,11);
>> y0=sin(2*pi*x0);
>> y1=lagr(x0,y0,x)
y1 =
Columns 1 through 10
0.0000 0.6329 0.9511 0.9433 0.5878 0.0024 -0.5878 -0.9522 -0.9511 -0.5869
Columns 11 through 20
0 0.5869 0.9511 0.9522 0.5878 -0.0024 -0.5878 -0.9433 -0.9511 -0.6329
Column 21
-0.0000
>> y2=interp1(x0,y0,x,'spline')
y2 =