什么是三次樣條插值
插值(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