三次樣條插值 cubic spline interpolation


 

什么是三次樣條插值

  插值(interpolation)是在已知部分數據節點(knots)的情況下,求解經過這些已知點的曲線,

然后根據得到的曲線進行未知位置點函數值預測的方法(未知點在上述已知點自變量范圍內)。

  樣條(spline)是軟尺(elastic ruler)的術語說法,在技術制圖中,使用軟尺連接兩個相鄰數據點,

以達到連接曲線光滑的效果。

  樣條插值是一種分段多項式(piecewise polynomial)插值法。數學上,曲線光滑需要在曲線上處處一階導連續,

因此,在節點處需要滿足一階導數相等。另外,為了使得曲線的曲率最小,要求曲線二階導連續【1】

在節點處需要二階導相等。

  三次及以上多項式可以滿足節點處光滑和曲率最小要求,但是次數高的曲線容易震盪,因此,就選用三次多項式即可。

 

數學表述

  假設有n個已知節點:

      

  函數關系記為: 

  在區間  中插值多項式曲線: 

        

注意,這里頭曲線為,尾曲線為

  插值在節點處滿足條件:

  (1)曲線經過節點:

    

  (2)曲線一階導連續(光滑):

    

  (3)曲線二階導連續(曲率最小):

    

  邊界條件:對兩端節點的約束。

  (B1)自然(natural (or free))邊界條件

    

  (B2)固定(clamped)邊界條件

    固定一階導數:

     ,

    固定二階導數:

    

  (B3)非節點邊界(not-a-knot )

    要求在第二個節點  和倒數第二個節點 ,曲線的三階導也連續:

    

    

 

三次多樣式函數的計算

  樣條函數采用n-1個三次多項式,每個三次多項式有4個參數,一共是4n-4個參數,

因此需要4n-4個方程。

    條件(1)n-1個曲線每個兩端經過節點,提供2(n-1)=2n-2個方程;

    條件(2)n-1個曲線相鄰一階導連續,提供n-2個方程;

    條件(3)n-1個曲線相鄰二階導連續,提供n-2個方程;

  以上一共是4n-6個方程,還需要2個方程,這兩個方程由邊界條件提供,條件(B1), (B2), (B3)

每個均提供2個方程,這樣就湊夠了4n-4個方程。

  

計算的例子

  n個節點,n-1條曲線。在區間  內,令第i條曲線為:

    

  一二三階導分別為:

    一階:  

    二階:  

    三階:  

  接下來,套用節點條件和邊界條件:

  先假設相鄰節點橫縱坐標的差值分別為: 

    條件(1):曲線  已經滿足第一個式子:

    第二式 : 

      (I)    

    條件(2):

      (II)      

    條件(3):

      (III)           

    邊界條件以非節點(Not-A_Knot)條件為例, 得:

      (IV)  

  聯立方程(I)和(II), 分別消去  和  得:

    ,     

  帶入方程(III)得:

    (V)    

  這里i的最大值應該取不到n-3,當i=n-3時,上式左邊將出現 ,而參數a的范圍是從0到n-2,

所以不存在這項,此式一共是n-2個方程。

    另外,方程(II)和(III)都不支持 ,需要單獨計算 

    由方程(I),(III)分別有:

      

      

    =>

      

      

  由邊界條件方程(IV)中的  得:

    

  方程(V)取i=0有:

    

  與上式聯立消去,得:

    (VI)  

  另由  得:

    (VII)   

   方程(V), (VI), (VII)聯立,n-1個方程,n-1個未知數(),參數a得解,然后在算出參數b和c即可。

  

References:

[1] Wikipedia: spline interpolation

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM