三次样条插值 cubic spline interpolation
?
什么是三次樣條插值
插值(interpolation)是在已知部分?jǐn)?shù)據(jù)節(jié)點(knots)的情況下,求解經(jīng)過這些已知點的曲線,
然后根據(jù)得到的曲線進(jìn)行未知位置點函數(shù)值預(yù)測的方法(未知點在上述已知點自變量范圍內(nèi))。
樣條(spline)是軟尺(elastic ruler)的術(shù)語說法,在技術(shù)制圖中,使用軟尺連接兩個相鄰數(shù)據(jù)點,
以達(dá)到連接曲線光滑的效果。
樣條插值是一種分段多項式(piecewise polynomial)插值法。數(shù)學(xué)上,曲線光滑需要在曲線上處處一階導(dǎo)連續(xù),
因此,在節(jié)點處需要滿足一階導(dǎo)數(shù)相等。另外,為了使得曲線的曲率最小,要求曲線二階導(dǎo)連續(xù)【1】,
在節(jié)點處需要二階導(dǎo)相等。
三次及以上多項式可以滿足節(jié)點處光滑和曲率最小要求,但是次數(shù)高的曲線容易震蕩,因此,就選用三次多項式即可。
?
數(shù)學(xué)表述
假設(shè)有n個已知節(jié)點:
函數(shù)關(guān)系記為:?。
在區(qū)間??中插值多項式曲線:?
?
注意,這里頭曲線為,尾曲線為。
插值在節(jié)點處滿足條件:
(1)曲線經(jīng)過節(jié)點:
(2)曲線一階導(dǎo)連續(xù)(光滑):
(3)曲線二階導(dǎo)連續(xù)(曲率最小):
邊界條件:對兩端節(jié)點的約束。
(B1)自然(natural (or free))邊界條件
(B2)固定(clamped)邊界條件
固定一階導(dǎo)數(shù):
?,
固定二階導(dǎo)數(shù):
,?
(B3)非節(jié)點邊界(not-a-knot )
要求在第二個節(jié)點??和倒數(shù)第二個節(jié)點?,曲線的三階導(dǎo)也連續(xù):
?
三次多樣式函數(shù)的計算
樣條函數(shù)采用n-1個三次多項式,每個三次多項式有4個參數(shù),一共是4n-4個參數(shù),
因此需要4n-4個方程。
條件(1)n-1個曲線每個兩端經(jīng)過節(jié)點,提供2(n-1)=2n-2個方程;
條件(2)n-1個曲線相鄰一階導(dǎo)連續(xù),提供n-2個方程;
條件(3)n-1個曲線相鄰二階導(dǎo)連續(xù),提供n-2個方程;
以上一共是4n-6個方程,還需要2個方程,這兩個方程由邊界條件提供,條件(B1),?(B2),?(B3)
每個均提供2個方程,這樣就湊夠了4n-4個方程。
計算的例子
n個節(jié)點,n-1條曲線。在區(qū)間? 內(nèi),令第i條曲線為:
一二三階導(dǎo)分別為:
一階:??
二階:??
三階:??
接下來,套用節(jié)點條件和邊界條件:
先假設(shè)相鄰節(jié)點橫縱坐標(biāo)的差值分別為:?,。
條件(1):曲線??已經(jīng)滿足第一個式子:;
第二式 :?
(I)
條件(2):
(II)
條件(3):
(III) ? ?
邊界條件以非節(jié)點(Not-A_Knot)條件為例, 得:
(IV) ,?
聯(lián)立方程(I)和(II), 分別消去??和??得:
,?
帶入方程(III)得:
(V)
這里i的最大值應(yīng)該取不到n-3,當(dāng)i=n-3時,上式左邊將出現(xiàn) ,而參數(shù)a的范圍是從0到n-2,
所以不存在這項,此式一共是n-2個方程。
另外,方程(II)和(III)都不支持?,需要單獨計算?:
由方程(I),(III)分別有:
=>
由邊界條件方程(IV)中的? 得:
方程(V)取i=0有:
與上式聯(lián)立消去,得:
(VI)
另由? 得:
(VII) ?
? 方程(V), (VI), (VII)聯(lián)立,n-1個方程,n-1個未知數(shù)(),參數(shù)a得解,然后在算出參數(shù)b和c即可。
??
References:
[1] Wikipedia: spline interpolation
?
轉(zhuǎn)載于:https://www.cnblogs.com/tlz888/p/11454772.html
總結(jié)
以上是生活随笔為你收集整理的三次样条插值 cubic spline interpolation的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盘点Chrome 灵魂插件!爱了爱了!
- 下一篇: 事务管理:事务的状态相关知识笔记