插值計算方法是工程實踐中常常用到的方法。當獲取的原始數據爲離散點狀數據時,就須要經過插值計算方法來獲取離散點之間的數據。經常使用的插值計算方法有線性插值、樣條插值等,可是這些插值方法一般是一維插值方法,即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未知)的值。
以上爲所述二維線性插值計算方法的全過程。