タグ

スプラインに関するmingosのブックマーク (2)

  • 簡略化した3次スプライン曲線の生成方法

    簡略化した3次スプライン曲線の生成方法 スプライン曲線とは、簡単に言えばn+1個の点を結ぶ滑らかな曲線の一種です。3次スプライン曲線は、各点と点の間を3次関数で表現し、点での接続が滑らかになるようにしたものです。 基的なスプライン曲線 以下に単純な形のスプライン曲線の生成方法を示します。 に対して が与えられているとします。 に対して、 は 区間で定義される関数とします。 が 点と 点を通り(以下の前提条件の1と2)、 各函数が滑らかに接続する(以下の前提条件の3と4)ように 係数を決定します。 なお、関数を一意に決定するために、 以下の前提条件5を追加します。 このを連結したものが 3次スプライン曲線になります。 前提条件:に対して、 1.、 2.、 3.、 4.、 5.。 上記前提条件を元に係数を計算すると 以下の通りになります。 但し、です。 は以下の連立1次方程式の解になります。

  • Ruby実用例 〜スプライン補間〜 - [物理のかぎしっぽ]

    飛び飛びの点を滑らかにつなぐ「3次スプライン補完」という方法があります.ここでは非周期関数用のスプライン補完を取り上げます. コード † ↑ spline.rb † class Spline # 初期化.3次スプライン補間曲線を求める def initialize(x, y) @x = x @y = y @z = [] n = @x.length h = [] d = [] @z[0] = @z[n-1] = 0 for i in 0...n-1 h[i ] = @x[i+1] - @x[i] d[i+1] = (@y[i+1] - @y[i]) / h[i] end @z[1] = d[2] - d[1] - h[0] * @z[0] d[1] = 2 * (@x[2] - @x[0]) for i in 1...n-2 t = h[i] / d[i] @z[i+1] = d[i+2]

  • 1