本试验取材于中南大学《科学计算与MATLAB应用》

一、引例–零件加工问题

python 多维预测插值 多维插值算法_插值

>> 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次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。

python 多维预测插值 多维插值算法_python 多维预测插值_02

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

interp2():二维插值函数

调用格式:

Z1=interp2(X,Y,Z,X1,Y1,method)

其中,X、Y是两个向量、表示两个参数的采样点,Z是采样点对应的函数值。X1、Y1是两个标量或向量,表示要插值的点。

四、应用案例–粮储仓的通风控制问题

若粮食水分吸收和蒸发量相等,这个湿度称为平衡点湿度。平衡点湿度跟粮温、粮湿有关。

python 多维预测插值 多维插值算法_样条_03

>> 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)
>>

python 多维预测插值 多维插值算法_python 多维预测插值_04


建模题目—数据插值应用举例

  • 机动车刹车举例问题

python 多维预测插值 多维插值算法_插值_05

python 多维预测插值 多维插值算法_python 多维预测插值_06


python 多维预测插值 多维插值算法_样条_07


编程思路:

  • 第一步:建立速度和停车视距向量。
  • 第二步:以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');

python 多维预测插值 多维插值算法_插值_08

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

python 多维预测插值 多维插值算法_python 多维预测插值_09


第二问:设计一条最高时速为125km/h的高速公路,则设计人员应该保证驾驶者在公路上任一点的可视距离为多少米?

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


ans =


  480.1373


>>

python 多维预测插值 多维插值算法_数据_10


总结:公路设计是一个复杂的工程,除了地形、地质等因素之外,驾驶者的可视距离也要考虑在内,以与设计时速相匹配,从设计上保障安全。