| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
24.1 行列と線形代数について 24.2 行列と線形代数に関する諸定義
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
24.1.1 DOT 24.1.2 ベクトル
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
警告: VECTパッケージの読み込みを行うと"."演算子を行列の非可換積では無く、 可換演算子であると宣言してしまう。
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(* 訳者注: ADDCOLで追加するリストや行列は行列Mの大きさと矛盾しないものでなければならない。 先ず、リストの場合、長さが行列Mの行数と一致していなければならない。又、行列を 追加する場合は追加行列の行数が行列Mの行数と一致していれば良い。 尚、後述のADDROWも同様で、行と列を読み換えると良い。 *) |
%E^MATRIX([1,2],[3,4]) ==> MATRIX([%E,%E^2],[%E^3,%E^4]) |
[2 1 - A -5 B ]
(D2) [ ]
[A B C ]
(C3) ECHELON(D2);
[ A - 1 5 B ]
[1 - ----- - --- ]
[ 2 2 ]
(D3) [ ]
[ 2 C + 5 A B ]
[0 1 ------------]
[ 2 ]
[ 2 B + A - A]
|
(* 訳者注: 原文では、"PRINTFILE(EIGEN,USAGE,SHARE);を実行せよ"となっているが、少なくとも UNIX環境では使えない。 *) |
EIGENVALUES(mat)は引数に一つの行列を取ってリストを返す。このリストの最初の 副リストは固有値リストで、その他の副リストはその固有値の順番に対応した重複度 のリストとなる。[MACSYMAの関数SOLVEが、ここで行列の特性多項式の根の計算で利用 されている。時折、SOLVEは多項式の根を見付け損なう事がある。この場合、 CONJUGATE,INNERPRODUCT,UNIVECTOR,COLUMNVECTORとGRAMSCHMIDT以外は使えず、 これらだけが固有値が判らなくても使える。幾つかの状況で、SOLVEは非常にいい加減 な固有値を生成する。処理を続ける前に答を簡易化しても良い。この為の予測があり、 それらは以下で説明されている。(これはSOLVEが実数と予測されるが、それ程明確で ない実数式を返す場合に生じる。)]。
EIGENVALUE命令はMACSYMAから直接使える。この他の関数を利用する為にはEIGEN パッケージの読み込みが必要となり、事前にEIGENVALUESを実行するか、 LOAD("eigen")を実行する。
(* 訳者注:
原文ではLOADFILE("eigen")を実行する様に書いてあるが、LOAD命令でなければ読込み
に問題が生じている。
*)
|
この関数に影響を与えるフラグは:
もし、固有値が不確かな場合、ALGSYSは解を生成する事が出来ない事がある。この 場合、EIGENVALUES命令を用いて最初に見つけた固有値の簡易化を行う事を勧める。 そして、より簡易な形にする事以上の鮮やかな手段は無い。後に述べるKNOWNEIGVALS フラグも使う事が可能である)。
(C1) ENTERMATRIX(3,3);
Is the matrix 1. Diagonal 2. Symmetric 3. Antisymmetric
4. General
Answer 1, 2, 3 or 4
1;
Row 1 Column 1: A;
Row 2 Column 2: B;
Row 3 Column 3: C;
Matrix entered.
[ A 0 0 ]
[ ]
(D1) [ 0 B 0 ]
[ ]
[ 0 0 C ]
|
(C1) H[I,J]:=1/(I+J-1)$
(C2) GENMATRIX(H,3,3);
[ 1 1]
[1 - -]
[ 2 3]
[ ]
[1 1 1]
(D2) [- - -]
[2 3 4]
[ ]
[1 1 1]
[- - -]
[3 4 5]
|
(* 訳者注:
原文ではBATCH("kach.dem")を実行すると書いてあるが、kach.demは無く、kach.mc
のみがある。
*)
|
注意:結果は自動的に展開されない。最初から多項式成分を持つ行列の場合、 EXPAND(INVERT(mat)),DETOUTで生成された出力は見栄えが良い。行列式で割られた方 が望ましい場合、XTHRU(%)を併用する事や、 他にEXPAND(ADJOINT(mta))/EXPAND(DETERMINANT(mat))からも計算すると良い。
INVERT(mat):=ADJOINT(mat)/DETERMINANT(mat)。 |
逆行列を計算する他の手法に関しては、DESCRIBE("^^");も参照せよ。
演算子、+,-,*,**は全て成分対成分の演算子、つまり、全ての演算子は通常"."(点) 演算子を含めて全てに作用する。多くの点や行列対リスト演算子を含め、簡易化を 制御する為のスイッチがある。
行列に対する関連するオプションには: LMXCHAR, RMXCHAR, RATMX, LISTARITH, DETOUT, DOALLMXOPS, DOMXEXPT DOMXMXOPS, DOSCMXOPS, DOSCMXPLUS, SCALARMATRIXとSPARSEがある。 それらに関する詳細は、DESCRIBE(option)を実行せよ。
(* 訳者注: maxima-5.6ではmatrix.dem1とmatrix.dem2共に無い。 *) |
(* 訳者注:
原文ではLOADFILE("nchrpl")を実行せよとあるが、LOADFILEではエラーが出る。
*)
|
EIGENVECTORS命令の詳細で述べたスイッチはここでも同様の影響を与える。加えて、 便利なスイッチがある:
KNOWNEIGENVEVTS[FALSE]がTRUEに設定されると、EIGENパッケージでは利用者が行列の 固有ベクトルを知っており、大域変数LISTEIGVECTSに固有ベクトルが蓄えられている と仮定する。
LISTEIGVECTSはEIGENVECTORS命令の出力と同じ形式のリストを設定しておく必要があ る(KNOWNEIGVECTSがTRUEで、固有ベクトルのリストも与えられており、 NONDIAGONALIZABLEの設定が正しくない場合、それを正しい値に設定して欲しい。 作者は利用者が自分が何を行っているか知っており、また、適切な次元でベクトル 空間を張らない固有ベクトルで構成された行列の対角化を望んでいないと仮定して いる…)。
EXPANDALL, EXPANDDOT, EXPANDDOTPLUS, EXPANDCROSS, EXPANDCROSSPLUS, EXPANDCROSSCROSS, EXPANDGRAD, EXPANDGRADPLUS, EXPANDGRADPROD, EXPANDDIV, EXPANDDIVPLUS, EXPANDDIVPROD, EXPANDCURL, EXPANDCURLPLUS, EXPANDCURLCURL, EXPANDLAPLACIAN, EXPANDLAPLACIANPLUS, EXPANDLAPLACIANPROD. |
全てのこれらのスイッチはデフォルト値としてFALSEを持つ。PLUS修飾子は加法性と 分配性を参照する。PROD修飾子はあらゆる種類の積演算に対して展開性の参照を行う。 EXPANDCROSSCROSSはp~(q~r)を(p,r)*q-(p.q)*rで置き換えるか参照を行い、それから EXPANDCURLCURLはCURL CURLpをGRAD DIV p + DIV GRAD pで置き換えるか参照する。 EXPANDCROSS:TRUEはEXPANDCROSSPLUS:EXPANDCROSSCROSS:TRUE等々と同じ影響を持つ。 二つの他のスイッチ、EXPANDPLUSとEXPANDPRODは似た修飾スイッチをTRUEに設定した ものと同じ効果を持つ。TRUEであれば、他のスイッチ、EXPANDLAPLACIANTODIVGRADは LAPLACE演算子をDIV GRADで置き換えてしまう。これら全てのスイッチのデフォルト値 はFALSEである。簡便の為にこれら全てのスイッチはEVFLAGとして宣言されている。 直交曲線座標系に対しては、大域変数COORDINATES[[X,Y,Z]],DIMENSION[3], SF[[1,1,1]]とSFPROD[1]が関数invocationで設定されている。
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |