スプライン補間の計算について -その2-

理論関係

前回の記事で、スプライン補間の各条件を示して、未知数の数だけ方程式を作ることができました。次に、簡単に計算を進めるために式変換をしていきます。

式番号は前回の記事から続いているので参照してください!

係数をまとめる。

係数dの計算

式(7)より、
S''_i(t_{i+1}) = S''_{i+1}(t_{i+1})
に式(3)を代入すれば
2c_i + 6d_i(t_{i+1}-t_i) = 2c_{i+1} + 6d_{i+1}(t_{i+1}-t_{i+1})

ここで右辺の()内は0ですね。ということで、

2c_i + 6d_i(t_{i+1}-t_i) = 2c_{i+1}
より

(9)   \begin{equation*}d_i = \frac{c_{i+1}-c_i}{3h_i} \end{equation*}

ただし

(10)   \begin{equation*}h_i = t_{i+1} - t_{i} \end{equation*}

です。 単純にhtが多くなって面倒なので置いただけです。深い意味はありません。

係数b の計算

式(5)より
a_i+b_i h_i+c_i h^2_i + d_i h^3_i = a_{i+1}
となり、これにd_iを代入すれば

    \[ a_i+b_i h_i+c_i h^2_i + \frac{(c_{i+1}-c_i) h^2_i }{3} = a_{i+1}\]


両辺をh_iで割ってさらにまとめると

(11)   \begin{equation*}b_i = \frac{a_{i+1}-a_i}{h_i} - \frac{h_i(c_{i+1}+2c_i)}{3} \end{equation*}

となります。単純な計算ですが項が多くてややこしいですね。。あともう少しです。

係数c でまとめる

式(6)より

    \[b_i +2c_i h_i + 3d_i h^2_i = b_{i+1}\]


これにd_i, b_i, b_{i+1}を代入します。

    \[\frac{a_{i+1}-a_i}{h_i}- \frac{h_i(c_{i+1} + 2c_i)}{3} + 2c_i h_i + (c_{i+1} - c_i) h_i =  \frac{a_{i+2}-a_{i+1}}{h_{i+1}} - \frac{h_{i+1}(c_{i+2} + 2c_{i+1})}{3}  \]



    \[\frac{a_{i+1}-a_i}{h_i}- \frac{h_i(c_{i+1} + 2c_i)}{3} + (c_{i+1} + c_i) h_i =  \frac{a_{i+2}-a_{i+1}}{h_{i+1}} - \frac{h_{i+1}(c_{i+2} + 2c_{i+1})}{3}  \]



両辺に3をかけて 係数cについてまとめていきます。

    \[-h_i(c_{i+1} + 2c_i) + 3h_i(c_{i+1} + c_i) + h_{i+1}(c_{i+2} + 2c_{i+1}) = 3(\frac{a_{i+2}-a_{i+1}}{h_{i+1}} - \frac{a_{i+1}-a_{i}}{h_{i}}  ) \]


(12)   \begin{equation*} \frac{3(a_{i+2}-a_{i+1})}{h_{i+1}} - \frac{3(a_{i+1}-a_{i})}{h_{i}} = h_{i+1} c_{i+2} + 2 (h_{i+1}  + h_i) c_{i+1} + h_i c_i   \end{equation*}

また、端部の関係式(8)より


(13)   \begin{equation*} c_0 = 0  \end{equation*}


(14)   \begin{equation*} c_{n-1} = 0  \end{equation*}


こまごまと式展開を行いました。ここではc_iによって、b_i,d_iが計算できる。ということがわかりました。次の記事では、どうやって c_iを求めるか。という点について書いていこうと思います!


コメント

タイトルとURLをコピーしました