ブックマーク / d.hatena.ne.jp/mscp (2)

  • 任意の次数のスプライン補間を行う関数 - ますぽんの雑記

    プログラム任意の次数で、スプライン補間をする関数を書きました。ご自由にお使い下さい。補間の拘束条件は、奇数番目の曲線は両端に自然スプライン条件を、偶数番目の曲線は左端だけに自然スプライン拘束条件を与えています。使用するには、GNU Scientific Library のライブラリが必要です。 #include #include #include static double pown( double v, int n ) { return n 0 ? 0.0 : powf(v,n); } static int factorial( int n ) { if( n 0 ) return 1; return n ? n*factorial(n-1) : 1; } /* * order: 次数 * n: 点の数 * pts: プロット値 * c: 多項式の係数 a_1, b_1, c_1

    fedelini
    fedelini 2012/10/15
  • 3次スプライン補間を手作業で行う - ますぽんの雑記

    勉強スプライン補間とは、大雑把に言えば多項式 を区間毎に作って、なめらかに離散点を繋ぐ事をいいます。もちろん"補間"ですから、その境目が分からないようにかつ、人間がフリーハンドで繋いだような形になっていればベストです。 具体的な定義と、その生成方法は Wikipedia に書いてあります。http://en.wikipedia.org/wiki/Spline_interpolation その中でも、最大次数が3次である多項式関数で補間した曲線を Cubic Spline といいます。今回、これを手作業で算出する手順を紹介します。とにかくすぐに使いたいって人は既存のライブラリ ( GSL とか ) にあるスプライン補間計算 API を使うと良いでしょう。 具体的な計算例は次の通りです。まず、補間したい点を4点プロットします。 この場合、X = 1, 2, 3, 4 で Y = 2.7, 6,

    fedelini
    fedelini 2012/10/15
  • 1