CurveFitting[RationalInterpolation] - 有理式補間を計算する
使い方
RationalInterpolation(xydata, z, opts)
RationalInterpolation(xdata, ydata, z, opts)
パラメータ
xydata - [[x0,y0],[x1,y1],...,[xn,yn]] の形のリスト、配列、または行列; データの点
xdata - [x0,x1,...,xn] の形のリスト、配列、または行列; 独立変数の値
ydata - [y0,y1,...,yn] の形のリスト、配列、または行列; 従属変数の値
z - 名前、または数値
opts - (オプション) method=methodtype または degrees=[d1,d2] の形の等式
|
説明
|
|
•
|
ルーチン RationalInterpolation は有理関数 u/vを計算します。ただし、u および v は変数 z の多項式で、それぞれ次数が高々d1 および d2 のものです。次数 d1 および d2 はオプション degrees により与えることができます。そうでなければ、デフォルトの値 d1=floor(n/2) および d2=floor((n+1)/2) が使われます。もし z が数値である場合は、この点での関数の値が返されます。多項式 u および v は、i=0, 1, ..., d1+d2 に対し、yi*v(xi)-u(xi)=0 を満たします。ただし、{(x0,y0),(x1,y1),...,(xn,yn)}, n>=d1+d2 は入力された点です。(すべてではありませんが)ほとんどの場合、これは与えられた点を補間する、次数に制限のある z の有理関数を求めることに同値です。
|
•
|
関数 RationalInterpolation は2通りの方法で使うことができます。
|
|
第1の形式は、データ集合からなる1つのリスト、配列、行列 [[x0,y0],[x1,y1],...,[xn,yn]] を受け付けます。
|
|
第2の形式は入力データを2つのリスト、配列、またはベクトルとして受け付けます。この形式では、1番目のデータは独立変数の値 [x0,x1,...,xn] からなり、2番目のデータは従属変数の値 [y0,y1,...,yn] からなります。このルーチンは精確なデータを必要とするので、各要素は浮動小数型ではなく、代数型でなければいけません。すべての独立変数の値は異なっていなければいけません。
|
•
|
線形化された方程式を満たす多項式 u および v が、少なくとも1個以上の共通零点 xi を持つ場合があります。この場合は、共通因子が計算される有理式から取り除かれるので、点 xi はこの有理式で補間されません。(この点は ``不到達点"と呼ばれます)。このような場合、このルーチンは、与えられた次数制限のもとで、補間する点の個数が最大となる有理式を求めます。不到達点が存在する場合は、分子と分母の次数がともに次数制限よりも小さいという事実により認識されます。
|
•
|
2つの methods を使うことができます: 1つは、``look-around" 手続きにより、対応する補間子の表から特異点を避ける方法であり、もう1つは ``look-ahead" 手続きにより、特異点を飛び越える方法です。2番目の手続きは、部分終結式を計算するのに用いられるのと同様の再帰法を用います。2つのアルゴリズムともに、小数を含みません。 (fraction-free) method はオプション method=methodtype を含ませることにより指定できます。ただし、methodtype は(デフォルトで、 ``look-around” 手続きである) lookaround か、または(``look-ahead"手続きである) subresultant のいずれかです。
|
•
|
この関数は CurveFitting パッケージの一部なので、コマンド with(CurveFitting) を実行した後に限り、 RationalInterpolation(..) という形式で使うことができます。しかし、コマンドの長い形である CurveFitting[RationalInterpolation](..) を使うことにより、常時呼び出すことができます。
|
|
|
参考文献
|
|
•
|
B. Beckermann and G. Labahn. ``Numeric and Symbolic Computation of Problems Defined by Structured Linear Systems.'' Reliable Computing V.6 No.4 (2000): 365-390.
|
•
|
B. Beckermann and G. Labahn. ``Fraction-free Computation of Matrix Rational Interpolants and Matrix GCDs.'' SIAM Journal on Matrix Analysis and Applications V.22, No.1 (2000): 114-144.
|
|
|
例
|
|
>
|
with(CurveFitting):
RationalInterpolation([[0,0],[1,3],[2,1],[3,3]], x);
|
| (3.1) |
上の例では、結果は与えられた点を補間することが確かめられます。次の例では、x=4 がはずれています。
>
|
xpoints := [0,1,2,3,4,-1]: ypoints := [0,3,1,3,a,1/11]:
f := RationalInterpolation(xpoints, ypoints, x);
|
| (3.2) |
>
|
for i from 1 to 6 do normal(eval(f,x=xpoints[i])-ypoints[i]) end do;
|
|
|