[MATLAB]--数据插值(interp1/2多维插值)

本试验取材于中南大学《科学计算与MATLAB应用》
一、引例–零件加工问题
[MATLAB]--数据插值(interp1/2多维插值)_第1张图片

>> x1=0:0.1:15;
>> x=[0,3,5,7,9,11,12,13,14,15];
>> y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6];
>> y1=interp1(x,y,x1,'spline');
>> plot(x1,y1)
>>

二、数据插值的计算机制
interp1():一维插值函数。
调用格式:

  • y1=interp1(x,y,x1,method)
  • 根据X、Y的值,计算函数在X1处的值。其中,X,Y是两个等长的已知向量,分别表示采样掉和采样值。X1是一个向量或标量,表示要插值的点。

三、数据插值的实现方法
methos用于指定插值方法,常用的取值有以下四种:
1. linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
2. nearest:最近点插值,选择最近样本点的值作为插值数据。
3. pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
4. spline:3次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。
[MATLAB]--数据插值(interp1/2多维插值)_第2张图片

  • 线性插值和最近点插值方法比较简单。其中线性插值方法的计算量与样本点n无关。n越大,误差越小
  • 3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性;而3次样条插值要求其二阶导数也连续。
  • 所以插值函数的形态更好。

interp2():二维插值函数
调用格式:
Z1=interp2(X,Y,Z,X1,Y1,method)
其中,X、Y是两个向量、表示两个参数的采样点,Z是采样点对应的函数值。X1、Y1是两个标量或向量,表示要插值的点。
四、应用案例–粮储仓的通风控制问题
若粮食水分吸收和蒸发量相等,这个湿度称为平衡点湿度。平衡点湿度跟粮温、粮湿有关。
[MATLAB]--数据插值(interp1/2多维插值)_第3张图片


>> x=20:10:90;
y=(0:5:20)';
z=[8.9,10.32,11.3,12.5,13.9,15.3,17.8,21.3;8.7,10.8,11,12.1,13.2,14.8,16.55,20.8;8.3,9.65,10.88,12,13.2,14.6,16.4,20.5;8.1,9.4,10.7,11.9,13.1,14.5,16.2,20.3;8.1,9.2,10.8,12,13.2,14.8,16.9,20.9];
xi=20:90;
yi=(0:20)';
zi=interp2(x,y,z,xi,yi,'spline');
surf(xi,yi,zi)
>>

[MATLAB]--数据插值(interp1/2多维插值)_第4张图片
建模题目—数据插值应用举例

  • 机动车刹车举例问题

[MATLAB]--数据插值(interp1/2多维插值)_第5张图片[MATLAB]--数据插值(interp1/2多维插值)_第6张图片
[MATLAB]--数据插值(interp1/2多维插值)_第7张图片
编程思路:

  • 第一步:建立速度和停车视距向量。
  • 第二步:以1为单位,对采样区间内所有速度进行插值,计算出相应的停车视距。
  • 第三步:求出停车视距120所对应的速度。
  • 第四步:绘图展示
>> v=20:10:150;
>> vs=v*(1000/3600);
>> d1=10*vs;
>> d2=[3.15,7.08,12.59,19.68,28.34,38.57,50.4,63.75,78.71,95.22,113.29,132.93,154.12,176.87];
>> d3=10;
>> d=d1+d2+d3;
>> vi=20:150;
>> di=interp1(v,d,vi,'spline');

[MATLAB]--数据插值(interp1/2多维插值)_第8张图片

>> x=abs(di-120);
>> [y,i]=sort(x);
>> vi(i(1));
>> plot(vi,di,vi(i(1)),di(i(1)),'rp')
>>

[MATLAB]--数据插值(interp1/2多维插值)_第9张图片
第二问:设计一条最高时速为125km/h的高速公路,则设计人员应该保证驾驶者在公路上任一点的可视距离为多少米?

>> j=find(vi==125);
>> plot(vi,di,125,480.14,'rp')
>> di(j)


ans =


  480.1373


>>

[MATLAB]--数据插值(interp1/2多维插值)_第10张图片
总结:公路设计是一个复杂的工程,除了地形、地质等因素之外,驾驶者的可视距离也要考虑在内,以与设计时速相匹配,从设计上保障安全。

你可能感兴趣的:(数学建模)