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

1.1     ! noro        1: \input texinfo
        !             2: @comment $OpenXM$
        !             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
        !            22: @comment --- おまじない終り ---
        !            23:
        !            24: @comment --- GNU info ファイルの名前 ---
        !            25: @setfilename asir-contrib-f_res
        !            26:
        !            27: @comment --- タイトル ---
        !            28: @settitle Risa/Asir 終結式計算パッケージ @code{f_res}
        !            29:
        !            30: @comment %**end of header
        !            31: @comment %@setchapternewpage odd
        !            32:
        !            33: @comment --- おまじない ---
        !            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
        !            45: @comment --- おまじない終り ---
        !            46:
        !            47: @comment --- タイトル, バージョン, 著者名, 著作権表示 ---
        !            48: @title Risa/Asir 終結式計算パッケージ @code{f_res} 説明書
        !            49: @subtitle 利用説明書
        !            50: @subtitle 1.0 版
        !            51: @subtitle 2005 年 6 月
        !            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:
        !            60: @comment --- おまじない ---
        !            61: @synindex vr fn
        !            62: @comment --- おまじない終り ---
        !            63:
        !            64: @comment --- @node は GNU info, HTML 用 ---
        !            65: @comment --- @node  の引数は node-name,  next,  previous,  up ---
        !            66: @node Top,, (dir), (dir)
        !            67:
        !            68: @menu
        !            69: * 関数マニュアル::
        !            70: * Index::
        !            71: @end menu
        !            72:
        !            73: @node 関数マニュアル,,, Top
        !            74: @chapter 関数マニュアル
        !            75:
        !            76: @menu
        !            77: * 概要::
        !            78: * Notation::
        !            79: * 主な関数::
        !            80: @end menu
        !            81:
        !            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: ことで行う.
        !           115:
        !           116:
        !           117:
        !           118: @node Notation,,,関数マニュアル
        !           119: @section Notation
        !           120:
        !           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 主な関数
        !           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:
        !           147: @node intersect,,, 主な関数
        !           148:
        !           149: @node f_res.mres f_res.mresM,,, 主な関数
        !           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} )
        !           156: :: Multipolynomial resultant の多項式倍を返す
        !           157: @item f_res.mresM(@var{Equations}, @var{Vars} )
        !           158: :: 行列式が @code{f_res.mres} が返す値になるような行列を返す
        !           159: @end table
        !           160:
        !           161: @table @var
        !           162: @item return
        !           163: @table @t
        !           164:  @item f_res.mres
        !           165:  多項式もしくは 0
        !           166:  @item f_res.mresM
        !           167:  行列
        !           168: @end table
        !           169: @item Equaitons
        !           170: 多項式のリスト
        !           171: @item Vars
        !           172: 変数のリスト.
        !           173: @item オプション
        !           174: @table @t
        !           175:  @item rsc
        !           176:  任意
        !           177:  @item rowidx
        !           178:  配列
        !           179:  @item colidx
        !           180:  配列
        !           181:  @item p
        !           182:  素数
        !           183:  @item sub
        !           184:  リスト
        !           185: @end table
        !           186: @end table
        !           187:
        !           188: @itemize @bullet
        !           189: @item @var{Equations} の成分の多項式による不定元を @var{Vars}
        !           190: としたとき斉次多項式の場合の方法で @code{f_res.mres} は resultant の多項式倍
        !           191: を, @code{f_res.mresM} は resultant の多項式倍を行列式にもつ行列を返す.
        !           192:
        !           193: @item @var{Equations} の成分の多項式は内部で自動的に斉次化されているから,斉次多項式である必要はない.
        !           194:
        !           195: @item Rank Submatrix Construction を行ないたいときは
        !           196: オプション @code{rsc} を 1 に設定する.  その場合,この関数は内部で関数
        !           197: @code{f_res.submatrix} を呼び出しているので, そのためのオプションはす
        !           198: べて受け付ける.
        !           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:
        !           225: @node f_res.indexof,,, 主な関数
        !           226: @subsection @code{f_res.indexof}
        !           227: @findex f_res.indexof
        !           228:
        !           229: @table @t
        !           230: @item f_res.indexof(@var{Element}, @var{List} )
        !           231: :: リスト中に要素が最初に現れる位置を返す
        !           232: @end table
        !           233:
        !           234: @table @var
        !           235: @item Element
        !           236: 検索したい要素
        !           237: @item List
        !           238: 検索対象のリスト
        !           239: @item return
        !           240: @var{List} で最初に現れる @var{Element} のインデックス番号.
        !           241: @var{List} に @var{Element} が現れない場合は整数 -1.
        !           242: @end table
        !           243:
        !           244: @itemize @bullet
        !           245: @item @var{List} で最初に現れる @var{Element} のインデックス番号を返す.
        !           246: @var{List} に @var{Element} が現れない場合は -1 を返す.
        !           247:
        !           248: @item @var{Element} の型は何であっても構わない.
        !           249:
        !           250: @item 関数 @code{flist} と組み合わせると,ある関数が Asir に
        !           251: 入っているかが分かる.
        !           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:
        !           265: @node f_res.listadd,,, 主な関数
        !           266: @subsection @code{f_res.listadd}
        !           267: @findex f_res.listadd
        !           268:
        !           269: @table @t
        !           270: @item f_res.listadd(@var{A}, @var{B} )
        !           271: :: リストをベクトルと見て和を求める
        !           272: @end table
        !           273:
        !           274: @table @var
        !           275: @item A
        !           276: @itemx B
        !           277: リスト
        !           278: @item return
        !           279: リスト
        !           280: @end table
        !           281:
        !           282: @itemize @bullet
        !           283: @item ベクトルの和のようにリスト@var{A} とリスト@var{B} の和を求める.
        !           284: @item リスト @var{A} とリスト @var{B} の長さは等しくなくてはいけない.
        !           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:
        !           305: @node f_res.start,,, 主な関数
        !           306: @subsection @code{f_res.start}
        !           307: @findex f_res.start
        !           308:
        !           309: @table @t
        !           310: @item f_res.start(@var{N})
        !           311: :: @code{ox_sres} を起動する
        !           312: @end table
        !           313:
        !           314: @table @var
        !           315: @item N
        !           316: 任意
        !           317: @item return
        !           318: 整数
        !           319: @end table
        !           320:
        !           321: @itemize @bullet
        !           322: @item パラメータ @var{N} が 1 のときは GMP版, それ以外のときは浮動小数版の新しい OpenXM サーバ @code{ox_sres} を起動し,
        !           323: 他の関数で使われるサーバに設定する.
        !           324: @item 実行ファイルが見つからないときはデバッグモードに入る.
        !           325: @item 返される整数は通信のための識別子 .
        !           326: @end itemize
        !           327:
        !           328: @node f_res.float,,, 主な関数
        !           329: @subsection @code{f_res.float}
        !           330: @findex f_res.float
        !           331:
        !           332: @table @t
        !           333: @item f_res.float()
        !           334: :: @code{ox_sres} を起動する
        !           335: @end table
        !           336:
        !           337: @table @var
        !           338: @item return
        !           339: 整数
        !           340: @end table
        !           341:
        !           342: @itemize @bullet
        !           343: @item 浮動小数版の OpenXM サーバ @code{ox_sres} が存在しないときは起動し,
        !           344: 他の関数で使われるサーバに設定する.
        !           345: @item 実行ファイルが見つからないときはデバッグモードに入る.
        !           346: @item すでに存在している場合は他の関数で使われるサーバに設定するだけで新たに起動はしない.
        !           347: @item 返される整数は通信のための識別子 .
        !           348: @end itemize
        !           349:
        !           350: @node f_res.gmp,,, 主な関数
        !           351: @subsection @code{f_res.gmp}
        !           352: @findex f_res.gmp
        !           353:
        !           354: @table @t
        !           355: @item f_res.gmp()
        !           356: :: @code{ox_sres} を起動する
        !           357: @end table
        !           358:
        !           359: @table @var
        !           360: @item return
        !           361: 整数
        !           362: @end table
        !           363:
        !           364: @itemize @bullet
        !           365: @item GMP 版の OpenXM サーバ @code{ox_sres} が存在しないときは起動し,
        !           366: 他の関数で使われるサーバに設定する.
        !           367: @item 実行ファイルが見つからないときはデバッグモードに入る.
        !           368: @item すでに存在している場合は他の関数で使われるサーバに設定するだけで新たに起動はしない.
        !           369: @item 返される整数は通信のための識別子.
        !           370: @end itemize
        !           371:
        !           372: @node f_res.conv,,, 主な関数
        !           373: @subsection @code{f_res.conv}
        !           374: @findex f_res.conv
        !           375:
        !           376: @table @t
        !           377: @item f_res.conv(@var{List})
        !           378: :: polytope の凸閉包を求める
        !           379: @end table
        !           380:
        !           381: @table @var
        !           382: @item return
        !           383: リストのリスト
        !           384: @item List
        !           385: 点を表すリストのリスト
        !           386: @end table
        !           387:
        !           388: @itemize @bullet
        !           389: @item @var{List} で与えられる polytope の凸閉包を求める.
        !           390: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
        !           391: @item 点の座標は整数しか受け付けない.
        !           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:
        !           399: @node f_res.support,,, 主な関数
        !           400: @subsection @code{f_res.support}
        !           401: @findex f_res.support
        !           402:
        !           403: @table @t
        !           404: @item f_res.support(@var{Equation},@var{Vars})
        !           405: ::  多項式の support を返す
        !           406: @end table
        !           407:
        !           408: @table @var
        !           409: @item return
        !           410: リストのリスト
        !           411: @item Equation
        !           412: 多項式
        !           413: @item Vars
        !           414: 不定元のリスト
        !           415: @end table
        !           416:
        !           417: @itemize @bullet
        !           418: @item 不定元を @var{Vars} としたときの多項式 @var{Equation} の support をリストのリストとして返す.
        !           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:
        !           428: @node f_res.np,,, 主な関数
        !           429: @subsection @code{f_res.np}
        !           430: @findex f_res.np
        !           431:
        !           432: @table @t
        !           433: @item f_res.np(@var{Equation},@var{Vars})
        !           434: :: Newton polytope を返す
        !           435: @end table
        !           436:
        !           437: @table @var
        !           438: @item return
        !           439: リストのリスト
        !           440: @item Equation
        !           441: 多項式
        !           442: @item Vars
        !           443: 不定元のリスト
        !           444: @end table
        !           445:
        !           446: @itemize @bullet
        !           447: @item 不定元を @var{Vars} としたときの多項式 @var{Equation} の Newton polytope をリストのリストとして返す.
        !           448: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
        !           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:
        !           460: @node f_res.msum,,, 主な関数
        !           461: @subsection @code{f_res.msum}
        !           462: @findex f_res.msum
        !           463:
        !           464: @table @t
        !           465: @item f_res.msum(@var{Polytopes})
        !           466: :: polytope たちの Minkowski sum を返す
        !           467: @end table
        !           468:
        !           469: @table @var
        !           470: @item return
        !           471: リストのリスト
        !           472: @item Polytopes
        !           473: リストのリストのリスト
        !           474: @item オプション
        !           475: @table @var
        !           476:  @item conv
        !           477:  任意.
        !           478: @end table
        !           479: @end table
        !           480:
        !           481: @itemize @bullet
        !           482: @item @var{Polytopes} の成分である polytope による
        !           483: Minkowski sum 内のすべての lattice points を求める.
        !           484: @item @var{conv} が 1 のときは Minkowski sum の凸閉包を返す.
        !           485: OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
        !           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:
        !           504: @node f_res.mvol,,, 主な関数
        !           505: @subsection @code{f_res.mvol}
        !           506: @findex f_res.mvol
        !           507:
        !           508: @table @t
        !           509: @item f_res.mvol(@var{Polytopes})
        !           510: :: polytope たちの mixed volume を求める
        !           511: @end table
        !           512:
        !           513: @table @var
        !           514: @item return
        !           515: 整数
        !           516: @item Polytopes
        !           517: リストのリストのリスト
        !           518: @end table
        !           519:
        !           520: @itemize @bullet
        !           521: @item var{Polytopes} の成分である polytope による mixed volume を求める.
        !           522: @item Mixed volume の定義から polytope の次元と数は等しい必要がある.
        !           523: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
        !           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:
        !           538: @node f_res.sres,,, 主な関数
        !           539: @subsection @code{f_res.sres}
        !           540: @findex f_res.sres
        !           541:
        !           542: @table @t
        !           543: @item f_res.sres(@var{Equations},@var{Vars})
        !           544: :: sparse resultant の多項式倍を返す
        !           545: @end table
        !           546:
        !           547: @table @var
        !           548: @item return
        !           549: 多項式
        !           550: @item Equations
        !           551: 多項式のリスト
        !           552: @item Vars
        !           553: 不定元のリスト
        !           554: @item オプション
        !           555: @table @var
        !           556:  @item v
        !           557:  リスト
        !           558:  @item p
        !           559:  素数
        !           560:  @item sub
        !           561:  リスト
        !           562: @end table
        !           563: @end table
        !           564:
        !           565: @itemize @bullet
        !           566: @item @var{Equations} の成分の多項式による不定元を @var{Vars} としたとき Incremental algorithm で計算した resultant の多項式倍を返す.
        !           567:
        !           568: @item オプション @var{v} は v-distance を表すリストで, 定義されていない場合は
        !           569: [11,12,13,@dots{}]$ が使われる.
        !           570:
        !           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{} の素数が使われる.
        !           577:
        !           578: @item OpenXM サーバ @code{ox_sres} が存在しないときは浮動小数版を起動する.
        !           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:
        !           597: @node f_res.dres f_res.dresM,,, 主な関数
        !           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})
        !           604: :: Dixon resultant を返す
        !           605: @item f_res.dresM(@var{Equations},@var{Vars})
        !           606: :: 行列式が Dixon resultant になるような行列を返す
        !           607: @end table
        !           608:
        !           609: @table @var
        !           610: @item return
        !           611: @table @t
        !           612:  @item f_res.dres
        !           613:  多項式
        !           614:  @item f_res.dresM
        !           615:  行列
        !           616: @end table
        !           617: @item Equaitons
        !           618: 多項式のリスト
        !           619: @item Vars
        !           620: 不定元のリスト
        !           621: @item オプション
        !           622: @table @var
        !           623:  @item norsc
        !           624:  任意
        !           625:  @item rowidx
        !           626:  配列
        !           627:  @item colidx
        !           628:  配列
        !           629:  @item p
        !           630:  素数
        !           631:  @item sub
        !           632:  リスト
        !           633: @end table
        !           634: @end table
        !           635:
        !           636:
        !           637: @itemize @bullet
        !           638: @item @var{Equations} の 成分の多項式による不定元を @var{Vars}
        !           639: としたとき Dixon の方法で @code{f_res.dres} は resultant の多項式倍を,
        !           640: @code{f_res.dresM} は resultant の多項式倍を行列式にもつ行列を返す.
        !           641:
        !           642: @item Rank Submatrix Construction を行ないたくないときは
        !           643: オプション @var{norsc} を 1 に設定する.
        !           644:
        !           645: @item この関数は内部で関数 @code{f_res.submatrix} を呼び出しているので,
        !           646: そのためのオプションはすべて受け付ける.
        !           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:
        !           676: @node f_res.dixonpolynomial,,, 主な関数
        !           677: @subsection @code{f_res.dixonpolynomial}
        !           678: @findex f_res.dixonpolynomial
        !           679:
        !           680: @table @t
        !           681: @item f_res.dixonpolynomial(@var{Equations},@var{Vars})
        !           682: :: Dixon polynomial を返す
        !           683: @end table
        !           684:
        !           685: @table @var
        !           686: @item return
        !           687: リスト
        !           688: @item Equaitons
        !           689: 多項式のリスト
        !           690: @item Vars
        !           691: 不定元のリスト
        !           692: @end table
        !           693:
        !           694: @itemize @bullet
        !           695: @var{Equations} の 成分の多項式による不定元を @var{Vars}
        !           696: としたときの Dixon polynomial を計算し,
        !           697: @code{[ (Dixon polynomial), (新しい変数の配列) ]} というリストを返す.
        !           698: 新しい変数は関数 @code{uc} によって生成された不定元である.
        !           699: 多項式の数は変数の数よりも一つ多い必要がある.
        !           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:
        !           713: @node f_res.matrixdecomp,,, 主な関数
        !           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} )
        !           719: :: Dixon polynomial を行列に分解する.
        !           720: @end table
        !           721:
        !           722: @table @var
        !           723: @item return
        !           724: リスト
        !           725: @item Dpoly
        !           726: 多項式
        !           727: @item UC
        !           728: 配列
        !           729: @item Vars
        !           730: リスト
        !           731: @end table
        !           732:
        !           733: @itemize @bullet
        !           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} を表す.
        !           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:
        !           758: @node f_res.submatrix,,, 主な関数
        !           759: @subsection @code{f_res.submatrix}
        !           760: @findex f_res.submatrix
        !           761:
        !           762: @table @t
        !           763: @item f_res.submatrix( @var{Matrix} )
        !           764: :: 引数である行列の rank を持つ部分行列を返す.
        !           765: @end table
        !           766:
        !           767: @table @var
        !           768: @item return
        !           769: 行列
        !           770: @item Matrix
        !           771: 行列
        !           772: @item オプション
        !           773: @table @var
        !           774:  @item rowidx
        !           775:  配列
        !           776:  @item colidx
        !           777:  配列
        !           778:  @item p
        !           779:  素数
        !           780:  @item sub
        !           781:  リスト
        !           782: @end table
        !           783: @end table
        !           784:
        !           785: @itemize @bullet
        !           786: @item 行列 @var{Matrix} の rank を持つ部分行列を返す.
        !           787:
        !           788: @item 行列の rank の計算で行列の中の不定元にはリスト @var{sub}
        !           789: の値が前から順に代入され GF(@var{p}) で評価される.
        !           790: ここで @var{p} はオプションの @var{p} が使われる.
        !           791:
        !           792: @item 与えられた行列が正則ではないとき部分行列は一意に定まらない.
        !           793: そこでどの行列を指定するかというのを配列 @var{rowidx,colidx} で行なう.
        !           794: 実際には行列 @var{Matrix}の (i,j) 成分を (@var{rowidx}[i],@var{colidx}[j])
        !           795:  成分と入れ換えているだけである.
        !           796:
        !           797: @item 素数 @var{p} が指定されていない場合は 65521 が使われ,
        !           798: リスト @var{sub} が指定されていない場合は 53,59,dots{} の素数が使われる.
        !           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:
        !           814: @comment --- おまじない ---
        !           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
        !           825: @comment --- おまじない終り ---
        !           826:

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