Spline関数とは?

tzx
---------
1z1x1
} x = a1z3 + b1z2 + c1z + d1
2z2x2
} x = a2z3 + b2z2 + c2z + d2
3z3x3
} x = ai-1z3 + bi-1z2 + ci-1z + di-1
izixi
} x = aiz3 + biz2 + ciz + di
i+1zi+1xi+1
} x = an-1z3 + bn-1z2 + cn-1z + dn-1
nznxn

というn組の (xi, zi)があるとき、 それぞれの区間を x = aiz3 + biz2 + ciz + di のような3次関数で表現し、各点をn-1個の曲線でつなぐものとする。 この時、各点での傾きおよび曲率を連続的にしたものをspline関数という。 すなわち、以下の条件を満たす。
(1)
(2)
(3)
これに、次式を加えれば、 ai,bi,ci,di についての漸化式ができる。
(4)
(1)(4)より
(5)
(2)(5)より
(6)
(3)(6)より
(7)
であり、(3)(2)(1)より
(1)
(2)
(3)
と、次々に求まる。

ただし、この漸化式を解くためには 初期値(a0,b0,c0,d0)が必要である。
適切な初期値を設定しない場合、各点間の曲線は 大きく振れる可能性もある。 特に、この漸化式を用いて順次導いていくと、tが大きくなるに連れて、勾配および曲率が発散していく 傾向があるようだ。とりあえずは、 t=n地点でのd2x/dz2の絶対値が最小となるように初期値を決めると 比較的ブレが小さくなるようだ。 きっと、もっといい方法はあるに違いないが、今のところはこんな認識である

BACK