函数的数值逼近插值.docx
- 文档编号:7769660
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:17
- 大小:440.94KB
函数的数值逼近插值.docx
《函数的数值逼近插值.docx》由会员分享,可在线阅读,更多相关《函数的数值逼近插值.docx(17页珍藏版)》请在冰豆网上搜索。
函数的数值逼近插值
课程名称计算方法
实验项目名称函数的数值逼近-插值
实验成绩指导老师(签名)日期2011-9-16
一.实验目的和要求
1.掌握用Matlab计算Lagrange、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。
2.通过实例学习如何用插值方法解决实际问题。
二.实验内容和原理
1)编程题2-1要求写出Matlab源程序(m文件),并对每一行语句加上适当的注释语句;
2)分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab源程序、运行结果和结果的解释、算法的分析等写在实验报告上。
2-1分析应用题
用
在
产生5个节点
。
用以下五种不同的节点构造Lagrange插值公式来计算
处的插值,与精确值比较并进行分析。
functiony=lagr(x0,y0,x)
n=length(x0);
m=length(x);
L=zeros(1,n);
y=zeros(1,m);
fork=1:
m
s=0;
fori=1:
n
L(i)=1;
forj=1:
n
ifj~=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)用
构造;
>>x0=[4,9];
>>y0=[2,3];
>>lagr(x0,y0,5)
ans=
2.2000
2)用
构造;
>>x0=[1,4,9];
>>y0=[1,2,3];
>>lagr(x0,y0,5)
ans=
2.2667
3)用
构造;
>>x0=[1,4,9,16];
>>y0=[1,2,3,4];
>>lagr(x0,y0,5)
ans=
2.2540
4)用
构造;
>>x0=[0,1,9,16];
>>y0=[0,1,3,4];
>>lagr(x0,y0,5)
ans=
2.9524
5)用全部插值节点
构造。
>>x0=[0,1,4,9,16];
>>y0=[0,1,2,3,4];
>>lagr(x0,y0,5)
ans=
2.0794
从结果看出,用
构造时误差最小,而用
构造时并没有更精确,误差还更大,所以不是用的构造点越多越准确。
2-2分析应用题
意大利柑橘的产量变化如下表。
使用3次样条插值来估计1962年、1977年和1992年的产量。
将这些结果与相对应的实际值进行比较,并说明计算的精度。
实际值分别为12380,27403和32059(
kg)。
再利用Lagrange插值多项式重新计算。
年份
1965
1970
1980
1985
1990
1991
产量(
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个平均分布的节点上对函数
进行估计。
计算Lagrange插值多项式和3次样条,并在给定的区间上将两个函数的曲线与
进行比较。
使用干扰数据
来重复计算。
注意观察,对于小扰动,Lagrange插值多项式与3次样条相比,分析哪个更敏感。
>>x=linspace(-1,1,21);
>>y=sin(2*pi*x)
y=
Columns1through10
0.00000.58780.95110.95110.5878-0.0000-0.5878-0.9511-0.9511-0.5878
Columns11through20
00.58780.95110.95110.58780.0000-0.5878-0.9511-0.9511-0.5878
Column21
-0.0000
>>x0=linspace(-1,1,11);
>>y0=sin(2*pi*x0);
>>y1=lagr(x0,y0,x)
y1=
Columns1through10
0.00000.63290.95110.94330.58780.0024-0.5878-0.9522-0.9511-0.5869
Columns11through20
00.58690.95110.95220.5878-0.0024-0.5878-0.9433-0.9511-0.6329
Column21
-0.0000
>>y2=interp1(x0,y0,x,'spline')
y2=
Columns1through10
0.00000.64940.95110.92410.58780.0048-0.5878-0.9434-0.9511-0.5818
Columns11through20
00.58180.95110.94340.5878-0.0048-0.5878-0.9241-0.9511-0.6494
Column21
-0.0000
可以看出3次样条更敏感。
2-4分析应用题
已知函数表如下:
0.7
0.9
1.1
1.3
1.5
1.7
0.6442
0.7833
0.8912
0.9636
0.9975
0.9917
计算
的近似值。
2-5分析应用题
利用Matlab相关函数分析用下列三种不同的插值逼近著名的Runge函数
1)Lagrange插值;
2)分段线性插值;
3)三次样条插值。
其中取插值节点为区间
上的10等分点,同时列出100等分点上的三种插值结果,比较分析,同时对这三种插值在100等分点上进行作图比较。
>>x=linspace(-1,1,101);
>>y=1./(1+25*x.^2);
>>x0=linspace(-1,1,11);
>>y0=1./(1+25*x0.^2);
>>y1=lagr(x0,y0,x);
>>y2=interp1(x0,y0,x);
>>y3=interp1(x0,y0,x,'spline');
>>plot(x,y,'k',x,y1,'g',x,y2,'b',x,y3,'m')
2-6
分析应用题
运行程序
figure
set(gcf,'menubar','none')
axes('position',[0011])
[x,y]=ginput
然后将你的手直接放在弹出窗口中,用鼠
标点击选取需要的插值点,最后回车得到所有插值点的坐标。
用三次样条插值函数对手的形状进行插值,并作图。
提示:
可用构造“参数曲线”的方法,即在参数区间
上选取
个插值点,然后用三次样条插值构造逼近函数在
个点上的值:
,最后以这
个点
作出图形。
>>m=length(x);
>>s=(1:
m);
>>n=(1:
0.05:
m);
>>u=spline(s,x,n);
>>v=spline(s,y,n);
>>plot(x,y,u,v)
2-7分析应用题
美国的人口普查每10年举行一次,下表列出了从1940年到1990年的人口(按千人计)
年
1940年
1950年
1960年
1970年
1980年
1990年
人口
(千)
132165
151326
179323
203302
226542
249633
1)选择一种插值求在1930年、1965年和2010年人口的近似值。
>>x=[1940,1950,1960,1970,1980,1990];
>>y=[132165,151326,179323,203302,226542,249633];
>>spline(x,y,1930)
ans=
1.3918e+005
>>spline(x,y,1965)
ans=
1.9178e+005
>>spline(x,y,2010)
ans=
2.9056e+005
2)1930年的人口大约是123203千。
你认为你得到的1965年和2010年的人口数字精确度如何?
精确度不高。
2-8分析应用题
测得平板表面3*5网格点处的温度分别为:
(二维插值应用)
82
81
80
82
84
79
63
61
65
81
84
84
82
85
86
试作出平板表面的温度分布曲面z=f(x,y)的图形,然后对平面进一步光滑化。
>>x=1:
5;
>>y=1:
3;
>>temps=[8281808284;7963616581;8484828586];
>>mesh(x,y,temps);
>>pause
>>xi=1:
0.2:
5;
>>yi=1:
0.2:
3;
>>zi=interp2(x,y,temps,xi',yi,'cubic');
>>figure
(2)
>>mesh(xi,yi,zi)
优化后:
【MATLAB相关函数】
⏹分段线性插值y=interp1(x0,y0,x)
输入值:
个插值节点对应数组
,以及
个待求点对应的数组
;
输出值:
个待求点对应的数组
。
⏹三次样条插值y=interp1(x0,y0,x,’spline’)或y=spline(x0,y0,x)
输入值:
个插值节点对应数组
,以及
个待求点对应的数组
;
输出值:
个待求点对应的数组
。
三.操作方法与实验步骤(包括实验数据记录和处理)
四.实验结果与分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 数值 逼近