version 1.1, 2008/05/18 07:37:43 |
version 1.2, 2009/05/07 06:13:22 |
|
|
%comment $OpenXM$ |
%comment $OpenXM: OpenXM/src/asir-contrib/packages/doc/noro_matrix/noro_matrix-ja.texi,v 1.1 2008/05/18 07:37:43 noro Exp $ |
%comment --- $B$*$^$8$J$$(B --- |
%comment --- おまじない --- |
\input texinfo |
\input texinfo |
@iftex |
@iftex |
@catcode`@#=6 |
@catcode`@#=6 |
|
|
@overfullrule=0pt |
@overfullrule=0pt |
@c -*-texinfo-*- |
@c -*-texinfo-*- |
@comment %**start of header |
@comment %**start of header |
@comment --- $B$*$^$8$J$$=*$j(B --- |
@comment --- おまじない終り --- |
|
|
@comment --- GNU info $B%U%!%$%k$NL>A0(B --- |
@comment --- GNU info ファイルの名前 --- |
@setfilename asir-contrib-noro_matrix |
@setfilename asir-contrib-noro_matrix |
|
|
@comment --- $B%?%$%H%k(B --- |
@comment --- タイトル --- |
@settitle noro_matrix |
@settitle noro_matrix |
|
|
@comment %**end of header |
@comment %**end of header |
@comment %@setchapternewpage odd |
@comment %@setchapternewpage odd |
|
|
@comment --- $B$*$^$8$J$$(B --- |
@comment --- おまじない --- |
@ifinfo |
@ifinfo |
@macro fref{name} |
@macro fref{name} |
@ref{\name\,,@code{\name\}} |
@ref{\name\,,@code{\name\}} |
|
|
@end iftex |
@end iftex |
|
|
@titlepage |
@titlepage |
@comment --- $B$*$^$8$J$$=*$j(B --- |
@comment --- おまじない終り --- |
|
|
@comment --- $B%?%$%H%k(B, $B%P!<%8%g%s(B, $BCx<TL>(B, $BCx:n8"I=<((B --- |
@comment --- タイトル, バージョン, 著者名, 著作権表示 --- |
@title noro_matrix |
@title noro_matrix |
@subtitle noro_matrix User's Manual |
@subtitle noro_matrix User's Manual |
@subtitle Edition 1.0 |
@subtitle Edition 1.0 |
Line 48 Copyright @copyright{} Masayuki Noro |
|
Line 48 Copyright @copyright{} Masayuki Noro |
|
2008. All rights reserved. |
2008. All rights reserved. |
@end titlepage |
@end titlepage |
|
|
@comment --- $B$*$^$8$J$$(B --- |
@comment --- おまじない --- |
@synindex vr fn |
@synindex vr fn |
@comment --- $B$*$^$8$J$$=*$j(B --- |
@comment --- おまじない終り --- |
|
|
@comment --- @node $B$O(B GNU info, HTML $BMQ(B --- |
@comment --- @node は GNU info, HTML 用 --- |
@comment --- @node $B$N0z?t$O(B node-name, next, previous, up --- |
@comment --- @node の引数は node-name, next, previous, up --- |
@node Top,, (dir), (dir) |
@node Top,, (dir), (dir) |
|
|
@comment --- @menu $B$O(B GNU info, HTML $BMQ(B --- |
@comment --- @menu は GNU info, HTML 用 --- |
@comment --- chapter $BL>$r@53N$KJB$Y$k(B --- |
@comment --- chapter 名を正確に並べる --- |
@menu |
@menu |
* $B9TNs1i;;%Q%C%1!<%8(B noro_matrix.rr:: |
* 行列演算パッケージ noro_matrix.rr:: |
* Index:: |
* Index:: |
@end menu |
@end menu |
|
|
@comment --- chapter $B$N3+;O(B --- |
@comment --- chapter の開始 --- |
@comment --- $B?F(B chapter $BL>$r@53N$K(B --- |
@comment --- 親 chapter 名を正確に --- |
@node $B9TNs1i;;%Q%C%1!<%8(B noro_matrix.rr,,, Top |
@node 行列演算パッケージ noro_matrix.rr,,, Top |
@chapter $B9TNs1i;;%Q%C%1!<%8(B noro_matrix.rr |
@chapter 行列演算パッケージ noro_matrix.rr |
|
|
@comment --- section $BL>$r@53N$KJB$Y$k(B --- |
@comment --- section 名を正確に並べる --- |
@menu |
@menu |
* $B9TNs$K4X$9$kH!?t(B:: |
* 行列に関する函数:: |
@end menu |
@end menu |
|
|
$B$3$N%^%K%e%"%k$G$O(B, asir-contrib $B%Q%C%1!<%8$K<}O?$5$l$F$$$k(B, |
このマニュアルでは, asir-contrib パッケージに収録されている, |
$B9TNs1i;;%Q%C%1!<%8(B @samp{noro_matrix.rr} $B$K$D$$$F2r@b$9$k(B. |
行列演算パッケージ @samp{noro_matrix.rr} について解説する. |
$B$3$N%Q%C%1!<%8$r;H$&$K$O(B, $B$^$:(B @samp{noro_matrix.rr} $B$r%m!<%I$9$k(B. |
このパッケージを使うには, まず @samp{noro_matrix.rr} をロードする. |
@example |
@example |
[1831] load("noro_matrix.rr"); |
[1831] load("noro_matrix.rr"); |
[2014] |
[2014] |
@end example |
@end example |
$B$3$N%Q%C%1!<%8$NH!?t$r8F$S=P$9$K$O(B, $BA4$F(B @code{linalg.} $B$r@hF,$K$D$1$k(B. |
このパッケージの函数を呼び出すには, 全て @code{linalg.} を先頭につける. |
@example |
@example |
[2014] linalg.random_mat(3,5); |
[2014] linalg.random_mat(3,5); |
[ 0 -1 -1 ] |
[ 0 -1 -1 ] |
[ -1 3 0 ] |
[ -1 3 0 ] |
[ -2 -2 4 ] |
[ -2 -2 4 ] |
@end example |
@end example |
$B$3$N%^%K%e%"%k$G$O(B, $B4XO"$9$kAH9~$_H!?t$K$D$$$F$b2r@b$9$k(B. |
このマニュアルでは, 関連する組込み函数についても解説する. |
|
|
@comment --- section $B$N3+;O(B --- |
@comment --- section の開始 --- |
@comment --- $B=qBN;XDj$K$D$$$F(B --- |
@comment --- 書体指定について --- |
@comment --- @code{} $B$O%?%$%W%i%$%?BNI=<((B --- |
@comment --- @code{} はタイプライタ体表示 --- |
@comment --- @var{} $B$O<P;zBNI=<((B --- |
@comment --- @var{} は斜字体表示 --- |
@comment --- @b{} $B$O%\!<%k%II=<((B --- |
@comment --- @b{} はボールド表示 --- |
@comment --- @samp{} $B$O%U%!%$%kL>$J$I$NI=<((B --- |
@comment --- @samp{} はファイル名などの表示 --- |
|
|
@node $B9TNs$K4X$9$kH!?t(B,,, $B9TNs1i;;%Q%C%1!<%8(B noro_matrix.rr |
@node 行列に関する函数,,, 行列演算パッケージ noro_matrix.rr |
@section $B9TNs$K4X$9$kH!?t(B |
@section 行列に関する函数 |
|
|
@menu |
@menu |
* matrix vector linalg.unit_mat:: |
* matrix vector linalg.unit_mat:: |
Line 110 Copyright @copyright{} Masayuki Noro |
|
Line 110 Copyright @copyright{} Masayuki Noro |
|
* linalg.jordan_canonical_form linalg.sample_mat:: |
* linalg.jordan_canonical_form linalg.sample_mat:: |
@end menu |
@end menu |
|
|
@node matrix vector linalg.unit_mat,,, $B9TNs$K4X$9$kH!?t(B |
@node matrix vector linalg.unit_mat,,, 行列に関する函数 |
@subsection @code{matrix},@code{vector},@code{linalg.unit_mat} |
@subsection @code{matrix},@code{vector},@code{linalg.unit_mat} |
@findex matrix |
@findex matrix |
@findex vector |
@findex vector |
@findex linalg.unit_mat |
@findex linalg.unit_mat |
|
|
@table @t |
@table @t |
@item matrix(@var{m},@var{n}[,@var{listoflist}]) :: @var{m}$B9T(B@var{n}$BNs$N9TNs$r@8@.$9$k(B. |
@item matrix(@var{m},@var{n}[,@var{listoflist}]) :: @var{m}行@var{n}列の行列を生成する. |
@itemx vector(@var{size}[,@var{list}]) :: $B%5%$%:$,(B @var{size} $B$N%Y%/%H%k$r@8@.$9$k(B. |
@itemx vector(@var{size}[,@var{list}]) :: サイズが @var{size} のベクトルを生成する. |
@itemx linalg.unit_mat(@var{size}) :: $B%5%$%:$,(B @var{size} $B$NC10L9TNs$r@8@.$9$k(B. |
@itemx linalg.unit_mat(@var{size}) :: サイズが @var{size} の単位行列を生成する. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B9TNs(B |
行列 |
@item size |
@item size |
@itemx m |
@itemx m |
@itemx n |
@itemx n |
$B@5@0?t(B |
正整数 |
@item listoflist |
@item listoflist |
$B%j%9%H$N%j%9%H(B |
リストのリスト |
@item list |
@item list |
$B%j%9%H(B |
リスト |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item |
@item |
@code{matrix}, @code{vector} $B$OAH9~$_(B, @code{linalg.unit_mat} $B$O(B @samp{noro_matrix.rr} |
@code{matrix}, @code{vector} は組込み, @code{linalg.unit_mat} は @samp{noro_matrix.rr} |
$B$GDj5A$5$l$F$$$k(B. |
で定義されている. |
@item |
@item |
@code{matrix}, @code{vector} $B$O(B, @var{listoflist}, @var{list} $B$,(B |
@code{matrix}, @code{vector} は, @var{listoflist}, @var{list} が |
$B$J$$>l9g$K$ONm9TNs(B, $BNm%Y%/%H%k$r@8@.$9$k(B. |
ない場合には零行列, 零ベクトルを生成する. |
@item |
@item |
@var{listoflist} $B$O(B @var{[[1,2,3],[3,4,5]]} $B$N$h$&$K%j%9%H$+$i$J$k%j%9%H$G(B |
@var{listoflist} は @var{[[1,2,3],[3,4,5]]} のようにリストからなるリストで |
$B$"$k(B. $B$3$l$,0z?t$H$7$FM?$($i$l$?>l9g(B, $BMWAG$G$"$k%j%9%H$r;H$C$F(B |
ある. これが引数として与えられた場合, 要素であるリストを使って |
$B9TNs$N3F9T$,=g$K=i4|2=$5$l$k(B. |
行列の各行が順に初期化される. |
@item |
@item |
@var{list} $B$O(B @var{[1,2,3]} $B$N$h$&$J%j%9%H$G$"$k(B. |
@var{list} は @var{[1,2,3]} のようなリストである. |
$B$3$l$,0z?t$H$7$FM?$($i$l$?>l9g(B, $B$3$N%j%9%H$NMWAG$K$h$j%Y%/%H%k$N3F(B |
これが引数として与えられた場合, このリストの要素によりベクトルの各 |
$B@.J,$,=i4|2=$5$l$k(B. |
成分が初期化される. |
@end itemize |
@end itemize |
|
|
@example |
@example |
Line 168 Copyright @copyright{} Masayuki Noro |
|
Line 168 Copyright @copyright{} Masayuki Noro |
|
@end example |
@end example |
|
|
|
|
@node linalg.random_mat linalg.random_rmat linalg.random_vect,,, $B9TNs$K4X$9$kH!?t(B |
@node linalg.random_mat linalg.random_rmat linalg.random_vect,,, 行列に関する函数 |
@subsection @code{linalg.random_mat}, @code{linalg.random_rmat}, @code{linalg.random_vect} |
@subsection @code{linalg.random_mat}, @code{linalg.random_rmat}, @code{linalg.random_vect} |
@findex linalg.random_mat |
@findex linalg.random_mat |
@findex linalg.random_rmat |
@findex linalg.random_rmat |
@findex linalg.random_vect |
@findex linalg.random_vect |
|
|
@table @t |
@table @t |
@item linalg.random_mat(@var{size},@var{bound}) :: $B@5J}@0?t9TNs$r%i%s%@%`@8@.$9$k(B. |
@item linalg.random_mat(@var{size},@var{bound}) :: 正方整数行列をランダム生成する. |
@itemx linalg.random_rmat(@var{m},@var{n},@var{bound}) :: @var{m} $B9T(B @var{n} $BNs$N@0?t9TNs$r%i%s%@%`@8@.$9$k(B. |
@itemx linalg.random_rmat(@var{m},@var{n},@var{bound}) :: @var{m} 行 @var{n} 列の整数行列をランダム生成する. |
@itemx linalg.random_vect(@var{size},@var{bound}) :: $B@0?t%Y%/%H%k$r%i%s%@%`@8@.$9$k(B. |
@itemx linalg.random_vect(@var{size},@var{bound}) :: 整数ベクトルをランダム生成する. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B@0?t(B |
整数 |
@item number |
@item number |
$B@0?t(B |
整数 |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item linalg.random_mat(@var{size},@var{bound}) $B$O(B, $B%5%$%:(B @var{size}, |
@item linalg.random_mat(@var{size},@var{bound}) は, サイズ @var{size}, |
$BMWAG$,(B@var{bound}$BL$K~$N(B |
要素が@var{bound}未満の |
$B@5J}@0?t9TNs$r%i%s%@%`@8@.$9$k(B. |
正方整数行列をランダム生成する. |
@item |
@item |
@item linalg.random_rmat(@var{m},@var{n},@var{bound}) $B$O(B |
@item linalg.random_rmat(@var{m},@var{n},@var{bound}) は |
@var{m} $B9T(B @var{n} $BNs$N(B, |
@var{m} 行 @var{n} 列の, |
$BMWAG$,(B@var{bound}$BL$K~$N@0?t9TNs$r%i%s%@%`@8@.$9$k(B. |
要素が@var{bound}未満の整数行列をランダム生成する. |
@item linalg.random_vect(@var{size},@var{bound}) $B$OD9$5(B @var{size}$B$N(B, |
@item linalg.random_vect(@var{size},@var{bound}) は長さ @var{size}の, |
$BMWAG$,(B@var{bound}$BL$K~$N@0?t%Y%/%H%k$r%i%s%@%`@8@.$9$k(B. |
要素が@var{bound}未満の整数ベクトルをランダム生成する. |
@end itemize |
@end itemize |
|
|
@example |
@example |
Line 212 Copyright @copyright{} Masayuki Noro |
|
Line 212 Copyright @copyright{} Masayuki Noro |
|
[ -3 2 3 ] |
[ -3 2 3 ] |
@end example |
@end example |
|
|
@node invmat,,, $B9TNs$K4X$9$kH!?t(B |
@node invmat,,, 行列に関する函数 |
@subsection @code{invmat} |
@subsection @code{invmat} |
@findex invmat |
@findex invmat |
|
|
@table @t |
@table @t |
@item invmat(@var{mat}) |
@item invmat(@var{mat}) |
:: @var{mat} $B$N5U9TNs$r7W;;$9$k(B. |
:: @var{mat} の逆行列を計算する. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B%j%9%H(B |
リスト |
@item mat |
@item mat |
$B@5J}9TNs(B |
正方行列 |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item |
@item |
$B@5J}9TNs(B @var{mat} $B$N5U9TNs$r7W;;$9$k(B. |
正方行列 @var{mat} の逆行列を計算する. |
@item |
@item |
$B7k2L$O(B @var{[invmat,denom]} $B$J$k%j%9%H$G$"$k(B. $B$3$3$G(B, @var{invmat} $B$O(B |
結果は @var{[invmat,denom]} なるリストである. ここで, @var{invmat} は |
$B9TNs(B, @var{denom} $B$OJ,Jl$rI=$9<0$G$"$j(B, @var{invmat/denom} $B$,5U9TNs$rI=$9(B. |
行列, @var{denom} は分母を表す式であり, @var{invmat/denom} が逆行列を表す. |
@item |
@item |
@var{mat}$B$,@0?t9TNs(B, $B$"$k$$$OB?9`<09TNs$N>l9g(B, @var{invmat} $B$O(B |
@var{mat}が整数行列, あるいは多項式行列の場合, @var{invmat} は |
$B$=$l$>$l@0?t9TNs(B, $B$"$k$$$OB?9`<0$H$J$k(B. $B$3$N;EMM$O(B, $BL5BL$JJ,?t(B, $BM-M}<0(B |
それぞれ整数行列, あるいは多項式となる. この仕様は, 無駄な分数, 有理式 |
$B7W;;$r>J$/$?$a$KDj$a$i$l$F$$$k$,(B, $B;H$$$K$/$$>l9g$b$"$k(B. |
計算を省くために定められているが, 使いにくい場合もある. |
@end itemize |
@end itemize |
|
|
@example |
@example |
Line 258 Copyright @copyright{} Masayuki Noro |
|
Line 258 Copyright @copyright{} Masayuki Noro |
|
[ 0 0 0 1 ] |
[ 0 0 0 1 ] |
@end example |
@end example |
|
|
@node det nd_det,,, $B9TNs$K4X$9$kH!?t(B |
@node det nd_det,,, 行列に関する函数 |
@subsection @code{det},@code{nd_det} |
@subsection @code{det},@code{nd_det} |
@findex det |
@findex det |
@findex nd_det |
@findex nd_det |
Line 266 Copyright @copyright{} Masayuki Noro |
|
Line 266 Copyright @copyright{} Masayuki Noro |
|
@table @t |
@table @t |
@item det(@var{mat}[,@var{mod}]) |
@item det(@var{mat}[,@var{mod}]) |
@itemx nd_det(@var{mat}[,@var{mod}]) |
@itemx nd_det(@var{mat}[,@var{mod}]) |
:: @var{mat} $B$N9TNs<0$r5a$a$k(B. |
:: @var{mat} の行列式を求める. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B<0(B |
式 |
@item mat |
@item mat |
$B9TNs(B |
行列 |
@item mod |
@item mod |
$BAG?t(B |
素数 |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item |
@item |
@code{det} $B$*$h$S(B @code{nd_det} $B$O9TNs(B @var{mat} $B$N9TNs<0$r5a$a$k(B. |
@code{det} および @code{nd_det} は行列 @var{mat} の行列式を求める. |
@item |
@item |
$B0z?t(B @var{mod} $B$,$"$k;~(B, GF(@var{mod}) $B>e$G$N9TNs<0$r5a$a$k(B. |
引数 @var{mod} がある時, GF(@var{mod}) 上での行列式を求める. |
@item |
@item |
$BJ,?t$J$7$N%,%&%9>C5nK!$K$h$C$F$$$k$?$a(B, $BB?JQ?tB?9`<0$r@.J,$H$9$k(B |
分数なしのガウス消去法によっているため, 多変数多項式を成分とする |
$B9TNs$KBP$7$F$O>.9TNs<0E83+$K$h$kJ}K!$N$[$&$,8zN($,$h$$>l9g$b$"$k(B. |
行列に対しては小行列式展開による方法のほうが効率がよい場合もある. |
@item |
@item |
@code{nd_det} $B$OM-M}?t$^$?$OM-8BBN>e$NB?9`<09TNs$N9TNs<0(B |
@code{nd_det} は有理数または有限体上の多項式行列の行列式 |
$B7W;;@lMQ$G$"$k(B. $B%"%k%4%j%:%`$O$d$O$jJ,?t$J$7$N%,%&%9>C5nK!$@$,(B, |
計算専用である. アルゴリズムはやはり分数なしのガウス消去法だが, |
$B%G!<%?9=B$$*$h$S>h=|;;$N9)IW$K$h$j(B, $B0lHL$K(B @code{det} $B$h$j9bB.$K(B |
データ構造および乗除算の工夫により, 一般に @code{det} より高速に |
$B7W;;$G$-$k(B. |
計算できる. |
@end itemize |
@end itemize |
|
|
@example |
@example |
Line 309 Copyright @copyright{} Masayuki Noro |
|
Line 309 Copyright @copyright{} Masayuki Noro |
|
[-x+z,1],[-x+v,1],[-x+y,1]] |
[-x+z,1],[-x+v,1],[-x+y,1]] |
@end example |
@end example |
|
|
@node generic_gauss_elim,,, $B9TNs$K4X$9$kH!?t(B |
@node generic_gauss_elim,,, 行列に関する函数 |
@subsection @code{generic_gauss_elim} |
@subsection @code{generic_gauss_elim} |
@findex generic_gauss_elim |
@findex generic_gauss_elim |
|
|
@table @t |
@table @t |
@item generic_gauss_elim(@var{mat}) |
@item generic_gauss_elim(@var{mat}) |
:: $B@0?t9TNs$r4JLs$9$k(B. |
:: 整数行列を簡約する. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B%j%9%H(B |
リスト |
@item mat |
@item mat |
$B@0?t9TNs(B |
整数行列 |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item |
@item |
$B@0?t9TNs(B @var{mat} $B$N4JLs3,CJ7A(B (reduced row echelon form; rref) $B$r7W;;$7(B, |
整数行列 @var{mat} の簡約階段形 (reduced row echelon form; rref) を計算し, |
$B$=$l$r9=@.$9$k%G!<%?$r%j%9%H$H$7$FJV$9(B. |
それを構成するデータをリストとして返す. |
@item |
@item |
$B=PNO$O(B @var{[B,D,J,K]} $B$N7A$N%j%9%H$G$"$k(B. $BF~NO(B @var{mat} $B$,(B @var{m} $B9T(B |
出力は @var{[B,D,J,K]} の形のリストである. 入力 @var{mat} が @var{m} 行 |
@var{n} $BNs$H$7(B, $B$=$N%i%s%/$,(B @var{r} $B$H$9$l$P(B, @var{B} $B$O(B @var{r} $B9T(B |
@var{n} 列とし, そのランクが @var{r} とすれば, @var{B} は @var{r} 行 |
@var{n-r} $BNs$N9TNs$G$"$k(B. @var{D} $B$O@0?t(B, @var{J} $B$OD9$5(B @var{r}, |
@var{n-r} 列の行列である. @var{D} は整数, @var{J} は長さ @var{r}, |
@var{K} $B$OD9$5(B @var{n-r} $B$N@0?t%Y%/%H%k$G$"$k(B. |
@var{K} は長さ @var{n-r} の整数ベクトルである. |
@item |
@item |
$B=PNO%G!<%?$O(B @var{mat} $B$N(B rref $B$r%(%s%3!<%I$7$F$$$k(B. |
出力データは @var{mat} の rref をエンコードしている. |
rref $B$NBh(B @var{J[l]} $BNs$O(B @var{l} $B9TL\$N$_$,(B @var{D}, $B$=$l0J30$O(B 0 $B$N(B |
rref の第 @var{J[l]} 列は @var{l} 行目のみが @var{D}, それ以外は 0 の |
$BNs%Y%/%H%k(B, rref $B$N(B $BBh(B @var{K[l]} $BNs$O(B @var{B} $B$NBh(B @var{l} $BNs$r(B, $B>e$+$i(B |
列ベクトル, rref の 第 @var{K[l]} 列は @var{B} の第 @var{l} 列を, 上から |
$B5M$a$?$b$N$H$J$k(B. |
詰めたものとなる. |
@item |
@item |
$B$3$N$h$&$J7A<0$G=PNO$9$kM}M3$O(B, $BF~NO9TNs$N%i%s%/$,Bg$-$$>l9g$K(B, |
このような形式で出力する理由は, 入力行列のランクが大きい場合に, |
rref $B$O(B 0 $B$,B?$$AB$J9TNs$H$J$j(B, $B%a%b%j$rB?$/>CHq$9$k$3$H$H(B, |
rref は 0 が多い疎な行列となり, メモリを多く消費することと, |
$B$3$N7A$NJ}$,(B, $B%W%m%0%i%`>e$G%G!<%?$rMxMQ$7$d$9$$$3$H$K$h$k(B. |
この形の方が, プログラム上でデータを利用しやすいことによる. |
@end itemize |
@end itemize |
|
|
@example |
@example |
Line 356 rref $B$O(B 0 $B$,B?$$AB$J9TNs$H$J$j(B, $B%a%b%j$ |
|
Line 356 rref $B$O(B 0 $B$,B?$$AB$J9TNs$H$J$j(B, $B%a%b%j$ |
|
[ -1 1 ],2,[ 0 1 2 ],[ 3 4 ]] |
[ -1 1 ],2,[ 0 1 2 ],[ 3 4 ]] |
@end example |
@end example |
|
|
$BNc$($P(B, rref $B$r7W;;$9$kH!?t$O<!$N$h$&$K=q$1$k(B. |
例えば, rref を計算する函数は次のように書ける. |
@example |
@example |
def my_rref(A) |
def my_rref(A) |
@{ |
@{ |
|
|
|
|
|
|
@table @t |
@table @t |
@item $B;2>H(B |
@item 参照 |
@fref{matrix vector linalg.unit_mat} |
@fref{matrix vector linalg.unit_mat} |
@end table |
@end table |
|
|
@node linalg.compute_kernel linalg.compute_image,,, $B9TNs$K4X$9$kH!?t(B |
@node linalg.compute_kernel linalg.compute_image,,, 行列に関する函数 |
@subsection @code{linalg.compute_kernel}, @code{linalg.compute_image} |
@subsection @code{linalg.compute_kernel}, @code{linalg.compute_image} |
@findex linalg.compute_kernel |
@findex linalg.compute_kernel |
@findex linalg.compute_image |
@findex linalg.compute_image |
|
|
@table @t |
@table @t |
@item linalg.compute_kernel(@var{mat}[|rhs=@var{vect}]) |
@item linalg.compute_kernel(@var{mat}[|rhs=@var{vect}]) |
:: $BM-M}?t9TNs$N3K$N4pDl$r7W;;$9$k(B. |
:: 有理数行列の核の基底を計算する. |
@itemx linalg.compute_image(@var{mat}) |
@itemx linalg.compute_image(@var{mat}) |
:: $BM-M}?t9TNs$NA|$N4pDl$r7W;;$9$k(B. |
:: 有理数行列の像の基底を計算する. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B%j%9%H(B |
リスト |
@item mat |
@item mat |
$BM-M}?t9TNs(B |
有理数行列 |
@item vect |
@item vect |
$BM-M}?t%Y%/%H%k(B |
有理数ベクトル |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item |
@item |
@var{m} $B9T(B @var{n} $BNs$N9TNs$r(B, $BNs%Y%/%H%k$K:8$+$i3]$1$k$3$H$K$h$j(B |
@var{m} 行 @var{n} 列の行列を, 列ベクトルに左から掛けることにより |
@var{n} $B<!85%Y%/%H%k6u4V$+$i(B |
@var{n} 次元ベクトル空間から |
@var{m} $B<!85%Y%/%H%k6u4V$X$N@~7A<LA|$H$_$J$9(B. |
@var{m} 次元ベクトル空間への線形写像とみなす. |
@item |
@item |
@code{linalg.compute_kernel} $B$OM-M}?t9TNs(B @var{mat} $B$N3K$N4pDl$r7W;;$9$k(B. |
@code{linalg.compute_kernel} は有理数行列 @var{mat} の核の基底を計算する. |
@item |
@item |
@code{linalg.compute_kernel} $B$N=PNO$O(B @var{[[v1,pos1],@dots{},[vl,posl]]} $B$N7A$N%j%9%H$G$"$k(B. $B$3$3$G(B, |
@code{linalg.compute_kernel} の出力は @var{[[v1,pos1],@dots{},[vl,posl]]} の形のリストである. ここで, |
@var{vi} $B$O4pDl%Y%/%H%k(B, @var{posi} $B$O(B, @var{vi} $B$N<g@.J,0LCV(B, $B$9$J$o$A(B |
@var{vi} は基底ベクトル, @var{posi} は, @var{vi} の主成分位置, すなわち |
$B:G>.$N%$%s%G%C%/%9$r;}$D@.J,$N0LCV$rI=$9(B. @var{posi} $B$OA4$F0[$J$k$3$H(B |
最小のインデックスを持つ成分の位置を表す. @var{posi} は全て異なること |
$B$,J]>Z$5$l$k(B. |
が保証される. |
@item |
@item |
$B%*%W%7%g%s(B @var{vect} $B$,;XDj$5$l$?>l9g(B, $B7k2L$O(B |
オプション @var{vect} が指定された場合, 結果は |
@var{[@var{sol},[[v1,pos1],@dots{},[vl,posl]]]} $B$J$k%j%9%H$H$J$k(B. |
@var{[@var{sol},[[v1,pos1],@dots{},[vl,posl]]]} なるリストとなる. |
$B$3$3$G(B @var{sol} $B$O(B @var{mat sol = vect} $B$rK~$?$9%Y%/%H%k(B ($BFC<l2r(B), |
ここで @var{sol} は @var{mat sol = vect} を満たすベクトル (特殊解), |
$B$N$3$j$O3K$N4pDl$G$"$k(B. |
のこりは核の基底である. |
@item |
@item |
$B2r$,B8:_$7$J$$$h$&$J(B @var{vect} $B$r;XDj$9$k$H%(%i!<$r5/$3$9(B. |
解が存在しないような @var{vect} を指定するとエラーを起こす. |
@item |
@item |
@code{linalg.compute_image} $B$OM-M}?t9TNs(B @var{mat} $B$NA|$N4pDl$r7W;;$9$k(B. |
@code{linalg.compute_image} は有理数行列 @var{mat} の像の基底を計算する. |
@item |
@item |
@code{linalg.compute_image} $B$N=PNO$O(B, @var{[v1,pos1,hist1],@dots{},[vl,posl,histl]} $B$N7A$N%j%9%H$G$"$k(B. |
@code{linalg.compute_image} の出力は, @var{[v1,pos1,hist1],@dots{},[vl,posl,histl]} の形のリストである. |
$B$3$3$G(B, @var{vi} $B$O4pDl%Y%/%H%k(B, @var{posi} $B$O(B, @var{vi} $B$N<g@.J,0LCV(B, $B$9$J$o$A(B |
ここで, @var{vi} は基底ベクトル, @var{posi} は, @var{vi} の主成分位置, すなわち |
$B:G>.$N%$%s%G%C%/%9$r;}$D@.J,$N0LCV$rI=$9(B. @var{posi} $B$OA4$F0[$J$k$3$H(B |
最小のインデックスを持つ成分の位置を表す. @var{posi} は全て異なること |
$B$,J]>Z$5$l$k(B. @var{histi} $B$O(B, @var{vi} $B$,(B, @var{mat} $B$NNs$+$i$I$N$h$&$K(B |
が保証される. @var{histi} は, @var{vi} が, @var{mat} の列からどのように |
$B:n$i$l$k$+$r<($9%G!<%?$G$"$k(B. $BJ,;6B?9`<0$GI=8=$5$l$F$*$j(B, $B;X?t$,9T%$%s%G%C%/%9(B, |
作られるかを示すデータである. 分散多項式で表現されており, 指数が行インデックス, |
$B78?t$,(B, $B0l<!7k9g$N78?t$rI=$9(B. $B$3$N%G!<%?$K$h$j:n$i$l$k%Y%/%H%k$O(B, $BDj?tG\$r(B |
係数が, 一次結合の係数を表す. このデータにより作られるベクトルは, 定数倍を |
$B=|$$$F(B @var{vi} $B$KEy$7$$(B. |
除いて @var{vi} に等しい. |
@end itemize |
@end itemize |
|
|
@example |
@example |
|
|
[[ 0 0 3 ],2,(-3)*<<2>>+(-1)*<<1>>+(1)*<<0>>]] |
[[ 0 0 3 ],2,(-3)*<<2>>+(-1)*<<1>>+(1)*<<0>>]] |
@end example |
@end example |
|
|
@node linalg.minipoly_mat,,, $B9TNs$K4X$9$kH!?t(B |
@node linalg.minipoly_mat,,, 行列に関する函数 |
@subsection @code{linalg.minipoly_mat} |
@subsection @code{linalg.minipoly_mat} |
@findex linalg.minipoly_mat |
@findex linalg.minipoly_mat |
|
|
@table @t |
@table @t |
@item linalg.minipoly_mat(@var{mat}) |
@item linalg.minipoly_mat(@var{mat}) |
:: $BM-M}?t9TNs(B @var{mat} $B$N:G>.B?9`<0$r7W;;$9$k(B. |
:: 有理数行列 @var{mat} の最小多項式を計算する. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B0lJQ?tB?9`<0(B |
一変数多項式 |
@item mat |
@item mat |
$BM-M}?t9TNs(B |
有理数行列 |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item |
@item |
$BM-M}?t9TNs(B @var{mat} $B$N:G>.B?9`<0$r7W;;$7(B, $BJQ?t(B @var{x} $B$N0lJQ?tB?9`<0$H$7$F(B |
有理数行列 @var{mat} の最小多項式を計算し, 変数 @var{x} の一変数多項式として |
$BJV$9(B. |
返す. |
@end itemize |
@end itemize |
|
|
@example |
@example |
|
|
[ 0 0 0 ] |
[ 0 0 0 ] |
@end example |
@end example |
|
|
@node linalg.jordan_canonical_form linalg.sample_mat,,, $B9TNs$K4X$9$kH!?t(B |
@node linalg.jordan_canonical_form linalg.sample_mat,,, 行列に関する函数 |
@subsection @code{linalg.jordan_canonical_form},@code{linalg.sample_mat} |
@subsection @code{linalg.jordan_canonical_form},@code{linalg.sample_mat} |
@findex linalg.jordan_canonical_form |
@findex linalg.jordan_canonical_form |
|
|
@table @t |
@table @t |
@item linalg.jordan_canonical_form(@var{mat}) |
@item linalg.jordan_canonical_form(@var{mat}) |
:: $BM-M}?t@5J}9TNs$N%8%g%k%@%sI8=`7A$r7W;;$9$k(B. |
:: 有理数正方行列のジョルダン標準形を計算する. |
@itemx linalg.sample_mat(@var{list}) |
@itemx linalg.sample_mat(@var{list}) |
:: $B;XDj$5$l$?%8%g%k%@%sI8=`7A$r;}$DM-M}?t@5J}9TNs$r@8@.$9$k(B. |
:: 指定されたジョルダン標準形を持つ有理数正方行列を生成する. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
$B%j%9%H(B |
リスト |
@item mat |
@item mat |
$BM-M}?t@5J}9TNs(B |
有理数正方行列 |
@item list |
@item list |
$B%8%g%k%@%s%V%m%C%/$N%j%9%H(B |
ジョルダンブロックのリスト |
@end table |
@end table |
|
|
@itemize @bullet |
@itemize @bullet |
@item |
@item |
@code{linalg.jordan_canonical_form(@var{mat})} $B$O(B |
@code{linalg.jordan_canonical_form(@var{mat})} は |
$BM-M}?t@5J}9TNs(B @var{mat} $B$N%8%g%k%@%sI8=`7A$r7W;;$9$k(B. |
有理数正方行列 @var{mat} のジョルダン標準形を計算する. |
@item |
@item |
$B=PNO$O(B @var{[P,[[e1,s1,n1],@dots{},[el,sl,nl]],defideal]} $B$H$$$&7A$N%j%9%H(B |
出力は @var{[P,[[e1,s1,n1],@dots{},[el,sl,nl]],defideal]} という形のリスト |
$B$G$"$k(B. $B$3$3$G(B, @var{P} $B$OJQ499TNs(B, $B$9$J$o$A(B @var{P^(-1)AP} $B$,%8%g%k%@%s(B |
である. ここで, @var{P} は変換行列, すなわち @var{P^(-1)AP} がジョルダン |
$BI8=`7A$H$J$k@5B'9TNs(B, @var{[ei,si,ni]} $B$O(B, $B8GM-CM(B @var{ei}, $B%5%$%:(B @var{si} |
標準形となる正則行列, @var{[ei,si,ni]} は, 固有値 @var{ei}, サイズ @var{si} |
$B$N%8%g%k%@%s%V%m%C%/$,(B @var{ni} $B8DJB$V$3$H$r0UL#$9$k(B. |
のジョルダンブロックが @var{ni} 個並ぶことを意味する. |
@item |
@item |
$B0lHL$K(B, $B=PNO$O(B @var{a0}, @dots{}, @var{am} $B$N7A$N%Q%i%a%?$r4^$`(B. $B$3$l$i$O(B |
一般に, 出力は @var{a0}, @dots{}, @var{am} の形のパラメタを含む. これらは |
$B<B:]$K$O(B, $B$"$kM-M}?tBN>e4{Ls$JB?9`<0$N:,$G$"$k(B. $B$3$l$i$rDj5A$9$k(B |
実際には, ある有理数体上既約な多項式の根である. これらを定義する |
$BJ}Dx<0$H$7$F(B, @var{defideal} $B$,M?$($i$l$k(B. @var{deflideal} $B$O%j%9%H$N%j%9%H(B |
方程式として, @var{defideal} が与えられる. @var{deflideal} はリストのリスト |
$B$G$"$j(B, $B3FMWAG$G$"$k%j%9%H$O(B, $B0lAH$N6&Lr$J:,A4BN$rDj5A$9$k%$%G%"%k$r(B |
であり, 各要素であるリストは, 一組の共役な根全体を定義するイデアルを |
$BI=$9(B. $B<B:]$K$O(B, $BBP1~$9$k0lJQ?tB?9`<0$N:,$r(B, $B:,$H78?t$N4X78$K$h$jI=$7$?(B |
表す. 実際には, 対応する一変数多項式の根を, 根と係数の関係により表した |
$B$b$N$G$"$k(B. |
ものである. |
@item |
@item |
@code{linalg.sample_mat(@var{list})} $B$O;XDj$5$l$?%8%g%k%@%sI8=`7A$r(B |
@code{linalg.sample_mat(@var{list})} は指定されたジョルダン標準形を |
$B;}$D$h$&$J9TNs$r@8@.$9$k(B. @var{list} $B$O(B @var{[[e1,s1],@dots{},[el,sl]]} |
持つような行列を生成する. @var{list} は @var{[[e1,s1],@dots{},[el,sl]]} |
$B$N7A$N%j%9%H$G(B, @var{[ei,s1]} $B$O8GM-CM(B @var{ei}, $B%5%$%:(B @var{si} $B$N(B |
の形のリストで, @var{[ei,s1]} は固有値 @var{ei}, サイズ @var{si} の |
$B%8%g%k%@%s%V%m%C%/$rI=$9(B. $BF1$8%5%$%:$N%8%g%k%@%s%V%m%C%/$O$$$/$D$"$C$F(B |
ジョルダンブロックを表す. 同じサイズのジョルダンブロックはいくつあって |
$B$b$h$$(B. |
もよい. |
@end itemize |
@end itemize |
|
|
@example |
@example |
|
|
@end example |
@end example |
|
|
@table @t |
@table @t |
@item $B;2>H(B |
@item 参照 |
@fref{linalg.minipoly_mat} |
@fref{linalg.minipoly_mat} |
@end table |
@end table |
|
|
@comment --- $B$*$^$8$J$$(B --- |
@comment --- おまじない --- |
@node Index,,, Top |
@node Index,,, Top |
@unnumbered Index |
@unnumbered Index |
@printindex fn |
@printindex fn |
|
|
@summarycontents |
@summarycontents |
@contents |
@contents |
@bye |
@bye |
@comment --- $B$*$^$8$J$$=*$j(B --- |
@comment --- おまじない終り --- |
|
|
* linalg.reduce_vect:: |
* linalg.reduce_vect:: |
* linalg.partial_fraction:: |
* linalg.partial_fraction:: |