[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.3

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

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