Location : Home > Languages > Perl > Package
Title : Math::Spline
Toolbox Logo

名称

 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.

【訳注と解説】

  1. Numerical Recipies は、数値計算を生業にしている人種には有名。本を買ってもいいけど、ここのサイトあたりをどうぞ→ Numerical Recipes Home Page
Toolbox Logo
Updated : 2006/06/19