实验报告五 插值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江大学城市学院实验报告
课程名称 科学计算
实验项目名称 函数的数值逼近-插值
实验成绩 指导老师(签名 ) 日期
一. 实验目的和要求
1. 掌握用Matlab 计算Lagrange 、分段线性、三次样条三种插值的方法,改变节点的数目,
对三种插值结果进行初步分析。
2. 通过实例学习如何用插值方法解决实际问题。
二. 实验内容和原理
1) 编程题2-1要求写出Matlab 源程序(m 文件),并对每一行语句加上适当的注释语句; 2) 分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序、运行结果和结
果的解释、算法的分析等写在实验报告上。
2-1 编程
编写Lagrange 插值函数的Matlab 程序,其中n 个插值节点以数组0x ,0y 输入,m 个待求点的自变量以数组x 输入。输出数组y 为m 个待求点的函数值。 Lagrange 插值:=lagr(0,0,)y x y x
Step 1 输入插值节点数组0x ,0y 和待求节点x ; Step 2 数组0x 的长度为n ,x 的长度为m ; Step 3 对1,2,
,i n =,构造第i 个插值基函数
111111(0)(0)(0)(0)
()(00)(00)(00)(00)
i i n i i i i i i i n x x x x x x x x l x x x x x x x x x -+-+----=
----
并计算在m 个待求点上的基函数值。 Step 4 根据公式1
0()n
i i
i y y l x ==
∑分别计算m 个待求点上的函数值。
并对程序的每一行语句加上适当的注释语句。
2-2 分析应用题
用1
2
y x =在0,1,4,9,16x =产生5个节点15,
,P P 。用以下五种不同的节点构造Lagrange
插值公式来计算5x =处的插值,与精确值比较并进行分析。 1)用34,P P 构造; 2)用234,,P P P 构造; 3)用2345,,,P P P P 构造; 4)用1245,,,P P P P 构造; 5)用全部插值节点12345,,,,P P P P P 构造。,
2-3 分析应用题
意大利柑橘的产量变化如下表。使用3次样条插值来估计1962年、1977年和1992年的产量。将这些结果与相对应的实际值进行比较,并说明计算的精度。实际值分别为12380,27403和32059(5
10⨯kg)。再利用Lagrange 插值多项式重新计算。
2-4 分析应用题
在区间[-1,1]上,在21个平均分布的节点上对函数()sin 2f x x π=进行估计。计算Lagrange 插值多项式和3次样条,并在给定的区间上将两个函数的曲线与f 进行比较。使用干扰数
据14
()(1)10i i f x +-=-来重复计算。注意观察,对于小扰动,Lagrange 插值多项式与3次样
条相比,分析哪个更敏感。
2-5 分析应用题 已知函数表如下:
编制程序构造差商表,并构造牛顿插值多项式计算的近似值。
2-6 分析应用题
利用2-1中的程序和Matlab 相关函数分析用下列三种不同的插值逼近著名的Runge 函数
2
1
(),[1,1]125f x x x
=
∈-+
1)Lagrange 插值; 2)分段线性插值; 3)三次样条插值。
其中取插值节点为区间[1,1]-上的10等分点,同时列出100等分点上的三种插值结果,比
较分析,同时对这三种插值在100等分点上进行作图比较。
2-7 分析应用题 运行程序
figure
set(gcf,'menubar','none') axes('position',[0 0 1 1]) [x,y]=ginput
然后将你的手直接放在弹出窗口中,用鼠 标点击选取需要的插值点,最后回车得到所有插值点的坐标。用三次样条插值函数对手的形状进行插值,并作图。
提示:可用构造“参数曲线”的方法,即在参数区间112[,],()n n t t t t t <<<上选取n 个
插值点,然后用三次样条插值构造逼近函数在m 个点上的值:
(),(),1,2,,i i i i x x t y y t i m ===,最后以这m 个点(,)i i x y 作出图形。
2-8 分析应用题
美国的人口普查每10年举行一次,下表列出了从1940年到1990年的人口(按千人计)
年 1940年 1950年 1960年 1970年 1980年 1990年 人口 (千)
132165
151326
179323
203302
226542
249633
1) 选择一种插值求在1930年、1965年和2010年人口的近似值。
2) 1930年的人口大约是123203千。你认为你得到的1965年和2010年的人口数字精确度
如何?
【MATLAB 相关函数】
⏹ 分段线性插值y=interp1(x0,y0,x)
输入值:n 个插值节点对应数组0,0x y ,以及m 个待求点对应的数组x ; 输出值:m 个待求点对应的数组y 。
⏹ 三次样条插值y=interp1(x0,y 0,x,’spline’)或y=spline(x0,y0,x) 输入值:n 个插值节点对应数组0,0x y ,以及m 个待求点对应的数组x ; 输出值:m 个待求点对应的数组y 。