RegularChains[ChainTools][SubresultantChain] - 2 つの多変量多項式の部分終結式の鎖
RegularChains[ChainTools][LastSubresultant] - 2 つの多変量多項式の最後の部分終結式
RegularChains[ChainTools][SubresultantOfIndex] - 2 つの多変量多項式において与えられた指数の部分終結式
|
使い方
|
|
SubresultantChain(f1, f2, v, R)
SubresultantChain(f1, f2, v, R, 'representation'=value)
LastSubresultant(src, R)
SubresultantOfIndex(ind, src, R)
|
|
パラメータ
|
|
f1
|
-
|
R の 多項式
|
f2
|
-
|
R の 多項式
|
v
|
-
|
R の変数
|
R
|
-
|
多項式環
|
'representation'='value'
|
-
|
(オプション) 表現(representation)を指定します。value は 'MonomialBasis', 'ByValues' または 'BezoutMatrix' とすることができます。
|
src
|
-
|
部分終結式の鎖のデータ構造
|
ind
|
-
|
非負整数
|
|
|
|
|
モデルの説明
|
|
•
|
コマンド SubresultantChain(f1, f2, v, R) は、v における一変数多項式とみなされる f1 および f2 の部分終結式の鎖をエンコードするデータ構造を返します。
|
•
|
f1 および f2 は主変数 v を持つ必要があり、 が成立しなければなりません。
|
•
|
'representation'='MonomialBasis' のオプションが指定された場合、この部分終結式の鎖は R の単項式の基底にわたって示される f1 および f2 の部分終結式としてエンコードされます。すなわち、簡単な表現で言えば、f1 および f2 の部分終結式は標準的な方法である単項式と係数によって与えられます。この方法は、f1 および f2 の係数が素体の場合または、v に関する f1 および f2 の係数が非常に疎でも非常に稠密でもない場合に良く適しています。
|
•
|
'representation'='BezoutMatrix' のオプションが指定されている場合、f1 および f2 の Bezout の行列が構成されます。SubresultantOfIndex が呼び出されると、f1 および f2 の Bezout の行列の適切な小行列式から、対応する部分終結式が得られます。この方法は v に関する f1 および f2 の係数が非常に疎な場合に良く適しています。
|
•
|
'representation'='ByValues' のオプションが指定されている場合、f1 および f2 の全ての変数は v を除き、必要に応じて部分終結式 f1 および f2 を内挿するために、十分な数の有効な値において特殊化されます。ここで、有効な特殊化の値とは、f1 および f2 のイニシャル(initial)が消失しない点を意味します。このオプションは、鎖 R が FastArithmeticTools サブパッケージからのコマンドの仮定を満たすべきであることを暗に示す、FFT ベースの多項式演算を使用します。この方法は、v に関する f1 および f2の係数が非常に稠密である場合に良く適しています。
|
•
|
デフォルトでは、'representation'='MonomialBasis' のオプションが使用されています。
|
•
|
SubresultantChain(f1, f2, v, R) によって返されるデータ構造は、v に関する f1 および f2 の最後の部分終結式、すなわち、ゼロでない最小の指数の部分終結式を計算する際に使用することができます。より詳細には、コマンド LastSubresultant(src, R) は、src でエンコードされた部分終結式の鎖のデータ構造からゼロでない最小の指数の部分終結式を返します。
|
•
|
このデータ構造は、SubresultantOfIndex(ind, src, R)の呼び出しによって、与えられた指数 ind の(v に関する) f1 および f2 の部分終結式を計算する際に使用することができます。ind は負でない値であり、かつ、 未満の値でなければならないことに注意します。
|
•
|
このデータ構造は、正則鎖の飽和イデアルを法とした f1 および f2 の正則の最大公約数(GCD)を、コマンド RegularGcd により計算する際にも使用することができます。このケースでは、1 および f2 の終結式は、この正則鎖の飽和イデアルを法とするゼロでなければなりません。
|
|
|
アプリケーションと例題
|
|
多項式の鎖を定義します。
>
|
R := PolynomialRing([y,x]);
|
| (4.1) |
R の 2 つの多項式を定義します。
>
|
f1 := (y^2+6)*(x-1)-y*(x^2+1);
|
| (4.2) |
>
|
f2 := (x^2+6)*(y-1)-x*(y^2+1);
|
| (4.3) |
部分終結式の鎖を計算します。
>
|
src := SubresultantChain(f1, f2, y, R);
|
| (4.4) |
計算された部分終結式の鎖に使用するエンコードを複数の中から選択することができます。
>
|
srcBezout := SubresultantChain(f1, f2, y, R, representation = 'BezoutMatrix'); op(srcBezout);
|
| (4.5) |
>
|
srcMono := SubresultantChain(f1, f2, y, R, representation = 'MonomialBasis'); op(srcMono);
|
| (4.6) |
ByValues 表現は modpn 環でのみ使用されることに注意します。
>
|
modpnR := PolynomialRing([y,x], p):
|
>
|
srcValues := SubresultantChain(f1, f2, y, modpnR, representation = 'ByValues'); op(srcValues);
|
| (4.7) |
最後のゼロでない部分終結式を抽出します。
>
|
lsr := LastSubresultant(src, R);
|
| (4.8) |
この式は、この例の場合、指数 0 の部分終結式でもあります。
>
|
res := SubresultantOfIndex(0, src, R);
|
| (4.9) |
| (4.10) |
res を使用して正則鎖を定義します。res は 既約である必要はなく、また、平方因子を含まないものである必要もありません。
>
|
rc := Chain([res], Empty(R), R);
|
| (4.11) |
| (4.12) |
f1 および f2 rc を法とする正則の GCD を計算します。
>
|
RegularGcd(src, rc, R);
|
| (4.13) |
|
|