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

Annotation of OpenXM/src/asir-contrib/packages/doc/noro_matrix/noro_matrix-ja.texi, Revision 1.5

1.5     ! takayama    1: %comment $OpenXM: OpenXM/src/asir-contrib/packages/doc/noro_matrix/noro_matrix-ja.texi,v 1.4 2017/03/30 06:16:36 takayama Exp $
1.4       takayama    2: %comment --- おまじない ---
1.5     ! takayama    3: \input texinfo-ja
1.1       noro        4: @iftex
                      5: @catcode`@#=6
                      6: @def@fref#1{@xrefX[#1,,@code{#1},,,]}
                      7: @def@b#1{{@bf@gt #1}}
                      8: @catcode`@#=@other
                      9: @end iftex
                     10: @overfullrule=0pt
1.5     ! takayama   11: @documentlanguage ja
1.1       noro       12: @c -*-texinfo-*-
                     13: @comment %**start of header
1.4       takayama   14: @comment --- おまじない終り ---
1.1       noro       15:
1.4       takayama   16: @comment --- GNU info ファイルの名前 ---
1.1       noro       17: @setfilename asir-contrib-noro_matrix
                     18:
1.4       takayama   19: @comment --- タイトル ---
1.1       noro       20: @settitle noro_matrix
                     21:
                     22: @comment %**end of header
                     23: @comment %@setchapternewpage odd
                     24:
1.4       takayama   25: @comment --- おまじない ---
1.1       noro       26: @ifinfo
                     27: @macro fref{name}
                     28: @ref{\name\,,@code{\name\}}
                     29: @end macro
                     30: @end ifinfo
                     31:
                     32: @iftex
                     33: @comment @finalout
                     34: @end iftex
                     35:
                     36: @titlepage
1.4       takayama   37: @comment --- おまじない終り ---
1.1       noro       38:
1.4       takayama   39: @comment --- タイトル, バージョン, 著者名, 著作権表示 ---
1.1       noro       40: @title noro_matrix
                     41: @subtitle noro_matrix User's Manual
                     42: @subtitle Edition 1.0
                     43: @subtitle May 2008
                     44:
                     45: @author  by Masayuki Noro
                     46: @page
                     47: @vskip 0pt plus 1filll
                     48: Copyright @copyright{} Masayuki Noro
                     49: 2008. All rights reserved.
                     50: @end titlepage
                     51:
1.4       takayama   52: @comment --- おまじない ---
1.1       noro       53: @synindex vr fn
1.4       takayama   54: @comment --- おまじない終り ---
1.1       noro       55:
1.4       takayama   56: @comment --- @node は GNU info, HTML 用 ---
                     57: @comment --- @node  の引数は node-name,  next,  previous,  up ---
1.1       noro       58: @node Top,, (dir), (dir)
                     59:
1.4       takayama   60: @comment --- @menu は GNU info, HTML 用 ---
                     61: @comment --- chapter 名を正確に並べる ---
1.1       noro       62: @menu
1.4       takayama   63: * 行列演算パッケージ noro_matrix.rr::
1.1       noro       64: * Index::
                     65: @end menu
                     66:
1.4       takayama   67: @comment --- chapter の開始 ---
                     68: @comment --- 親 chapter 名を正確に ---
                     69: @node 行列演算パッケージ noro_matrix.rr,,, Top
                     70: @chapter 行列演算パッケージ noro_matrix.rr
1.1       noro       71:
1.4       takayama   72: @comment --- section 名を正確に並べる ---
1.1       noro       73: @menu
1.4       takayama   74: * 行列に関する函数::
1.1       noro       75: @end menu
                     76:
1.4       takayama   77: このマニュアルでは, asir-contrib パッケージに収録されている,
                     78: 行列演算パッケージ @samp{noro_matrix.rr} について解説する.
                     79: このパッケージを使うには, まず @samp{noro_matrix.rr} をロードする.
1.1       noro       80: @example
                     81: [1831] load("noro_matrix.rr");
                     82: [2014]
                     83: @end example
1.4       takayama   84: このパッケージの函数を呼び出すには, 全て @code{linalg.} を先頭につける.
1.1       noro       85: @example
                     86: [2014] linalg.random_mat(3,5);
                     87: [ 0 -1 -1 ]
                     88: [ -1 3 0 ]
                     89: [ -2 -2 4 ]
                     90: @end example
1.4       takayama   91: このマニュアルでは, 関連する組込み函数についても解説する.
1.1       noro       92:
1.4       takayama   93: @comment --- section の開始 ---
                     94: @comment --- 書体指定について ---
                     95: @comment --- @code{} はタイプライタ体表示 ---
                     96: @comment --- @var{} は斜字体表示 ---
                     97: @comment --- @b{} はボールド表示 ---
                     98: @comment --- @samp{} はファイル名などの表示 ---
1.1       noro       99:
1.4       takayama  100: @node 行列に関する函数,,, 行列演算パッケージ noro_matrix.rr
                    101: @section 行列に関する函数
1.1       noro      102:
                    103: @menu
                    104: * matrix vector linalg.unit_mat::
                    105: * linalg.random_mat linalg.random_rmat linalg.random_vect::
                    106: * invmat::
                    107: * det nd_det::
                    108: * generic_gauss_elim::
                    109: * linalg.compute_kernel linalg.compute_image::
                    110: * linalg.minipoly_mat::
                    111: * linalg.jordan_canonical_form linalg.sample_mat::
                    112: @end menu
                    113:
1.4       takayama  114: @node matrix vector linalg.unit_mat,,, 行列に関する函数
1.1       noro      115: @subsection @code{matrix},@code{vector},@code{linalg.unit_mat}
                    116: @findex matrix
                    117: @findex vector
                    118: @findex linalg.unit_mat
                    119:
                    120: @table @t
1.4       takayama  121: @item matrix(@var{m},@var{n}[,@var{listoflist}]) :: @var{m}行@var{n}列の行列を生成する.
                    122: @itemx vector(@var{size}[,@var{list}]) :: サイズが @var{size} のベクトルを生成する.
                    123: @itemx linalg.unit_mat(@var{size}) :: サイズが @var{size} の単位行列を生成する.
1.1       noro      124: @end table
                    125:
                    126: @table @var
                    127: @item return
1.4       takayama  128: 行列
1.1       noro      129: @item size
                    130: @itemx m
                    131: @itemx n
1.4       takayama  132: 正整数
1.1       noro      133: @item listoflist
1.4       takayama  134: リストのリスト
1.1       noro      135: @item list
1.4       takayama  136: リスト
1.1       noro      137: @end table
                    138:
                    139: @itemize @bullet
                    140: @item
1.4       takayama  141: @code{matrix}, @code{vector} は組込み, @code{linalg.unit_mat} は @samp{noro_matrix.rr}
                    142: で定義されている.
1.1       noro      143: @item
1.4       takayama  144: @code{matrix}, @code{vector} は, @var{listoflist}, @var{list} が
                    145: ない場合には零行列, 零ベクトルを生成する.
1.1       noro      146: @item
1.4       takayama  147: @var{listoflist} は @var{[[1,2,3],[3,4,5]]} のようにリストからなるリストで
                    148: ある. これが引数として与えられた場合, 要素であるリストを使って
                    149: 行列の各行が順に初期化される.
                    150: @item
                    151: @var{list} は @var{[1,2,3]} のようなリストである.
                    152: これが引数として与えられた場合, このリストの要素によりベクトルの各
                    153: 成分が初期化される.
1.1       noro      154: @end itemize
                    155:
                    156: @example
                    157: [1559] matrix(2,3);
                    158: [ 0 0 0 ]
                    159: [ 0 0 0 ]
                    160: [1560] vector(3);
                    161: [ 0 0 0 ]
                    162: [1561] linalg.unit_mat(3);
                    163: [ 1 0 0 ]
                    164: [ 0 1 0 ]
                    165: [ 0 0 1 ]
                    166: [1559] matrix(2,3,[[1,2,3],[4,5,6]]);
                    167: [ 1 2 3 ]
                    168: [ 4 5 6 ]
                    169: @end example
                    170:
                    171:
1.4       takayama  172: @node linalg.random_mat linalg.random_rmat linalg.random_vect,,, 行列に関する函数
1.1       noro      173: @subsection @code{linalg.random_mat}, @code{linalg.random_rmat}, @code{linalg.random_vect}
                    174: @findex linalg.random_mat
                    175: @findex linalg.random_rmat
                    176: @findex linalg.random_vect
                    177:
                    178: @table @t
1.4       takayama  179: @item linalg.random_mat(@var{size},@var{bound}) :: 正方整数行列をランダム生成する.
                    180: @itemx linalg.random_rmat(@var{m},@var{n},@var{bound}) :: @var{m} 行 @var{n} 列の整数行列をランダム生成する.
                    181: @itemx linalg.random_vect(@var{size},@var{bound}) :: 整数ベクトルをランダム生成する.
1.1       noro      182: @end table
                    183:
                    184: @table @var
                    185: @item return
1.4       takayama  186: 整数
1.1       noro      187: @item number
1.4       takayama  188: 整数
1.1       noro      189: @end table
                    190:
                    191: @itemize @bullet
1.4       takayama  192: @item linalg.random_mat(@var{size},@var{bound}) は, サイズ @var{size},
                    193: 要素が@var{bound}未満の
                    194: 正方整数行列をランダム生成する.
                    195: @item
                    196: @item linalg.random_rmat(@var{m},@var{n},@var{bound}) は
                    197: @var{m} 行 @var{n} 列の,
                    198: 要素が@var{bound}未満の整数行列をランダム生成する.
                    199: @item linalg.random_vect(@var{size},@var{bound}) は長さ @var{size}の,
                    200: 要素が@var{bound}未満の整数ベクトルをランダム生成する.
1.1       noro      201: @end itemize
                    202:
                    203: @example
                    204: [1579] linalg.random_mat(3,4);
                    205: [ 2 1 -2 ]
                    206: [ 0 -2 1 ]
                    207: [ 3 1 -2 ]
                    208: [1580] linalg.random_rmat(3,5,2);
                    209: [ 0 -1 0 0 0 ]
                    210: [ 0 -1 0 1 0 ]
                    211: [ -1 0 0 -1 1 ]
                    212: [1581] linalg.random_vect(3,6);
                    213: [ -3 2 3 ]
                    214: @end example
                    215:
1.4       takayama  216: @node invmat,,, 行列に関する函数
1.1       noro      217: @subsection @code{invmat}
                    218: @findex invmat
                    219:
                    220: @table @t
                    221: @item invmat(@var{mat})
1.4       takayama  222: :: @var{mat} の逆行列を計算する.
1.1       noro      223: @end table
                    224:
                    225: @table @var
                    226: @item return
1.4       takayama  227: リスト
1.1       noro      228: @item mat
1.4       takayama  229: 正方行列
1.1       noro      230: @end table
                    231:
                    232: @itemize @bullet
                    233: @item
1.4       takayama  234: 正方行列 @var{mat} の逆行列を計算する.
1.1       noro      235: @item
1.4       takayama  236: 結果は @var{[invmat,denom]} なるリストである. ここで, @var{invmat} は
                    237: 行列, @var{denom} は分母を表す式であり, @var{invmat/denom} が逆行列を表す.
1.1       noro      238: @item
1.4       takayama  239: @var{mat}が整数行列, あるいは多項式行列の場合, @var{invmat} は
                    240: それぞれ整数行列, あるいは多項式となる. この仕様は, 無駄な分数, 有理式
                    241: 計算を省くために定められているが, 使いにくい場合もある.
1.1       noro      242: @end itemize
                    243:
                    244: @example
                    245: [1575] A=linalg.random_mat(4,5);
                    246: [ 2 4 3 3 ]
                    247: [ 3 0 0 0 ]
                    248: [ 0 2 3 -2 ]
                    249: [ 2 0 -4 3 ]
                    250: [1576] L=invmat(A);
                    251: [[ 0 38 0 0 ]
                    252: [ -3 -28 63 45 ]
                    253: [ 18 16 -36 -42 ]
                    254: [ 24 -4 -48 -18 ],114]
                    255: [1577] AI=L[0]/L[1]$ AI*A;
                    256: [1578] [ 1 0 0 0 ]
                    257: [ 0 1 0 0 ]
                    258: [ 0 0 1 0 ]
                    259: [ 0 0 0 1 ]
                    260: @end example
                    261:
1.4       takayama  262: @node det nd_det,,, 行列に関する函数
1.1       noro      263: @subsection @code{det},@code{nd_det}
                    264: @findex det
                    265: @findex nd_det
                    266:
                    267: @table @t
                    268: @item det(@var{mat}[,@var{mod}])
                    269: @itemx nd_det(@var{mat}[,@var{mod}])
1.4       takayama  270: :: @var{mat} の行列式を求める.
1.1       noro      271: @end table
                    272:
                    273: @table @var
                    274: @item return
1.4       takayama  275: 式
1.1       noro      276: @item mat
1.4       takayama  277: 行列
1.1       noro      278: @item mod
1.4       takayama  279: 素数
1.1       noro      280: @end table
                    281:
                    282: @itemize @bullet
                    283: @item
1.4       takayama  284: @code{det} および @code{nd_det} は行列 @var{mat} の行列式を求める.
1.1       noro      285: @item
1.4       takayama  286: 引数 @var{mod} がある時, GF(@var{mod}) 上での行列式を求める.
1.1       noro      287: @item
1.4       takayama  288: 分数なしのガウス消去法によっているため, 多変数多項式を成分とする
                    289: 行列に対しては小行列式展開による方法のほうが効率がよい場合もある.
1.1       noro      290: @item
1.4       takayama  291: @code{nd_det} は有理数または有限体上の多項式行列の行列式
                    292: 計算専用である. アルゴリズムはやはり分数なしのガウス消去法だが,
                    293: データ構造および乗除算の工夫により, 一般に @code{det} より高速に
                    294: 計算できる.
1.1       noro      295: @end itemize
                    296:
                    297: @example
                    298: [91] A=matrix(5,5)$
                    299: [92] V=[x,y,z,u,v];
                    300: [x,y,z,u,v]
                    301: [93] for(I=0;I<5;I++)for(J=0,B=A[I],W=V[I];J<5;J++)B[J]=W^J;
                    302: [94] A;
                    303: [ 1 x x^2 x^3 x^4 ]
                    304: [ 1 y y^2 y^3 y^4 ]
                    305: [ 1 z z^2 z^3 z^4 ]
                    306: [ 1 u u^2 u^3 u^4 ]
                    307: [ 1 v v^2 v^3 v^4 ]
                    308: [95] fctr(det(A));
                    309: [[1,1],[u-v,1],[-z+v,1],[-z+u,1],[-y+u,1],[y-v,1],[-y+z,1],[-x+u,1],
                    310: [-x+z,1],[-x+v,1],[-x+y,1]]
                    311: @end example
                    312:
1.4       takayama  313: @node generic_gauss_elim,,, 行列に関する函数
1.1       noro      314: @subsection @code{generic_gauss_elim}
                    315: @findex generic_gauss_elim
                    316:
                    317: @table @t
                    318: @item generic_gauss_elim(@var{mat})
1.4       takayama  319: :: 整数行列を簡約する.
1.1       noro      320: @end table
                    321:
                    322: @table @var
                    323: @item return
1.4       takayama  324: リスト
1.1       noro      325: @item mat
1.4       takayama  326: 整数行列
1.1       noro      327: @end table
                    328:
                    329: @itemize @bullet
                    330: @item
1.4       takayama  331: 整数行列 @var{mat} の簡約階段形 (reduced row echelon form; rref) を計算し,
                    332: それを構成するデータをリストとして返す.
1.1       noro      333: @item
1.4       takayama  334: 出力は @var{[B,D,J,K]} の形のリストである. 入力 @var{mat} が @var{m} 行
                    335: @var{n} 列とし, そのランクが @var{r} とすれば, @var{B} は @var{r} 行
                    336: @var{n-r} 列の行列である. @var{D} は整数, @var{J} は長さ @var{r},
                    337: @var{K} は長さ @var{n-r} の整数ベクトルである.
                    338: @item
                    339: 出力データは @var{mat} の rref をエンコードしている.
                    340: rref の第 @var{J[l]} 列は @var{l} 行目のみが @var{D}, それ以外は 0 の
                    341: 列ベクトル, rref の 第 @var{K[l]} 列は @var{B} の第 @var{l} 列を, 上から
                    342: 詰めたものとなる.
                    343: @item
                    344: このような形式で出力する理由は, 入力行列のランクが大きい場合に,
                    345: rref は 0 が多い疎な行列となり, メモリを多く消費することと,
                    346: この形の方が, プログラム上でデータを利用しやすいことによる.
1.1       noro      347: @end itemize
                    348:
                    349: @example
                    350: [1600] A=linalg.random_rmat(3,5,2);
                    351: [ 0 -1 -1 0 -1 ]
                    352: [ 1 0 1 -1 0 ]
                    353: [ 1 1 0 0 0 ]
                    354: [1601] L=generic_gauss_elim(A);
                    355: [[ -1 -1 ]
                    356: [ 1 1 ]
                    357: [ -1 1 ],2,[ 0 1 2 ],[ 3 4 ]]
                    358: @end example
                    359:
1.4       takayama  360: 例えば, rref を計算する函数は次のように書ける.
1.1       noro      361: @example
                    362: def my_rref(A)
                    363: @{
                    364:     S = size(A); M = S[0]; N = S[1];
                    365:     L = generic_gauss_elim(A);
                    366:     B = L[0]; D = L[1]; J = L[2]; K = L[3];
                    367:     R = length(J); NR = N-R;
                    368:     A1 = matrix(M,N);
                    369:     for ( I = 0; I < R; I++ ) @{
                    370:         A1[I][J[I]] = D;
                    371:         for ( L = 0; L < NR; L++ ) A1[I][K[L]] = B[I][L];
                    372:     @}
                    373:     return A1;
                    374: @}
                    375: @end example
                    376:
                    377:
                    378: @table @t
1.4       takayama  379: @item 参照
1.1       noro      380: @fref{matrix vector linalg.unit_mat}
                    381: @end table
                    382:
1.4       takayama  383: @node linalg.compute_kernel linalg.compute_image,,, 行列に関する函数
1.1       noro      384: @subsection @code{linalg.compute_kernel}, @code{linalg.compute_image}
                    385: @findex linalg.compute_kernel
                    386: @findex linalg.compute_image
                    387:
                    388: @table @t
                    389: @item linalg.compute_kernel(@var{mat}[|rhs=@var{vect}])
1.4       takayama  390: :: 有理数行列の核の基底を計算する.
1.1       noro      391: @itemx linalg.compute_image(@var{mat})
1.4       takayama  392: :: 有理数行列の像の基底を計算する.
1.1       noro      393: @end table
                    394:
                    395: @table @var
                    396: @item return
1.4       takayama  397: リスト
1.1       noro      398: @item mat
1.4       takayama  399: 有理数行列
1.1       noro      400: @item vect
1.4       takayama  401: 有理数ベクトル
1.1       noro      402: @end table
                    403:
                    404: @itemize @bullet
                    405: @item
1.4       takayama  406: @var{m} 行 @var{n} 列の行列を, 列ベクトルに左から掛けることにより
                    407: @var{n} 次元ベクトル空間から
                    408: @var{m} 次元ベクトル空間への線形写像とみなす.
                    409: @item
                    410: @code{linalg.compute_kernel} は有理数行列 @var{mat} の核の基底を計算する.
                    411: @item
                    412: @code{linalg.compute_kernel} の出力は @var{[[v1,pos1],@dots{},[vl,posl]]} の形のリストである. ここで,
                    413: @var{vi} は基底ベクトル, @var{posi} は, @var{vi} の主成分位置, すなわち
                    414: 最小のインデックスを持つ成分の位置を表す. @var{posi} は全て異なること
                    415: が保証される.
                    416: @item
                    417: オプション @var{vect} が指定された場合, 結果は
                    418: @var{[@var{sol},[[v1,pos1],@dots{},[vl,posl]]]} なるリストとなる.
                    419: ここで @var{sol} は @var{mat sol = vect} を満たすベクトル (特殊解),
                    420: のこりは核の基底である.
                    421: @item
                    422: 解が存在しないような @var{vect} を指定するとエラーを起こす.
                    423: @item
                    424: @code{linalg.compute_image} は有理数行列 @var{mat} の像の基底を計算する.
                    425: @item
                    426: @code{linalg.compute_image} の出力は, @var{[v1,pos1,hist1],@dots{},[vl,posl,histl]} の形のリストである.
                    427: ここで, @var{vi} は基底ベクトル, @var{posi} は, @var{vi} の主成分位置, すなわち
                    428: 最小のインデックスを持つ成分の位置を表す. @var{posi} は全て異なること
                    429: が保証される. @var{histi} は, @var{vi} が, @var{mat} の列からどのように
                    430: 作られるかを示すデータである. 分散多項式で表現されており, 指数が行インデックス,
                    431: 係数が, 一次結合の係数を表す. このデータにより作られるベクトルは, 定数倍を
                    432: 除いて @var{vi} に等しい.
1.1       noro      433: @end itemize
                    434:
                    435: @example
                    436: [1643] A=linalg.random_rmat(3,5,3);
                    437: [ 2 1 0 1 -1 ]
                    438: [ 2 -2 1 0 1 ]
                    439: [ 2 1 -1 -1 -1 ]
                    440: [1644] linalg.compute_kernel(A);
                    441: [[[ 1 0 -8 4 6 ],0],[[ 0 1 2 -1 0 ],1]]
                    442: [1645] linalg.compute_kernel(A|rhs=vector(3,[1,2,3]));
                    443: [[ 0 0 8 -5 -6 ],[[[ 1 0 -8 4 6 ],0],[[ 0 1 2 -1 0 ],1]]]
                    444: [1646] linalg.compute_image(A);
                    445: [[[ 1 1 1 ],0,(1)*<<0>>],[[ 0 -3 0 ],1,(1)*<<1>>+(-1)*<<0>>],
                    446: [[ 0 0 3 ],2,(-3)*<<2>>+(-1)*<<1>>+(1)*<<0>>]]
                    447: @end example
                    448:
1.4       takayama  449: @node linalg.minipoly_mat,,, 行列に関する函数
1.1       noro      450: @subsection @code{linalg.minipoly_mat}
                    451: @findex linalg.minipoly_mat
                    452:
                    453: @table @t
                    454: @item linalg.minipoly_mat(@var{mat})
1.4       takayama  455: :: 有理数行列 @var{mat} の最小多項式を計算する.
1.1       noro      456: @end table
                    457:
                    458: @table @var
                    459: @item return
1.4       takayama  460: 一変数多項式
1.1       noro      461: @item mat
1.4       takayama  462: 有理数行列
1.1       noro      463: @end table
                    464:
                    465: @itemize @bullet
                    466: @item
1.4       takayama  467: 有理数行列 @var{mat} の最小多項式を計算し, 変数 @var{x} の一変数多項式として
                    468: 返す.
1.1       noro      469: @end itemize
                    470:
                    471: @example
                    472: [1682] A=linalg.random_mat(3,3);
                    473: [ -2 2 -2 ]
                    474: [ 0 1 -1 ]
                    475: [ 1 -2 -1 ]
                    476: [1683] linalg.minipoly_mat(A);
                    477: x^3+2*x^2-x-6
                    478: [1684] A^3+2*A^2-A-6*linalg.unit_mat(3);
                    479: [ 0 0 0 ]
                    480: [ 0 0 0 ]
                    481: [ 0 0 0 ]
                    482: @end example
                    483:
1.4       takayama  484: @node linalg.jordan_canonical_form linalg.sample_mat,,, 行列に関する函数
1.1       noro      485: @subsection @code{linalg.jordan_canonical_form},@code{linalg.sample_mat}
                    486: @findex linalg.jordan_canonical_form
                    487:
                    488: @table @t
                    489: @item linalg.jordan_canonical_form(@var{mat})
1.4       takayama  490: :: 有理数正方行列のジョルダン標準形を計算する.
1.1       noro      491: @itemx linalg.sample_mat(@var{list})
1.4       takayama  492: :: 指定されたジョルダン標準形を持つ有理数正方行列を生成する.
1.1       noro      493: @end table
                    494:
                    495: @table @var
                    496: @item return
1.4       takayama  497: リスト
1.1       noro      498: @item mat
1.4       takayama  499: 有理数正方行列
1.1       noro      500: @item list
1.4       takayama  501: ジョルダンブロックのリスト
1.1       noro      502: @end table
                    503:
                    504: @itemize @bullet
                    505: @item
1.4       takayama  506: @code{linalg.jordan_canonical_form(@var{mat})} は
                    507: 有理数正方行列 @var{mat} のジョルダン標準形を計算する.
1.1       noro      508: @item
1.4       takayama  509: 出力は @var{[P,[[e1,s1,n1],@dots{},[el,sl,nl]],defideal]} という形のリスト
                    510: である. ここで, @var{P} は変換行列, すなわち @var{P^(-1)AP} がジョルダン
                    511: 標準形となる正則行列, @var{[ei,si,ni]} は, 固有値 @var{ei}, サイズ @var{si}
                    512: のジョルダンブロックが @var{ni} 個並ぶことを意味する.
                    513: @item
                    514: 一般に, 出力は @var{a0}, @dots{}, @var{am} の形のパラメタを含む. これらは
                    515: 実際には, ある有理数体上既約な多項式の根である. これらを定義する
                    516: 方程式として, @var{defideal} が与えられる. @var{deflideal} はリストのリスト
                    517: であり, 各要素であるリストは, 一組の共役な根全体を定義するイデアルを
                    518: 表す. 実際には, 対応する一変数多項式の根を, 根と係数の関係により表した
                    519: ものである.
                    520: @item
                    521: @code{linalg.sample_mat(@var{list})} は指定されたジョルダン標準形を
                    522: 持つような行列を生成する. @var{list} は @var{[[e1,s1],@dots{},[el,sl]]}
                    523: の形のリストで, @var{[ei,s1]} は固有値 @var{ei}, サイズ @var{si} の
                    524: ジョルダンブロックを表す. 同じサイズのジョルダンブロックはいくつあって
                    525: もよい.
1.1       noro      526: @end itemize
                    527:
                    528: @example
                    529: [ 1 -2 0 ]
                    530: [ -1 2 1 ]
                    531: [ 0 -2 1 ]
                    532: [1807] L=linalg.jordan_canonical_form(A);
                    533: [[ 2 -2 0 ]
                    534: [ -1 0 1 ]
                    535: [ 2 -2 -1 ],[[2,1,1],[1,2,1]],[]]
                    536: [1808] P=L[0]$T=invmat(P)$PI=T[0]/T[1]$
                    537: [1809] [1810] [1811] PI*A*P;
                    538: [ 2 0 0 ]
                    539: [ 0 1 1 ]
                    540: [ 0 0 1 ]
                    541: [1810] A=linalg.sample_mat([[1,2],[1,1],[2,3],[2,1],[2,1]]);
                    542: [ 2 0 2 113 14 678 0 0 ]
                    543: [ -1 1 -2 -120 -14 -720 0 0 ]
                    544: [ -7 0 -13 -840 -105 -5040 0 0 ]
                    545: [ 54 54 0 380 0 2268 -54 0 ]
                    546: [ 1 0 2 112 16 672 0 0 ]
                    547: [ -9 -9 0 -63 0 -376 9 0 ]
                    548: [ 1 1 0 7 0 42 1 0 ]
                    549: [ 1 1 0 7 0 42 0 2 ]
                    550: [1811] L=linalg.jordan_canonical_form(A);
                    551: [[ 0 -6 42 0 0 0 2 2 ]
                    552: [ 0 6 0 0 0 0 0 -2 ]
                    553: [ 42 -294 0 0 0 0 -1 -1 ]
                    554: [ 0 0 0 6 0 108 0 0 ]
                    555: [ -6 42 48 0 0 0 0 0 ]
                    556: [ 0 0 -1 -1 0 -18 0 0 ]
                    557: [ 0 0 0 0 0 2 0 0 ]
                    558: [ 0 0 0 0 1 0 -2 0 ],[[2,3,1],[2,1,2],[1,2,1],[1,1,1]],[]]
                    559: @end example
                    560:
                    561: @table @t
1.4       takayama  562: @item 参照
1.1       noro      563: @fref{linalg.minipoly_mat}
                    564: @end table
                    565:
1.4       takayama  566: @comment --- おまじない ---
1.1       noro      567: @node Index,,, Top
                    568: @unnumbered Index
                    569: @printindex fn
                    570: @printindex cp
                    571: @iftex
                    572: @vfill @eject
                    573: @end iftex
                    574: @summarycontents
                    575: @contents
                    576: @bye
1.4       takayama  577: @comment --- おまじない終り ---
1.1       noro      578:
                    579: * linalg.reduce_vect::
                    580: * linalg.partial_fraction::
                    581: * linalg.power_mat linalg.exp_mat::
                    582:

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