插值计算方法是工程实践中常常用到的方法。当获取的原始数据为离散点状数据时,就须要经过插值计算方法来获取离散点之间的数据。经常使用的插值计算方法有线性插值、样条插值等,可是这些插值方法一般是一维插值方法,即y=f(x)的状况,对于二维数据即z=f(x,y)的状况应用起来存在一些困难。数组
首先来简单介绍一下最简单的一维插值计算方法。原始数据为一系列的散点,即(x1,y1)、(x2,y2)....(xi,yi),对于任意的x,求取其对应的y值。其计算过程为,首先求取x值位于哪两个三点之间,假如xj≤x<xj+1,则y=(x-xj)×(yj+1-yj)/(xj+1-xj)+yj。该方法能够较准确地求取任意x值对应的y值,且该方法通常只应用于内插,当x值超出原始散点x范围时,采用线性外插方法。spa
而对于二维插值却存在必定问题。原始数据为一系列的散点(x1,y1,z1)、(x2,y2,z2)....(xi,yi,zi),此时对于任意的(x,y)值,要想求取其对应的z值。table
一般容易想到的方法是,首先基于已知的散点数据(x1,y1,z1)、(x2,y2,z2)....(xi,yi,zi),经过某种拟合方法得到一个适用的计算公式,即z=f(x,y),而后经过该公式来计算任意的(x,y)对应的z值。该方法可以必定程度上解决没法获取散点以外数据的问题。可是,该方法拟合过程引入的误差是不可忽略的,一种检验的方法是,选取原始散点中的某一个点的数据(xj,yj,zj)进行检验,将该点的数据代入计算公式z=f(x,y)得到一个值z计算=f(xj,yj),对比能够发现z计算≠zj,且进一步计算其相对误差量能够发现,相对误差量(z计算 - zj)/zj不是一个小量,某些时候甚至可以达到30%,所以该方法很难实现有效的工程应用。方法
本文推荐一种二维线性插值计算方法,能够有效避免原始数据代入计算结果不一致的问题。该方法适用的一个前提是,原始散点数据需知足必定特征,即某些原始散点的x值需相等,且能够基于x值将原始散点进行分组。即原始散点具有以下特征,可进行以下分组分类:数据
(x1,y1,z1) | (x1,y2,z2) | (x1,ym,zm) | |
(x2,ym+1,zm+1) | (x2,ym+2,zm+2) | . | (x2,y2m,z2m) |
... | |||
(xn,ynm-m+1,znm-m+1) | (xn,ynm-m+2,znm-m+2) | (xn,ynm,znm) |
对于该类型的原始散点,求取对应于(x未知,y未知)值时的Z未知值,其计算过程以下tab
1)首先计算x值位于哪一个区间,经过逐个比较得到xj≤x<xj+1;ab
2)对于xj所在的数组,得到其对应原始散点的y、z值组成二维散点(yjm-m+1,zjm-m+1)、(yjm-m+2,zjm-m+2)...(yjm,zjm),在该二维散点中,经过一维线性插值计算得到当y=y未知时,对应的z值为zxj,未知
3)同理,对于xj+1所在的数组,得到其对应原始散点的y、z值组成二维散点(yjm+1,zjm+1)、(yjm+2,zjm+2)...(yjm+m,zjm+m),在该二维散点中,经过一维线性插值计算得到当y=y未知时,对应的z值为zxj+1,未知
4)经过步骤(2)、(3)得到的两个点(xj,y未知,zxj,未知)、(xj+1,y未知,zxj+1,未知),与所求点(x未知,y未知,z未知),三个点一定在同一条直线上,所以能够基于(xj,y未知,zxj,未知)、(xj+1,y未知,zxj+1,未知)两点,经过一维线性插值计算得到点(x未知,y未知,z未知)的值。
以上为所述二维线性插值计算方法的全过程。