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>