測量曲線插直程序
發布時間:2011/10/5 11:52:49 訪問次數:1126
2.1.4 三次樣條函數插值法
圖2.8三次樣條函數原理
如果各樣點之間為三次曲線,則畫出的曲線由各段三次曲線拼接而成,且每個采樣點處的兩段三次曲線的一階、二階導數連續,這在數學上稱為三次樣條函數,其原理如圖2.8所示。利用微處理器處理三次樣條函數比較復雜,甚至難以實現。這時可以使用諸如MATLAB等強有力的數學工具計算出樣條函數的各次系數,利用這些系數就可以編寫出高效的用戶插值程序。設有0,1,2,…,n個采樣點,則n個三次多項式的通用形式為 H101C (2.8)
Si(x)=aix2,+bx2+cix+bi=1,2,3...,n
三次樣條函數Si(x)在區間[xi-xi,xi,]上的三次式常用兩種方法表示,一種是設Si(x)=yi,S"(x)=M'hi-xi-xi-1得到m的表達式;另一種是設S(xi)yi,S"(XI)=Mi,hi=xi-xi-1,得到M的表達式。對于M的表達式,因S(x)在[Xi-1,Xi]上是三次式,s"(x)是一次式,s"(xi-1)=Mi-1,S“(xi)=Mi,按線性插值公式可得到
xi-x x-xi-1
S"(x)_____Mi-1+____Mi
hi hi (2.9)
對式(2.9)積分兩次可得三次樣條函數的M表達式:
hi2Mi-1 Xi-x hi2Mi-1 x-xi-1
1 -_______ _____+[yi-_______]______
s(x)=__[(xi-x)3Mi-1+(x-xi-1)3M]+[yi-1 6 ] hi 6 hi
6hi xE[Xi-1,xi],i=1.2...,n (2.10)
可見,要確定三次樣條函數S(x),只需確定Mi。為此,需用到S(x)的光滑性。既然三次樣條函數的二階導數連續,當然一階導數也連續,故在中間節點xi(i=1,2...,n-1)處應有S'(XI)=S'+(Xi),這樣可以得到Mi滿足的n-1個方程:
(2.11)
對于兩個邊界點有S"(xo)=Mo,s"(x)=M"。這樣就得到要求解n+1個M值的n+1個方程。由此可y(x)構造某點處的二階導數表示的三次樣條插值函數可分為以下三步。
①根據S"(X)的連續性及其為線性函數的特點,將s"(x)表示為線性函數,再根據S(x)的連續性及插值條件,寫出S"(x)用夠Mi(i=1,2...,n)表示的形式。H1053
②根據S'(x)在節點Xi(i=1,2,...,n-1)處的連續性及邊界條件,導出含Mi(i=1,2,...,n)的n+l階線性方程組。
③之解Mi(i=1,2,...,n)的線性方程組,將得到的Mi代入[Xi一l,xi]的表達式,即得到似節點處二階導數表示的三次樣條函數。
采用MATLAB求解三次樣條函數對應的Mi(i=1,2...,n)的程序流程圖如圖2.9所示。
圖2.9樣條函數插值程序流程圖
線性插值法比較簡單,但精度不高;三次樣條函數插值法比較精確,但計算量大;二次拋物線插值法精度較高,計算量適中。在實際應用中,可根據被測量(如溫度)與測量值(經A/D轉換得到的電壓值)之間關系曲線的特征選取合適的插值方法。為避免采用高次插值法,可在測量曲線曲率變化比較大的地方增加測試點,這樣就可以采用線性插值法。例如,在比色測溫系統中,采樣點測試誤差很小,且硅光電池特性曲線的中間大部分近似線性,故采用線性插值法。但對于某些情況,要給出更多的測量點有困難時,就必須根據實際情況在不同的區段選取不同的插值方法。H11A817A3SD
三種插值方法均屬計算法,所取段數越多,計算精度越高。但是,這不僅增加計算量,而且也會產生計算誤差。此外,在某些檢測系統中,有些參數的計算非常復雜,需要用較長的計算程序,占用較多的微處理器內存單元,此時可利用查表法進行處理。
2.1.4 三次樣條函數插值法
圖2.8三次樣條函數原理
如果各樣點之間為三次曲線,則畫出的曲線由各段三次曲線拼接而成,且每個采樣點處的兩段三次曲線的一階、二階導數連續,這在數學上稱為三次樣條函數,其原理如圖2.8所示。利用微處理器處理三次樣條函數比較復雜,甚至難以實現。這時可以使用諸如MATLAB等強有力的數學工具計算出樣條函數的各次系數,利用這些系數就可以編寫出高效的用戶插值程序。設有0,1,2,…,n個采樣點,則n個三次多項式的通用形式為 H101C (2.8)
Si(x)=aix2,+bx2+cix+bi=1,2,3...,n
三次樣條函數Si(x)在區間[xi-xi,xi,]上的三次式常用兩種方法表示,一種是設Si(x)=yi,S"(x)=M'hi-xi-xi-1得到m的表達式;另一種是設S(xi)yi,S"(XI)=Mi,hi=xi-xi-1,得到M的表達式。對于M的表達式,因S(x)在[Xi-1,Xi]上是三次式,s"(x)是一次式,s"(xi-1)=Mi-1,S“(xi)=Mi,按線性插值公式可得到
xi-x x-xi-1
S"(x)_____Mi-1+____Mi
hi hi (2.9)
對式(2.9)積分兩次可得三次樣條函數的M表達式:
hi2Mi-1 Xi-x hi2Mi-1 x-xi-1
1 -_______ _____+[yi-_______]______
s(x)=__[(xi-x)3Mi-1+(x-xi-1)3M]+[yi-1 6 ] hi 6 hi
6hi xE[Xi-1,xi],i=1.2...,n (2.10)
可見,要確定三次樣條函數S(x),只需確定Mi。為此,需用到S(x)的光滑性。既然三次樣條函數的二階導數連續,當然一階導數也連續,故在中間節點xi(i=1,2...,n-1)處應有S'(XI)=S'+(Xi),這樣可以得到Mi滿足的n-1個方程:
(2.11)
對于兩個邊界點有S"(xo)=Mo,s"(x)=M"。這樣就得到要求解n+1個M值的n+1個方程。由此可y(x)構造某點處的二階導數表示的三次樣條插值函數可分為以下三步。
①根據S"(X)的連續性及其為線性函數的特點,將s"(x)表示為線性函數,再根據S(x)的連續性及插值條件,寫出S"(x)用夠Mi(i=1,2...,n)表示的形式。H1053
②根據S'(x)在節點Xi(i=1,2,...,n-1)處的連續性及邊界條件,導出含Mi(i=1,2,...,n)的n+l階線性方程組。
③之解Mi(i=1,2,...,n)的線性方程組,將得到的Mi代入[Xi一l,xi]的表達式,即得到似節點處二階導數表示的三次樣條函數。
采用MATLAB求解三次樣條函數對應的Mi(i=1,2...,n)的程序流程圖如圖2.9所示。
圖2.9樣條函數插值程序流程圖
線性插值法比較簡單,但精度不高;三次樣條函數插值法比較精確,但計算量大;二次拋物線插值法精度較高,計算量適中。在實際應用中,可根據被測量(如溫度)與測量值(經A/D轉換得到的電壓值)之間關系曲線的特征選取合適的插值方法。為避免采用高次插值法,可在測量曲線曲率變化比較大的地方增加測試點,這樣就可以采用線性插值法。例如,在比色測溫系統中,采樣點測試誤差很小,且硅光電池特性曲線的中間大部分近似線性,故采用線性插值法。但對于某些情況,要給出更多的測量點有困難時,就必須根據實際情況在不同的區段選取不同的插值方法。H11A817A3SD
三種插值方法均屬計算法,所取段數越多,計算精度越高。但是,這不僅增加計算量,而且也會產生計算誤差。此外,在某些檢測系統中,有些參數的計算非常復雜,需要用較長的計算程序,占用較多的微處理器內存單元,此時可利用查表法進行處理。
熱門點擊