Location : Home > Languages > Perl > Package Title : Math::Spline |
![]() |
Math::Spline - 3次スプライン曲線でデータを補間
require Math::Spline; $spline=new Math::Spline(\@x,\@y) $y_interp=$spline->evaluate($x); use Math::Spline qw(spline linsearch binsearch); use Math::Derivative qw(Derivative2); @y2=Derivative2(\@x,\@y); $index=binsearch(\@x,$x); $index=linsearch(\@x,$x,$index); $y_interp=spline(\@x,\@y,\@y2,$index,$x);
本パッケージは数値データの3次元スプライン補間を行う。データは x 座標と y 座標を含む配列として参照される。関数またはクラスモジュールをエクスポートするものとして利用される。
Math::Spline クラスのコンストラクタ new はデータの x 座標と y 座標の参照をとる。補間は evaluate メソッドで行われ、 x 座標を与えた際に y 座標を返す。
spline 関数は x 座標と y 座標を含む配列への参照を引数としてとり、2階微分(Derivative2)を用いて計算する。返り値は補完された y 座標である。2つの関数は x データの配列の適当なインデックスを探して与える。
random では binsearch が利用可能で、 x 座標とそれに対応するインデックスへの参照を返す。lookup を用いる場合は厳密に増加する列であり(例えば 曲線を引くのにより解像度の高いデータセットを生成する場合)、linsearch 関数はさらに効率的に用いられる。これは binsearch のように振舞うが、前のインデックスとして3つめの引数を必要とする。
Math::Derivative モジュールを必要とする。
require Math::Spline; my @x=(1,3,8,10); my @y=(1,2,3,4); $spline=new Math::Spline(\@x,\@y); print $spline->evaluate(5)."\n";
結果は以下の通り。
2.44
Revision 1.1:1995/12/26 17:28:17 willijar:Initial revision
バグ報告や建設的なコメントは歓迎する。
John A.R. Williams, <J.A.R.Williams@aston.ac.uk>
"Numerical Recipies: The Art of Scientific Computing", W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling; Cambridge University Press. ISBN 0 521 30811 9.
【訳注と解説】
![]() |
Updated : 2006/06/19 |