实验报告五 插值

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 。

相关文档
最新文档