数据插值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二、 数据插值
【实验目的】
1.了解数据插值、曲线拟合的概念和原理。
2.掌握一维数据插值方法。
【实验内容】
把题目和相应的完整命令写在实验报告上。
1.某实验室对一根长10米的钢轨进行热源的温度在60秒内传播测试。x:表示测量点,h:测量时间,t:测量得到的温度。数据如下表
(1) 用线性插值求出在25秒时3.6米处钢轨的温度。
(2) 用样条插值求出在这60秒内每隔20秒,钢轨每
隔1米处的温度。
2. Fibonacci 数列通式的探索
对于Fibonacci 数列{n F }: 1, 1 ,2, 3, 5, 8, 13, 21, 34, 55, 89,…,
已知其满足递推关系式
21n n n F F F ++=+
试利用样条插值和一些猜测求出Fibonacci 数列通式.
【相关知识说明】
1.数据插值
问题1:某气温测量站,在某一天的早上6时至傍晚5时内,每隔1小时测量一次气温,得到下表
试估计在h=8.2,11.5,12.1,16.7时的气温值。
类似上面,在工程测量和科学实验中,往往测量出一批数据,例如n 个数据1122(,),(,),,(,)n n x y x y x y ,这些数据点反映了一个函数关系()y F x =,然而我们并不知道()F x 的表达式是怎么样的。
数据插值的任务就是根据已测得的数据构造一个函数()y f x =,使得在(1,2,,)i x i n = 处,有()()i i f x F x =,且在两个相邻的采样点之间,()f x 光滑过度。
数据插值的基本思路是构造一个相对简单的函数()y f x =,通过全部的数据点1122(,),(,),,(,)n n x y x y x y ,即(),1,2,,i i y f x i n == 。再用()f x 来计算要插值的点。
(1)一维数据插值的命令(MATLAB语言,下同)
注意:x的数据必须单调,cx不能超出x的范围。
现在我们来看怎么回答问题1,这是一维插值问题。
输入命令(%后表示注释):
h=[6,7,8,9,10,11,12,13,14,15,16,17]; %也可以写作h=6:17; t=[8,9,11,15,25,29,31,30,22,25,27,24];
t1=interp1(h,t,8.2) %缺省method参数,表示线性插值t2=interp1(h,t,11.5,'spline') %三次样条插值(光滑性)
t3=interp1(h,t,12.1,'nearest') %最近点插值
t4=interp1(h,t,16.7,'cubic') %三次多项式插值
我们也可以用一种插值方法对四个待插值点一起求解:t5=interp1(h,t,[8.2,11.5,12.1,16.7])
大家试运行之,看结果分别是什么。
(2)二维数据插值的命令
问题2:有一个汽车引擎在变转速(单位为rpm)时,温度(单位为o C)与时间(单位为s)的测量值如下:
请估计该引擎时间在2.6s, 转速为2500rpm时的温度。
这是二维插值问题。
r=[2000,3000,4000]; %x方向的取值
s=1:5; %y方向的取值
t=[20,110,176;60,180,220;68,240,349;77,310,450;110,405,503];
%将对应的数据排成5×3矩阵t1=interp2(r,s,t,2500,2.6,'cubic') %三次多项式插值大家试运行之,看看结果怎么样。
假如我们需要更多更详细的插值,例如,时间每隔0.5s,
转速每相差500rpm的所有插值结果,该怎么办?一个一个运用命令来插值不是办法,我们用数组一次搞定,请看下面ri=2000:500:4000; %转速每隔500取样
si=1:0.5:5; %时间每隔0.5取样
t1=interp2(r,s,t,ri,si','cubic')
注意si加多' , 表示转置。也可以对ri转置,而不对si转置。目的是要反映出其中一个是行向量,另一个是列向量。
2.请回答前面【实验内容】里面的问题……