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