[BACK]Return to f_res-ja.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / doc / f_res

Annotation of OpenXM/src/asir-contrib/packages/doc/f_res/f_res-ja.texi, Revision 1.2

1.1       noro        1: \input texinfo
1.2     ! takayama    2: @comment $OpenXM: OpenXM/src/asir-contrib/packages/doc/f_res/f_res-ja.texi,v 1.1 2007/03/17 10:18:54 noro Exp $
1.1       noro        3: @comment    Copyright (c)  2005, Kenji Fujiwara,
                      4: @comment    Permission is granted to copy, distribute and/or modify this document
                      5: @comment    under the terms of the GNU Free Documentation License, Version 1.1
                      6: @comment    or any later version published by the Free Software Foundation;
                      7: @comment    with the Invariant Sections being LIST THEIR TITLES, with the
                      8: @comment    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
                      9: @comment    A copy of the license is included in the section entitled "GNU
                     10: @comment    Free Documentation License".
                     11: @comment
                     12: @comment \input texinfo
                     13: @iftex
                     14: @catcode`@#=6
                     15: @def@fref#1{@xrefX[#1,,@code{#1},,,]}
                     16: @def@b#1{{@bf@gt #1}}
                     17: @catcode`@#=@other
                     18: @end iftex
                     19: @overfullrule=0pt
                     20: @c -*-texinfo-*-
                     21: @comment %**start of header
1.2     ! takayama   22: @comment --- おまじない終り ---
1.1       noro       23:
1.2     ! takayama   24: @comment --- GNU info ファイルの名前 ---
1.1       noro       25: @setfilename asir-contrib-f_res
                     26:
1.2     ! takayama   27: @comment --- タイトル ---
        !            28: @settitle Risa/Asir 終結式計算パッケージ @code{f_res}
1.1       noro       29:
                     30: @comment %**end of header
                     31: @comment %@setchapternewpage odd
                     32:
1.2     ! takayama   33: @comment --- おまじない ---
1.1       noro       34: @ifinfo
                     35: @macro fref{name}
                     36: @ref{\name\,,@code{\name\}}
                     37: @end macro
                     38: @end ifinfo
                     39:
                     40: @iftex
                     41: @comment @finalout
                     42: @end iftex
                     43:
                     44: @titlepage
1.2     ! takayama   45: @comment --- おまじない終り ---
1.1       noro       46:
1.2     ! takayama   47: @comment --- タイトル, バージョン, 著者名, 著作権表示 ---
        !            48: @title Risa/Asir 終結式計算パッケージ @code{f_res} 説明書
        !            49: @subtitle 利用説明書
        !            50: @subtitle 1.0 版
        !            51: @subtitle 2005 年 6 月
1.1       noro       52:
                     53: @author  by Kenji Fujiwara and Masayuki Noro
                     54: @page
                     55: @vskip 0pt plus 1filll
                     56: Copyright @copyright{} Risa/Asir committers
                     57: 2001. All rights reserved.
                     58: @end titlepage
                     59:
1.2     ! takayama   60: @comment --- おまじない ---
1.1       noro       61: @synindex vr fn
1.2     ! takayama   62: @comment --- おまじない終り ---
1.1       noro       63:
1.2     ! takayama   64: @comment --- @node は GNU info, HTML 用 ---
        !            65: @comment --- @node  の引数は node-name,  next,  previous,  up ---
1.1       noro       66: @node Top,, (dir), (dir)
                     67:
                     68: @menu
1.2     ! takayama   69: * 関数マニュアル::
1.1       noro       70: * Index::
                     71: @end menu
                     72:
1.2     ! takayama   73: @node 関数マニュアル,,, Top
        !            74: @chapter 関数マニュアル
1.1       noro       75:
                     76: @menu
1.2     ! takayama   77: * 概要::
1.1       noro       78: * Notation::
1.2     ! takayama   79: * 主な関数::
1.1       noro       80: @end menu
                     81:
1.2     ! takayama   82: @comment --- 書体指定について ---
        !            83: @comment --- @code{} はタイプライタ体表示 ---
        !            84: @comment --- @var{} は斜字体表示 ---
        !            85: @comment --- @b{} はボールド表示 ---
        !            86: @comment --- @samp{} はファイル名などの表示 ---
        !            87:
        !            88: @node 概要,,, 関数マニュアル
        !            89: @section 概要
        !            90:
        !            91: @code{f_res} パッケージは, 多変数多項式集合に対し, dense な係数をもつ
        !            92: としてmultipolynomial resultant を計算する @code{f_res.mres},
        !            93: sparse な係数を持つ
        !            94: 場合に sparse resultant を計算する @code{f_res.sres}, Dixon の方法により
        !            95: resultant を計算する @code{f_res.dres} および, 付随する関数を実装している.
        !            96: 実際には, これらは真の resultant の多項式倍を返す場合があるが, 消去イデアル
        !            97: に属する多項式を一つ求めたい場合には, グレブナー基底による消去に比較して
        !            98: 効率がよい場合がある.
        !            99:
        !           100: これらの方法においては, 線形計画法, 凸包, mixed volume の計算などが
        !           101: 必要となるが, これらについてはフリーソフト
        !           102: である @code{cddlib} および @code{MixedVol} を利用した. これらは
        !           103: OpenXM サーバ @code{ox_sres} としてまとめられている. これは,
        !           104: ソースディストリビューションでは, 自動的には make されないが,
        !           105: @samp{OpenXM/src/ox_cdd} において  make, make install することにより,
        !           106: asir のライブラリディレクトリにインストールされる. これを利用して
        !           107: 上で述べた resultant を計算する asir 関数が,
        !           108: @samp{OpenXM/src/asir-contrib/packages/f_res/f_res.rr} にある.
        !           109: これを load することで, 次節以降で述べる機能が使えるようになる.
        !           110: なお, 線形計画法および凸包計算は, @code{gmp} による
        !           111: 厳密計算を行うものと, 浮動小数による近似計算で行うものの 2 通りが
        !           112: 用意されている. 後者の方が高速だが, 誤差が生ずる場合がある.
        !           113: この選択は, @code{f_res.gmp()}, @code{f_res.float()} を呼び出す
        !           114: ことで行う.
1.1       noro      115:
                    116:
                    117:
1.2     ! takayama  118: @node Notation,,,関数マニュアル
1.1       noro      119: @section Notation
                    120:
1.2     ! takayama  121: このマニュアルでは点をリストで, support や polytope をリストのリストで
        !           122: 表す. つまり, 点 (1,1) はリスト @code{[1,1]} で表し, 点 @{(0,0),
        !           123: (1,0), (0,1) @} からなる polytope をリストのリスト
        !           124: @code{[[0,0],[1,0],[0,1] ]} で表す.
        !           125: @node 主な関数,,, 関数マニュアル
        !           126: @section 主な関数
1.1       noro      127:
                    128: @menu
                    129: * f_res.mres f_res.mresM::
                    130: * f_res.indexof::
                    131: * f_res.listadd::
                    132: * f_res.start::
                    133: * f_res.float::
                    134: * f_res.gmp::
                    135: * f_res.conv::
                    136: * f_res.support::
                    137: * f_res.np::
                    138: * f_res.msum::
                    139: * f_res.mvol::
                    140: * f_res.sres::
                    141: * f_res.dresM::
                    142: * f_res.dixonpolynomial::
                    143: * f_res.matrixdecomp::
                    144: * f_res.submatrix::
                    145: @end menu
                    146:
1.2     ! takayama  147: @node intersect,,, 主な関数
1.1       noro      148:
1.2     ! takayama  149: @node f_res.mres f_res.mresM,,, 主な関数
1.1       noro      150: @subsection @code{f_res.mres}, @code{f_res.mresM}
                    151: @findex f_res.mres
                    152: @findex f_res.mresM
                    153:
                    154: @table @t
                    155: @item f_res.mres(@var{Equations}, @var{Vars} )
1.2     ! takayama  156: :: Multipolynomial resultant の多項式倍を返す
1.1       noro      157: @item f_res.mresM(@var{Equations}, @var{Vars} )
1.2     ! takayama  158: :: 行列式が @code{f_res.mres} が返す値になるような行列を返す
1.1       noro      159: @end table
                    160:
                    161: @table @var
                    162: @item return
                    163: @table @t
                    164:  @item f_res.mres
1.2     ! takayama  165:  多項式もしくは 0
1.1       noro      166:  @item f_res.mresM
1.2     ! takayama  167:  行列
1.1       noro      168: @end table
                    169: @item Equaitons
1.2     ! takayama  170: 多項式のリスト
1.1       noro      171: @item Vars
1.2     ! takayama  172: 変数のリスト.
        !           173: @item オプション
1.1       noro      174: @table @t
                    175:  @item rsc
1.2     ! takayama  176:  任意
1.1       noro      177:  @item rowidx
1.2     ! takayama  178:  配列
1.1       noro      179:  @item colidx
1.2     ! takayama  180:  配列
1.1       noro      181:  @item p
1.2     ! takayama  182:  素数
1.1       noro      183:  @item sub
1.2     ! takayama  184:  リスト
1.1       noro      185: @end table
                    186: @end table
                    187:
                    188: @itemize @bullet
1.2     ! takayama  189: @item @var{Equations} の成分の多項式による不定元を @var{Vars}
        !           190: としたとき斉次多項式の場合の方法で @code{f_res.mres} は resultant の多項式倍
        !           191: を, @code{f_res.mresM} は resultant の多項式倍を行列式にもつ行列を返す.
1.1       noro      192:
1.2     ! takayama  193: @item @var{Equations} の成分の多項式は内部で自動的に斉次化されているから,斉次多項式である必要はない.
1.1       noro      194:
1.2     ! takayama  195: @item Rank Submatrix Construction を行ないたいときは
        !           196: オプション @code{rsc} を 1 に設定する.  その場合,この関数は内部で関数
        !           197: @code{f_res.submatrix} を呼び出しているので, そのためのオプションはす
        !           198: べて受け付ける.
1.1       noro      199: @end itemize
                    200:
                    201: @example
                    202: [0] F0 = a1*x + a2*y + a3$
                    203: [1] F1 = b1*x + b2*y + b3$
                    204: [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$
                    205: [3] f_res.mresM( [F0,F1,F2], [x,y] );
                    206: [ 0 0 0 a2 a3 a1 ]
                    207: [ 0 a2 a3 0 a1 0 ]
                    208: [ a2 a3 0 a1 0 0 ]
                    209: [ 0 b2 b3 0 b1 0 ]
                    210: [ b2 b3 0 b1 0 0 ]
                    211: [ c2 c6 c3 c4 c5 c1 ]
                    212: [4] R = f_res.mres( [F0,F1,F2], [x,y] );
                    213: (-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
                    214: 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+(
                    215: 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
                    216: 1
                    217: [5] fctr( R );
                    218: [[-1,1],[a1,1],[(c3*b2^2-c6*b3*b2+c2*b3^2)*a1^2+(((-2*c3*b2+c6*b3)*b1+c5*b3*b2-
                    219: 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
                    220: 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^
                    221: 2)*a3^2,1]]
                    222: @end example
                    223:
                    224:
1.2     ! takayama  225: @node f_res.indexof,,, 主な関数
1.1       noro      226: @subsection @code{f_res.indexof}
                    227: @findex f_res.indexof
                    228:
                    229: @table @t
                    230: @item f_res.indexof(@var{Element}, @var{List} )
1.2     ! takayama  231: :: リスト中に要素が最初に現れる位置を返す
1.1       noro      232: @end table
                    233:
                    234: @table @var
                    235: @item Element
1.2     ! takayama  236: 検索したい要素
1.1       noro      237: @item List
1.2     ! takayama  238: 検索対象のリスト
1.1       noro      239: @item return
1.2     ! takayama  240: @var{List} で最初に現れる @var{Element} のインデックス番号.
        !           241: @var{List} に @var{Element} が現れない場合は整数 -1.
1.1       noro      242: @end table
                    243:
                    244: @itemize @bullet
1.2     ! takayama  245: @item @var{List} で最初に現れる @var{Element} のインデックス番号を返す.
        !           246: @var{List} に @var{Element} が現れない場合は -1 を返す.
1.1       noro      247:
1.2     ! takayama  248: @item @var{Element} の型は何であっても構わない.
1.1       noro      249:
1.2     ! takayama  250: @item 関数 @code{flist} と組み合わせると,ある関数が Asir に
        !           251: 入っているかが分かる.
1.1       noro      252: @end itemize
                    253:
                    254: @example
                    255: [0] f_res.indexof( 2, [1,2,3] );
                    256: 1
                    257: [1] f_res.indexof( 4, [1,2,3] );
                    258: -1
                    259: [2] f_res.indexof( "nd_det", flist() );
                    260: 31
                    261: [3] f_res.indexof( "nd_Det", flist() );
                    262: -1
                    263: @end example
                    264:
1.2     ! takayama  265: @node f_res.listadd,,, 主な関数
1.1       noro      266: @subsection @code{f_res.listadd}
                    267: @findex f_res.listadd
                    268:
                    269: @table @t
                    270: @item f_res.listadd(@var{A}, @var{B} )
1.2     ! takayama  271: :: リストをベクトルと見て和を求める
1.1       noro      272: @end table
                    273:
                    274: @table @var
                    275: @item A
                    276: @itemx B
1.2     ! takayama  277: リスト
1.1       noro      278: @item return
1.2     ! takayama  279: リスト
1.1       noro      280: @end table
                    281:
                    282: @itemize @bullet
1.2     ! takayama  283: @item ベクトルの和のようにリスト@var{A} とリスト@var{B} の和を求める.
        !           284: @item リスト @var{A} とリスト @var{B} の長さは等しくなくてはいけない.
1.1       noro      285: @end itemize
                    286:
                    287: @example
                    288: [0] f_res.listadd( [1,2,3], [4,5,6] );
                    289: [5,7,9]
                    290: [1] f_res.listadd( [a,b,c], [d,e,f] );
                    291: [a+d,b+e,c+f]
                    292: @end example
                    293:
                    294:
                    295:
                    296:
                    297:
                    298:
                    299:
                    300:
                    301:
                    302:
                    303:
                    304:
1.2     ! takayama  305: @node f_res.start,,, 主な関数
1.1       noro      306: @subsection @code{f_res.start}
                    307: @findex f_res.start
                    308:
                    309: @table @t
                    310: @item f_res.start(@var{N})
1.2     ! takayama  311: :: @code{ox_sres} を起動する
1.1       noro      312: @end table
                    313:
                    314: @table @var
                    315: @item N
1.2     ! takayama  316: 任意
1.1       noro      317: @item return
1.2     ! takayama  318: 整数
1.1       noro      319: @end table
                    320:
                    321: @itemize @bullet
1.2     ! takayama  322: @item パラメータ @var{N} が 1 のときは GMP版, それ以外のときは浮動小数版の新しい OpenXM サーバ @code{ox_sres} を起動し,
        !           323: 他の関数で使われるサーバに設定する.
        !           324: @item 実行ファイルが見つからないときはデバッグモードに入る.
        !           325: @item 返される整数は通信のための識別子 .
1.1       noro      326: @end itemize
                    327:
1.2     ! takayama  328: @node f_res.float,,, 主な関数
1.1       noro      329: @subsection @code{f_res.float}
                    330: @findex f_res.float
                    331:
                    332: @table @t
                    333: @item f_res.float()
1.2     ! takayama  334: :: @code{ox_sres} を起動する
1.1       noro      335: @end table
                    336:
                    337: @table @var
                    338: @item return
1.2     ! takayama  339: 整数
1.1       noro      340: @end table
                    341:
                    342: @itemize @bullet
1.2     ! takayama  343: @item 浮動小数版の OpenXM サーバ @code{ox_sres} が存在しないときは起動し,
        !           344: 他の関数で使われるサーバに設定する.
        !           345: @item 実行ファイルが見つからないときはデバッグモードに入る.
        !           346: @item すでに存在している場合は他の関数で使われるサーバに設定するだけで新たに起動はしない.
        !           347: @item 返される整数は通信のための識別子 .
1.1       noro      348: @end itemize
                    349:
1.2     ! takayama  350: @node f_res.gmp,,, 主な関数
1.1       noro      351: @subsection @code{f_res.gmp}
                    352: @findex f_res.gmp
                    353:
                    354: @table @t
                    355: @item f_res.gmp()
1.2     ! takayama  356: :: @code{ox_sres} を起動する
1.1       noro      357: @end table
                    358:
                    359: @table @var
                    360: @item return
1.2     ! takayama  361: 整数
1.1       noro      362: @end table
                    363:
                    364: @itemize @bullet
1.2     ! takayama  365: @item GMP 版の OpenXM サーバ @code{ox_sres} が存在しないときは起動し,
        !           366: 他の関数で使われるサーバに設定する.
        !           367: @item 実行ファイルが見つからないときはデバッグモードに入る.
        !           368: @item すでに存在している場合は他の関数で使われるサーバに設定するだけで新たに起動はしない.
        !           369: @item 返される整数は通信のための識別子.
1.1       noro      370: @end itemize
                    371:
1.2     ! takayama  372: @node f_res.conv,,, 主な関数
1.1       noro      373: @subsection @code{f_res.conv}
                    374: @findex f_res.conv
                    375:
                    376: @table @t
                    377: @item f_res.conv(@var{List})
1.2     ! takayama  378: :: polytope の凸閉包を求める
1.1       noro      379: @end table
                    380:
                    381: @table @var
                    382: @item return
1.2     ! takayama  383: リストのリスト
1.1       noro      384: @item List
1.2     ! takayama  385: 点を表すリストのリスト
1.1       noro      386: @end table
                    387:
                    388: @itemize @bullet
1.2     ! takayama  389: @item @var{List} で与えられる polytope の凸閉包を求める.
        !           390: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
        !           391: @item 点の座標は整数しか受け付けない.
1.1       noro      392: @end itemize
                    393:
                    394: @example
                    395: [0] f_res.conv( [ [1,1],[0,0],[0,2],[2,0],[2,2] ] );
                    396: [[0,0],[0,2],[2,0],[2,2]]
                    397: @end example
                    398:
1.2     ! takayama  399: @node f_res.support,,, 主な関数
1.1       noro      400: @subsection @code{f_res.support}
                    401: @findex f_res.support
                    402:
                    403: @table @t
                    404: @item f_res.support(@var{Equation},@var{Vars})
1.2     ! takayama  405: ::  多項式の support を返す
1.1       noro      406: @end table
                    407:
                    408: @table @var
                    409: @item return
1.2     ! takayama  410: リストのリスト
1.1       noro      411: @item Equation
1.2     ! takayama  412: 多項式
1.1       noro      413: @item Vars
1.2     ! takayama  414: 不定元のリスト
1.1       noro      415: @end table
                    416:
                    417: @itemize @bullet
1.2     ! takayama  418: @item 不定元を @var{Vars} としたときの多項式 @var{Equation} の support をリストのリストとして返す.
1.1       noro      419: @end itemize
                    420:
                    421: @example
                    422: [0] f_res.support( x^2 + x*y + y^2, [x,y] );
                    423: [[0,2],[1,1],[2,0]]
                    424: [1] f_res.support( x^2 + x*y + y^2, [x,y,z] );
                    425: [[0,2,0],[1,1,0],[2,0,0]]
                    426: @end example
                    427:
1.2     ! takayama  428: @node f_res.np,,, 主な関数
1.1       noro      429: @subsection @code{f_res.np}
                    430: @findex f_res.np
                    431:
                    432: @table @t
                    433: @item f_res.np(@var{Equation},@var{Vars})
1.2     ! takayama  434: :: Newton polytope を返す
1.1       noro      435: @end table
                    436:
                    437: @table @var
                    438: @item return
1.2     ! takayama  439: リストのリスト
1.1       noro      440: @item Equation
1.2     ! takayama  441: 多項式
1.1       noro      442: @item Vars
1.2     ! takayama  443: 不定元のリスト
1.1       noro      444: @end table
                    445:
                    446: @itemize @bullet
1.2     ! takayama  447: @item 不定元を @var{Vars} としたときの多項式 @var{Equation} の Newton polytope をリストのリストとして返す.
        !           448: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
1.1       noro      449: @end itemize
                    450:
                    451:
                    452: @example
                    453: [0] f_res.np( x^2 + x*y + y^2, [x,y] );
                    454: [[0,2],[2,0]]
                    455: [1] f_res.np( x^2 + x*y + y^2, [x,y,z] );
                    456: [[0,2,0],[2,0,0]]
                    457: @end example
                    458:
                    459:
1.2     ! takayama  460: @node f_res.msum,,, 主な関数
1.1       noro      461: @subsection @code{f_res.msum}
                    462: @findex f_res.msum
                    463:
                    464: @table @t
                    465: @item f_res.msum(@var{Polytopes})
1.2     ! takayama  466: :: polytope たちの Minkowski sum を返す
1.1       noro      467: @end table
                    468:
                    469: @table @var
                    470: @item return
1.2     ! takayama  471: リストのリスト
1.1       noro      472: @item Polytopes
1.2     ! takayama  473: リストのリストのリスト
        !           474: @item オプション
1.1       noro      475: @table @var
                    476:  @item conv
1.2     ! takayama  477:  任意.
1.1       noro      478: @end table
                    479: @end table
                    480:
                    481: @itemize @bullet
1.2     ! takayama  482: @item @var{Polytopes} の成分である polytope による
        !           483: Minkowski sum 内のすべての lattice points を求める.
        !           484: @item @var{conv} が 1 のときは Minkowski sum の凸閉包を返す.
        !           485: OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
1.1       noro      486: @end itemize
                    487:
                    488: @example
                    489: [0] Q1 = [[0,0],[1,0],[0,1]]$
                    490: [1] Q2 = [[0,0],[1,0],[0,1],[1,1]]$
                    491: [2] f_res.msum( [Q1,Q1] );
                    492: [[0,0],[0,1],[0,2],[1,0],[1,1],[2,0]]
                    493: [3] f_res.msum( [Q1,Q1] | conv=1 );
                    494: [[0,0],[0,2],[2,0]]
                    495: [4] f_res.msum( [Q1,Q1,Q1] | conv=1 );
                    496: [[0,0],[0,3],[3,0]]
                    497: [5] f_res.msum( [Q1,Q2] );
                    498: [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1]]
                    499: [6] f_res.msum( [Q1,Q2] | conv=1 );
                    500: [[0,0],[0,2],[1,2],[2,0],[2,1]]
                    501: @end example
                    502:
                    503:
1.2     ! takayama  504: @node f_res.mvol,,, 主な関数
1.1       noro      505: @subsection @code{f_res.mvol}
                    506: @findex f_res.mvol
                    507:
                    508: @table @t
                    509: @item f_res.mvol(@var{Polytopes})
1.2     ! takayama  510: :: polytope たちの mixed volume を求める
1.1       noro      511: @end table
                    512:
                    513: @table @var
                    514: @item return
1.2     ! takayama  515: 整数
1.1       noro      516: @item Polytopes
1.2     ! takayama  517: リストのリストのリスト
1.1       noro      518: @end table
                    519:
                    520: @itemize @bullet
1.2     ! takayama  521: @item var{Polytopes} の成分である polytope による mixed volume を求める.
        !           522: @item Mixed volume の定義から polytope の次元と数は等しい必要がある.
        !           523: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
1.1       noro      524: @end itemize
                    525:
                    526: @example
                    527: [0] Q1 = [[0,0],[1,0],[0,1]]$
                    528: [1] Q2 = [[0,0],[1,0],[0,1],[1,1]]$
                    529: [2] f_res.mvol( [Q1,Q1] );
                    530: 1
                    531: [3] f_res.mvol( [Q1,Q2] );
                    532: 2
                    533: [4] f_res.mvol( [Q2,Q2] );
                    534: 2
                    535: @end example
                    536:
                    537:
1.2     ! takayama  538: @node f_res.sres,,, 主な関数
1.1       noro      539: @subsection @code{f_res.sres}
                    540: @findex f_res.sres
                    541:
                    542: @table @t
                    543: @item f_res.sres(@var{Equations},@var{Vars})
1.2     ! takayama  544: :: sparse resultant の多項式倍を返す
1.1       noro      545: @end table
                    546:
                    547: @table @var
                    548: @item return
1.2     ! takayama  549: 多項式
1.1       noro      550: @item Equations
1.2     ! takayama  551: 多項式のリスト
1.1       noro      552: @item Vars
1.2     ! takayama  553: 不定元のリスト
        !           554: @item オプション
1.1       noro      555: @table @var
                    556:  @item v
1.2     ! takayama  557:  リスト
1.1       noro      558:  @item p
1.2     ! takayama  559:  素数
1.1       noro      560:  @item sub
1.2     ! takayama  561:  リスト
1.1       noro      562: @end table
                    563: @end table
                    564:
                    565: @itemize @bullet
1.2     ! takayama  566: @item @var{Equations} の成分の多項式による不定元を @var{Vars} としたとき Incremental algorithm で計算した resultant の多項式倍を返す.
1.1       noro      567:
1.2     ! takayama  568: @item オプション @var{v} は v-distance を表すリストで, 定義されていない場合は
        !           569: [11,12,13,@dots{}]$ が使われる.
1.1       noro      570:
1.2     ! takayama  571: @item 行列の rank の計算は GF(@var{p}) 上で行なわれ,
        !           572: 行列の中の不定元にはオプションで @var{sub} で指定される
        !           573: リストの要素が前から順に代入され評価される.
        !           574: ここで @var{p} はオプションの @var{p} である.
        !           575: 素数 @var{p} が指定されていない場合は 65521 が使われ,
        !           576: リスト @var{sub} が指定されていない場合は 53,59,@dots{} の素数が使われる.
1.1       noro      577:
1.2     ! takayama  578: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
1.1       noro      579: @end itemize
                    580:
                    581: @example
                    582: [0] F0 = a1*x + a2*y + a3$
                    583: [1] F1 = b1*x + b2*y + b3$
                    584: [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$
                    585: [3] R = f_res.sres( [F0,F1,F2], [x,y] );
                    586: (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
                    587: 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
                    588: 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
                    589: +(c2*b2*b1^2-c4*b2^2*b1+c1*b2^3)*a3^2
                    590: [4] fctr( R );
                    591: [[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
                    592: 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
                    593: ^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
                    594: )*a3^2,1]]
                    595: @end example
                    596:
1.2     ! takayama  597: @node f_res.dres f_res.dresM,,, 主な関数
1.1       noro      598: @subsection @code{f_res.dres}, @code{f_res.dresM}
                    599: @findex f_res.dres
                    600: @findex f_res.dresM
                    601:
                    602: @table @t
                    603: @item f_res.dres(@var{Equations},@var{Vars})
1.2     ! takayama  604: :: Dixon resultant を返す
1.1       noro      605: @item f_res.dresM(@var{Equations},@var{Vars})
1.2     ! takayama  606: :: 行列式が Dixon resultant になるような行列を返す
1.1       noro      607: @end table
                    608:
                    609: @table @var
                    610: @item return
                    611: @table @t
                    612:  @item f_res.dres
1.2     ! takayama  613:  多項式
1.1       noro      614:  @item f_res.dresM
1.2     ! takayama  615:  行列
1.1       noro      616: @end table
                    617: @item Equaitons
1.2     ! takayama  618: 多項式のリスト
1.1       noro      619: @item Vars
1.2     ! takayama  620: 不定元のリスト
        !           621: @item オプション
1.1       noro      622: @table @var
                    623:  @item norsc
1.2     ! takayama  624:  任意
1.1       noro      625:  @item rowidx
1.2     ! takayama  626:  配列
1.1       noro      627:  @item colidx
1.2     ! takayama  628:  配列
1.1       noro      629:  @item p
1.2     ! takayama  630:  素数
1.1       noro      631:  @item sub
1.2     ! takayama  632:  リスト
1.1       noro      633: @end table
                    634: @end table
                    635:
                    636:
                    637: @itemize @bullet
1.2     ! takayama  638: @item @var{Equations} の 成分の多項式による不定元を @var{Vars}
        !           639: としたとき Dixon の方法で @code{f_res.dres} は resultant の多項式倍を,
        !           640: @code{f_res.dresM} は resultant の多項式倍を行列式にもつ行列を返す.
1.1       noro      641:
1.2     ! takayama  642: @item Rank Submatrix Construction を行ないたくないときは
        !           643: オプション @var{norsc} を 1 に設定する.
1.1       noro      644:
1.2     ! takayama  645: @item この関数は内部で関数 @code{f_res.submatrix} を呼び出しているので,
        !           646: そのためのオプションはすべて受け付ける.
1.1       noro      647: @end itemize
                    648:
                    649: @example
                    650: [0] F0 = a1*x + a2*y + a3$
                    651: [1] F1 = b1*x + b2*y + b3$
                    652: [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$
                    653: [3] f_res.dresM( [F0,F1,F2], [x,y] );
                    654: [ c1*b3*a2-c1*b2*a3 -c2*b3*a1+c4*b3*a2+(c2*b1-c4*b2)*a3 (c3*b2-c6*b3)*a1+(-c3*b
                    655: 1+c5*b3)*a2+(c6*b1-c5*b2)*a3 ]
                    656: [ 0 -c2*b2*a1+c2*b1*a2 -c2*b3*a1+c2*b1*a3 ]
                    657: [ -c1*b2*a1+c1*b1*a2 -c4*b2*a1+c4*b1*a2 -c4*b3*a1+c1*b3*a2+(c4*b1-c1*b2)*a3 ]
                    658: [4] R = dres( [F0,F1,F2], [x,y] );
                    659: (-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*
                    660: 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*
                    661: 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
                    662: 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^
                    663: 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
                    664: 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
                    665: 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
                    666: ^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)*
                    667: a3^2*a2
                    668: [5] fctr(R);
                    669: [[-1,1],[c2,1],[c1,1],[b2*a1-b1*a2,1],[(c3*b2^2-c6*b3*b2+c2*b3^2)*a1^2+(((-2*c3
                    670: *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
                    671: +(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+(
                    672: c2*b1^2-c4*b2*b1+c1*b2^2)*a3^2,1]]
                    673: @end example
                    674:
                    675:
1.2     ! takayama  676: @node f_res.dixonpolynomial,,, 主な関数
1.1       noro      677: @subsection @code{f_res.dixonpolynomial}
                    678: @findex f_res.dixonpolynomial
                    679:
                    680: @table @t
                    681: @item f_res.dixonpolynomial(@var{Equations},@var{Vars})
1.2     ! takayama  682: :: Dixon polynomial を返す
1.1       noro      683: @end table
                    684:
                    685: @table @var
                    686: @item return
1.2     ! takayama  687: リスト
1.1       noro      688: @item Equaitons
1.2     ! takayama  689: 多項式のリスト
1.1       noro      690: @item Vars
1.2     ! takayama  691: 不定元のリスト
1.1       noro      692: @end table
                    693:
                    694: @itemize @bullet
1.2     ! takayama  695: @var{Equations} の 成分の多項式による不定元を @var{Vars}
        !           696: としたときの Dixon polynomial を計算し,
        !           697: @code{[ (Dixon polynomial), (新しい変数の配列) ]} というリストを返す.
        !           698: 新しい変数は関数 @code{uc} によって生成された不定元である.
        !           699: 多項式の数は変数の数よりも一つ多い必要がある.
1.1       noro      700: @end itemize
                    701:
                    702: @example
                    703: [0] F0 = a1*x + a2*y + a3$
                    704: [1] F1 = b1*x + b2*y + b3$
                    705: [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$
                    706: [3] f_res.dixonpolynomial( [F0,F1,F2], [x,y] );
                    707: [(-_0*c1*b2*a1+(_0*c1*b1+c1*b3)*a2-c1*b2*a3)*x+(((-_1*c2-_0*c4)*b2-c2*b3)*a1+((
                    708: _1*c2+_0*c4)*b1+c4*b3)*a2+(c2*b1-c4*b2)*a3)*y+(c3*b2+(-_1*c2-_0*c4-c6)*b3)*a1+(
                    709: -c3*b1+(_0*c1+c5)*b3)*a2+((_1*c2+_0*c4+c6)*b1+(-_0*c1-c5)*b2)*a3,[ _0 _1 ]]
                    710: @end example
                    711:
                    712:
1.2     ! takayama  713: @node f_res.matrixdecomp,,, 主な関数
1.1       noro      714: @subsection @code{f_res.matrixdecomp}
                    715: @findex f_res.matrixdecomp
                    716:
                    717: @table @t
                    718: @item f_res.matrixdecomp( @var{Dpoly}, @var{UC}, @var{Vars} )
1.2     ! takayama  719: :: Dixon polynomial を行列に分解する.
1.1       noro      720: @end table
                    721:
                    722: @table @var
                    723: @item return
1.2     ! takayama  724: リスト
1.1       noro      725: @item Dpoly
1.2     ! takayama  726: 多項式
1.1       noro      727: @item UC
1.2     ! takayama  728: 配列
1.1       noro      729: @item Vars
1.2     ! takayama  730: リスト
1.1       noro      731: @end table
                    732:
                    733: @itemize @bullet
1.2     ! takayama  734: @item dixonpolynomial @var{Dpoly} を行が @var{UC} の monomial,
        !           735: 列が @var{Vars} の monomial で添字付けられる行列に分解する.
        !           736: @item 戻り値は,
        !           737: @code{[ (@var{UC} の monomial の配列),(行列),(@var{Vars} の monomial の配列) ]}
        !           738: という形で,それぞれ@var{sigma_P = V D_P W} の @var{V}, @var{D_P}, @var{W} を表す.
1.1       noro      739: @end itemize
                    740:
                    741: @example
                    742: [0] F0 = a1*x + a2*y + a3$
                    743: [1] F1 = b1*x + b2*y + b3$
                    744: [2] F2 = c1*x^2 + c2*y^2 + c3 + c4*x*y + c5*x + c6*y$
                    745: [3] D = f_res.dixonpolynomial( [F0,F1,F2], [x,y] )$
                    746: [4] M = f_res.matrixdecomp( D[0], D[1], [x,y] );
                    747: [[ 1 _1 _0 ],[ c1*b3*a2-c1*b2*a3 -c2*b3*a1+c4*b3*a2+(c2*b1-c4*b2)*a3 (c3*b2-c6*
                    748: b3)*a1+(-c3*b1+c5*b3)*a2+(c6*b1-c5*b2)*a3 ]
                    749: [ 0 -c2*b2*a1+c2*b1*a2 -c2*b3*a1+c2*b1*a3 ]
                    750: [ -c1*b2*a1+c1*b1*a2 -c4*b2*a1+c4*b1*a2 -c4*b3*a1+c1*b3*a2+(c4*b1-c1*b2)*a3 ],[
                    751:  x y 1 ]]
                    752: [5] V = M[0]*M[1]$
                    753: [6] D[0] == V[0]*M[2][0]+V[1]*M[2][1]+V[2]*M[2][2];
                    754: 1
                    755: @end example
                    756:
                    757:
1.2     ! takayama  758: @node f_res.submatrix,,, 主な関数
1.1       noro      759: @subsection @code{f_res.submatrix}
                    760: @findex f_res.submatrix
                    761:
                    762: @table @t
                    763: @item f_res.submatrix( @var{Matrix} )
1.2     ! takayama  764: :: 引数である行列の rank を持つ部分行列を返す.
1.1       noro      765: @end table
                    766:
                    767: @table @var
                    768: @item return
1.2     ! takayama  769: 行列
1.1       noro      770: @item Matrix
1.2     ! takayama  771: 行列
        !           772: @item オプション
1.1       noro      773: @table @var
                    774:  @item rowidx
1.2     ! takayama  775:  配列
1.1       noro      776:  @item colidx
1.2     ! takayama  777:  配列
1.1       noro      778:  @item p
1.2     ! takayama  779:  素数
1.1       noro      780:  @item sub
1.2     ! takayama  781:  リスト
1.1       noro      782: @end table
                    783: @end table
                    784:
                    785: @itemize @bullet
1.2     ! takayama  786: @item 行列 @var{Matrix} の rank を持つ部分行列を返す.
1.1       noro      787:
1.2     ! takayama  788: @item 行列の rank の計算で行列の中の不定元にはリスト @var{sub}
        !           789: の値が前から順に代入され GF(@var{p}) で評価される.
        !           790: ここで @var{p} はオプションの @var{p} が使われる.
1.1       noro      791:
1.2     ! takayama  792: @item 与えられた行列が正則ではないとき部分行列は一意に定まらない.
        !           793: そこでどの行列を指定するかというのを配列 @var{rowidx,colidx} で行なう.
        !           794: 実際には行列 @var{Matrix}の (i,j) 成分を (@var{rowidx}[i],@var{colidx}[j])
        !           795:  成分と入れ換えているだけである.
1.1       noro      796:
1.2     ! takayama  797: @item 素数 @var{p} が指定されていない場合は 65521 が使われ,
        !           798: リスト @var{sub} が指定されていない場合は 53,59,dots{} の素数が使われる.
1.1       noro      799: @end itemize
                    800:
                    801: @example
                    802: [0] M = newmat( 3, 3, [[1,0,0],[0,a,0],[0,b,0]] );
                    803: [ 1 0 0 ]
                    804: [ 0 a 0 ]
                    805: [ 0 b 0 ]
                    806: [1] f_res.submatrix( M );
                    807: [ 1 0 ]
                    808: [ 0 a ]
                    809: [2] f_res.submatrix( M | rowidx=ltov([0,2,1]) );
                    810: [ 1 0 ]
                    811: [ 0 b ]
                    812: @end example
                    813:
1.2     ! takayama  814: @comment --- おまじない ---
1.1       noro      815: @node Index,,, Top
                    816: @unnumbered Index
                    817: @printindex fn
                    818: @printindex cp
                    819: @iftex
                    820: @vfill @eject
                    821: @end iftex
                    822: @summarycontents
                    823: @contents
                    824: @bye
1.2     ! takayama  825: @comment --- おまじない終り ---
1.1       noro      826:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>