f_res
説明書Copyright © Risa/Asir committers 2001. All rights reserved.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
1 関数マニュアル | ||
Index |
1.1 概要 | ||
1.2 Notation | ||
1.3 主な関数 |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res
パッケージは, 多変数多項式集合に対し, dense な係数をもつ
としてmultipolynomial resultant を計算する f_res.mres
,
sparse な係数を持つ
場合に sparse resultant を計算する f_res.sres
, Dixon の方法により
resultant を計算する f_res.dres
および, 付随する関数を実装している.
実際には, これらは真の resultant の多項式倍を返す場合があるが, 消去イデアル
に属する多項式を一つ求めたい場合には, グレブナー基底による消去に比較して
効率がよい場合がある.
これらの方法においては, 線形計画法, 凸包, mixed volume の計算などが
必要となるが, これらについてはフリーソフト
である cddlib
および MixedVol
を利用した. これらは
OpenXM サーバ ox_sres
としてまとめられている. これは,
ソースディストリビューションでは, 自動的には make されないが,
‘OpenXM/src/ox_cdd’ において make, make install することにより,
asir のライブラリディレクトリにインストールされる. これを利用して
上で述べた resultant を計算する asir 関数が,
‘OpenXM/src/asir-contrib/packages/f_res/f_res.rr’ にある.
これを load することで, 次節以降で述べる機能が使えるようになる.
なお, 線形計画法および凸包計算は, gmp
による
厳密計算を行うものと, 浮動小数による近似計算で行うものの 2 通りが
用意されている. 後者の方が高速だが, 誤差が生ずる場合がある.
この選択は, f_res.gmp()
, f_res.float()
を呼び出す
ことで行う.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
このマニュアルでは点をリストで, support や polytope をリストのリストで
表す. つまり, 点 (1,1) はリスト [1,1]
で表し, 点 {(0,0),
(1,0), (0,1) } からなる polytope をリストのリスト
[[0,0],[1,0],[0,1] ]
で表す.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.mres
, f_res.mresM
:: Multipolynomial resultant の多項式倍を返す
:: 行列式が f_res.mres
が返す値になるような行列を返す
多項式もしくは 0
行列
多項式のリスト
変数のリスト.
任意
配列
配列
素数
リスト
f_res.mres
は resultant の多項式倍
を, f_res.mresM
は resultant の多項式倍を行列式にもつ行列を返す.
rsc
を 1 に設定する. その場合,この関数は内部で関数
f_res.submatrix
を呼び出しているので, そのためのオプションはす
べて受け付ける.
[0] F0 = a1*x + a2*y + a3$ [1] F1 = b1*x + b2*y + b3$ [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$ [3] f_res.mresM( [F0,F1,F2], [x,y] ); [ 0 0 0 a2 a3 a1 ] [ 0 a2 a3 0 a1 0 ] [ a2 a3 0 a1 0 0 ] [ 0 b2 b3 0 b1 0 ] [ b2 b3 0 b1 0 0 ] [ c2 c6 c3 c4 c5 c1 ] [4] R = f_res.mres( [F0,F1,F2], [x,y] ); (-c3*b2^2+c6*b3*b2-c2*b3^2)*a1^3+(((2*c3*b2-c6*b3)*b1-c5*b3*b2+c4*b3^2)*a2+((-c 6*b2+2*c2*b3)*b1+c5*b2^2-c4*b3*b2)*a3)*a1^2+((-c3*b1^2+c5*b3*b1-c1*b3^2)*a2^2+( c6*b1^2+(-c5*b2-c4*b3)*b1+2*c1*b3*b2)*a3*a2+(-c2*b1^2+c4*b2*b1-c1*b2^2)*a3^2)*a 1 [5] fctr( R ); [[-1,1],[a1,1],[(c3*b2^2-c6*b3*b2+c2*b3^2)*a1^2+(((-2*c3*b2+c6*b3)*b1+c5*b3*b2- c4*b3^2)*a2+((c6*b2-2*c2*b3)*b1-c5*b2^2+c4*b3*b2)*a3)*a1+(c3*b1^2-c5*b3*b1+c1*b 3^2)*a2^2+(-c6*b1^2+(c5*b2+c4*b3)*b1-2*c1*b3*b2)*a3*a2+(c2*b1^2-c4*b2*b1+c1*b2^ 2)*a3^2,1]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.indexof
:: リスト中に要素が最初に現れる位置を返す
検索したい要素
検索対象のリスト
List で最初に現れる Element のインデックス番号. List に Element が現れない場合は整数 -1.
flist
と組み合わせると,ある関数が Asir に
入っているかが分かる.
[0] f_res.indexof( 2, [1,2,3] ); 1 [1] f_res.indexof( 4, [1,2,3] ); -1 [2] f_res.indexof( "nd_det", flist() ); 31 [3] f_res.indexof( "nd_Det", flist() ); -1
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.listadd
:: リストをベクトルと見て和を求める
リスト
リスト
[0] f_res.listadd( [1,2,3], [4,5,6] ); [5,7,9] [1] f_res.listadd( [a,b,c], [d,e,f] ); [a+d,b+e,c+f]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.start
:: ox_sres
を起動する
任意
整数
ox_sres
を起動し,
他の関数で使われるサーバに設定する.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.float
:: ox_sres
を起動する
整数
ox_sres
が存在しないときは起動し,
他の関数で使われるサーバに設定する.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.gmp
:: ox_sres
を起動する
整数
ox_sres
が存在しないときは起動し,
他の関数で使われるサーバに設定する.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.conv
:: polytope の凸閉包を求める
リストのリスト
点を表すリストのリスト
ox_sres
が存在しないときは浮動小数版を起動する.
[0] f_res.conv( [ [1,1],[0,0],[0,2],[2,0],[2,2] ] ); [[0,0],[0,2],[2,0],[2,2]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.support
:: 多項式の support を返す
リストのリスト
多項式
不定元のリスト
[0] f_res.support( x^2 + x*y + y^2, [x,y] ); [[0,2],[1,1],[2,0]] [1] f_res.support( x^2 + x*y + y^2, [x,y,z] ); [[0,2,0],[1,1,0],[2,0,0]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.np
:: Newton polytope を返す
リストのリスト
多項式
不定元のリスト
ox_sres
が存在しないときは浮動小数版を起動する.
[0] f_res.np( x^2 + x*y + y^2, [x,y] ); [[0,2],[2,0]] [1] f_res.np( x^2 + x*y + y^2, [x,y,z] ); [[0,2,0],[2,0,0]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.msum
:: polytope たちの Minkowski sum を返す
リストのリスト
リストのリストのリスト
任意.
ox_sres
が存在しないときは浮動小数版を起動する.
[0] Q1 = [[0,0],[1,0],[0,1]]$ [1] Q2 = [[0,0],[1,0],[0,1],[1,1]]$ [2] f_res.msum( [Q1,Q1] ); [[0,0],[0,1],[0,2],[1,0],[1,1],[2,0]] [3] f_res.msum( [Q1,Q1] | conv=1 ); [[0,0],[0,2],[2,0]] [4] f_res.msum( [Q1,Q1,Q1] | conv=1 ); [[0,0],[0,3],[3,0]] [5] f_res.msum( [Q1,Q2] ); [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1]] [6] f_res.msum( [Q1,Q2] | conv=1 ); [[0,0],[0,2],[1,2],[2,0],[2,1]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.mvol
:: polytope たちの mixed volume を求める
整数
リストのリストのリスト
ox_sres
が存在しないときは浮動小数版を起動する.
[0] Q1 = [[0,0],[1,0],[0,1]]$ [1] Q2 = [[0,0],[1,0],[0,1],[1,1]]$ [2] f_res.mvol( [Q1,Q1] ); 1 [3] f_res.mvol( [Q1,Q2] ); 2 [4] f_res.mvol( [Q2,Q2] ); 2
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.sres
:: sparse resultant の多項式倍を返す
多項式
多項式のリスト
不定元のリスト
リスト
素数
リスト
ox_sres
が存在しないときは浮動小数版を起動する.
[0] F0 = a1*x + a2*y + a3$ [1] F1 = b1*x + b2*y + b3$ [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$ [3] R = f_res.sres( [F0,F1,F2], [x,y] ); (c3*b2^3-c6*b3*b2^2+c2*b3^2*b2)*a1^2+(((-2*c3*b2^2+c6*b3*b2)*b1+c5*b3*b2^2-c4*b 3^2*b2)*a2+((c6*b2^2-2*c2*b3*b2)*b1-c5*b2^3+c4*b3*b2^2)*a3)*a1+(c3*b2*b1^2-c5*b 3*b2*b1+c1*b3^2*b2)*a2^2+(-c6*b2*b1^2+(c5*b2^2+c4*b3*b2)*b1-2*c1*b3*b2^2)*a3*a2 +(c2*b2*b1^2-c4*b2^2*b1+c1*b2^3)*a3^2 [4] fctr( R ); [[1,1],[b2,1],[(c3*b2^2-c6*b3*b2+c2*b3^2)*a1^2+(((-2*c3*b2+c6*b3)*b1+c5*b3*b2-c 4*b3^2)*a2+((c6*b2-2*c2*b3)*b1-c5*b2^2+c4*b3*b2)*a3)*a1+(c3*b1^2-c5*b3*b1+c1*b3 ^2)*a2^2+(-c6*b1^2+(c5*b2+c4*b3)*b1-2*c1*b3*b2)*a3*a2+(c2*b1^2-c4*b2*b1+c1*b2^2 )*a3^2,1]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.dres
, f_res.dresM
:: Dixon resultant を返す
:: 行列式が Dixon resultant になるような行列を返す
多項式
行列
多項式のリスト
不定元のリスト
任意
配列
配列
素数
リスト
f_res.dres
は resultant の多項式倍を,
f_res.dresM
は resultant の多項式倍を行列式にもつ行列を返す.
f_res.submatrix
を呼び出しているので,
そのためのオプションはすべて受け付ける.
[0] F0 = a1*x + a2*y + a3$ [1] F1 = b1*x + b2*y + b3$ [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$ [3] f_res.dresM( [F0,F1,F2], [x,y] ); [ c1*b3*a2-c1*b2*a3 -c2*b3*a1+c4*b3*a2+(c2*b1-c4*b2)*a3 (c3*b2-c6*b3)*a1+(-c3*b 1+c5*b3)*a2+(c6*b1-c5*b2)*a3 ] [ 0 -c2*b2*a1+c2*b1*a2 -c2*b3*a1+c2*b1*a3 ] [ -c1*b2*a1+c1*b1*a2 -c4*b2*a1+c4*b1*a2 -c4*b3*a1+c1*b3*a2+(c4*b1-c1*b2)*a3 ] [4] R = dres( [F0,F1,F2], [x,y] ); (-c3*c2*c1*b2^3+c6*c2*c1*b3*b2^2-c2^2*c1*b3^2*b2)*a1^3+(((3*c3*c2*c1*b2^2-2*c6* c2*c1*b3*b2+c2^2*c1*b3^2)*b1-c5*c2*c1*b3*b2^2+c4*c2*c1*b3^2*b2)*a2+((-c6*c2*c1* b2^2+2*c2^2*c1*b3*b2)*b1+c5*c2*c1*b2^3-c4*c2*c1*b3*b2^2)*a3)*a1^2+(((-3*c3*c2*c 1*b2+c6*c2*c1*b3)*b1^2+(2*c5*c2*c1*b3*b2-c4*c2*c1*b3^2)*b1-c2*c1^2*b3^2*b2)*a2^ 2+((2*c6*c2*c1*b2-2*c2^2*c1*b3)*b1^2-2*c5*c2*c1*b2^2*b1+2*c2*c1^2*b3*b2^2)*a3*a 2+(-c2^2*c1*b2*b1^2+c4*c2*c1*b2^2*b1-c2*c1^2*b2^3)*a3^2)*a1+(c3*c2*c1*b1^3-c5*c 2*c1*b3*b1^2+c2*c1^2*b3^2*b1)*a2^3+(-c6*c2*c1*b1^3+(c5*c2*c1*b2+c4*c2*c1*b3)*b1 ^2-2*c2*c1^2*b3*b2*b1)*a3*a2^2+(c2^2*c1*b1^3-c4*c2*c1*b2*b1^2+c2*c1^2*b2^2*b1)* a3^2*a2 [5] fctr(R); [[-1,1],[c2,1],[c1,1],[b2*a1-b1*a2,1],[(c3*b2^2-c6*b3*b2+c2*b3^2)*a1^2+(((-2*c3 *b2+c6*b3)*b1+c5*b3*b2-c4*b3^2)*a2+((c6*b2-2*c2*b3)*b1-c5*b2^2+c4*b3*b2)*a3)*a1 +(c3*b1^2-c5*b3*b1+c1*b3^2)*a2^2+(-c6*b1^2+(c5*b2+c4*b3)*b1-2*c1*b3*b2)*a3*a2+( c2*b1^2-c4*b2*b1+c1*b2^2)*a3^2,1]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.dixonpolynomial
:: Dixon polynomial を返す
リスト
多項式のリスト
不定元のリスト
[ (Dixon polynomial), (新しい変数の配列) ]
というリストを返す.
新しい変数は関数 uc
によって生成された不定元である.
多項式の数は変数の数よりも一つ多い必要がある.
[0] F0 = a1*x + a2*y + a3$ [1] F1 = b1*x + b2*y + b3$ [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$ [3] f_res.dixonpolynomial( [F0,F1,F2], [x,y] ); [(-_0*c1*b2*a1+(_0*c1*b1+c1*b3)*a2-c1*b2*a3)*x+(((-_1*c2-_0*c4)*b2-c2*b3)*a1+(( _1*c2+_0*c4)*b1+c4*b3)*a2+(c2*b1-c4*b2)*a3)*y+(c3*b2+(-_1*c2-_0*c4-c6)*b3)*a1+( -c3*b1+(_0*c1+c5)*b3)*a2+((_1*c2+_0*c4+c6)*b1+(-_0*c1-c5)*b2)*a3,[ _0 _1 ]]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.matrixdecomp
:: Dixon polynomial を行列に分解する.
リスト
多項式
配列
リスト
[ (UC の monomial の配列),(行列),(Vars の monomial の配列) ]
という形で,それぞれsigma_P = V D_P W の V, D_P, W を表す.
[0] F0 = a1*x + a2*y + a3$ [1] F1 = b1*x + b2*y + b3$ [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$ [3] D = f_res.dixonpolynomial( [F0,F1,F2], [x,y] )$ [4] M = f_res.matrixdecomp( D[0], D[1], [x,y] ); [[ 1 _1 _0 ],[ c1*b3*a2-c1*b2*a3 -c2*b3*a1+c4*b3*a2+(c2*b1-c4*b2)*a3 (c3*b2-c6* b3)*a1+(-c3*b1+c5*b3)*a2+(c6*b1-c5*b2)*a3 ] [ 0 -c2*b2*a1+c2*b1*a2 -c2*b3*a1+c2*b1*a3 ] [ -c1*b2*a1+c1*b1*a2 -c4*b2*a1+c4*b1*a2 -c4*b3*a1+c1*b3*a2+(c4*b1-c1*b2)*a3 ],[ x y 1 ]] [5] V = M[0]*M[1]$ [6] D[0] == V[0]*M[2][0]+V[1]*M[2][1]+V[2]*M[2][2]; 1
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
f_res.submatrix
:: 引数である行列の rank を持つ部分行列を返す.
行列
行列
配列
配列
素数
リスト
[0] M = newmat( 3, 3, [[1,0,0],[0,a,0],[0,b,0]] ); [ 1 0 0 ] [ 0 a 0 ] [ 0 b 0 ] [1] f_res.submatrix( M ); [ 1 0 ] [ 0 a ] [2] f_res.submatrix( M | rowidx=ltov([0,2,1]) ); [ 1 0 ] [ 0 b ]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
移動: | F |
---|
移動: | F |
---|
[冒頭] | [目次] | [見出し] | [ ? ] |
f_res.mres
, f_res.mresM
f_res.indexof
f_res.listadd
f_res.start
f_res.float
f_res.gmp
f_res.conv
f_res.support
f_res.np
f_res.msum
f_res.mvol
f_res.sres
f_res.dres
, f_res.dresM
f_res.dixonpolynomial
f_res.matrixdecomp
f_res.submatrix
[冒頭] | [目次] | [見出し] | [ ? ] |
[冒頭] | [目次] | [見出し] | [ ? ] |
この文書は5月 1, 2025にtexi2html 5.0を用いて生成されました。
ナビゲーションパネル中のボタンには以下の意味があります。
ボタン | 名称 | 移動先 | 1.2.3項からの移動先 |
---|---|---|---|
[ << ] | FastBack | Beginning of this chapter or previous chapter | 1 |
[ < ] | Back | Previous section in reading order | 1.2.2 |
[上] | Up | Up section | 1.2 |
[ > ] | Forward | Next section in reading order | 1.2.4 |
[ >> ] | FastForward | Next chapter | 2 |
[冒頭] | 冒頭 | Cover (top) of document | |
[目次] | 目次 | Table of contents | |
[見出し] | 見出し | 見出し | |
[ ? ] | About | About (help) |
例では、以下に示す構造を持つ文書の1.2.3項を現在位置に仮定しています。
この文書は5月 1, 2025にtexi2html 5.0を用いて生成されました。