[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24. 行列と線形代数

24.1 行列と線形代数について  
24.2 行列と線形代数に関する諸定義  

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.1 行列と線形代数について

24.1.1 DOT  
24.1.2 ベクトル  

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.1.1 DOT

- "."は行列(非可換)乗法向けのDOT演算子である。"."がこの意味で使われる場合、 両側にA . Bの様にSpaceを入れておくべきである。こうすると小数点との区別が明瞭 になる。APROPOS(DOT);を実行するとDOT演算子に影響を与えるスイッチのリストが 得られる。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.1.2 ベクトル

- SHARE;VECT > ファイルにはベクトル解析パッケージが含まれており、 share/vect.demに関連するデモがある。そして、SHARE;VECT ORTHには様々な直交曲線 座標系(orthogonal curvlinear coordinate system)に関する定義が含まれている。 LOAD(VECT);でパッケージの読み込みを行う。ベクトル解析パッケージを使えば内積と 外積、勾配、発散、回転やLaplace演算子を含む記号式の纏めと簡易化が行える。 和や積に対するこれらの演算子の分配は様々な他の拡張と同様に利用者の指定で制御 される。又、スカラー値や場のベクトルの微分も可能である。このパッケージは次の 命令を含む:VECTORSIMP、SCALEFACTORS、EXPRESS、POTENTIALとVECTORPOTENTIAL。 これらの命令に対し、DESCRIBEを実行するかPRINTFILE(VECT,USAGE,SHARE);で詳細を 読む事が出来る。

警告: VECTパッケージの読み込みを行うと"."演算子を行列の非可換積では無く、 可換演算子であると宣言してしまう。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

24.2 行列と線形代数に関する諸定義

関数: ADDCOL (M,list1,list2,...,listn)
一つ、又はそれ以上のリスト(又は行列)を行列Mの列として追加する。

 
(* 訳者注:

ADDCOLで追加するリストや行列は行列Mの大きさと矛盾しないものでなければならない。
先ず、リストの場合、長さが行列Mの行数と一致していなければならない。又、行列を
追加する場合は追加行列の行数が行列Mの行数と一致していれば良い。
尚、後述のADDROWも同様で、行と列を読み換えると良い。

*)

関数: ADDROW (M,list1,list2,...,listn)
一つ、又は複数のリスト(又は行列)を行列Mに行として追加する。

関数: ADJOINT (matrix)
余因子行列を計算する。

関数: AUGCOEFMATRIX ([eq1, ...], [var1, ...])
係数行列を生成する。この行列は、eq1,..から構成される線形方程式系に含まれる 変数var1,..の係数で構築される。この係数行列には各方程式の定数項(変数var1,... に依存しない項)が列として付け加えられている。 例題はEXAMPLE(AUGCOEFMATRIX);を実行せよ。

関数: CHARPOLY (M, var)
行列Mの特性多項式を変数varに対して計算する。つまり、 DETERMINANT(M - DIAGMATRIX(LENGTH(M),var))を計算する。この命令の例は EXAMPLE(CHARPOLY);を参照せよ。

関数: COEFMATRIX ([eq1, ...], [var1, ...])
連立一次方程式eq1,..の変数var1,..の係数行列。

関数: COL (M,i)
行列Mのi番目の列を返す。

関数: COLUMNVECTOR (X)
EIGENパッケージの関数である。利用する為にはLOAD(EIGEN)を実行せよ。 COLUMNVECTORはリストを引数とし、列ベクトルを返すが、この列ベクトルの各成分は 引数のリストである。つまり、列ベクトルの最初の成分は、引数の最初の成分,...等々 となる(これは、行列の計算でこのパッケージに含まれる関数の出力に含まれる成分を 使う際には便利である)。

関数: CONJUGATE (X)
SHAREディレクトリにあるEIGENパッケージの関数である。CONJUGATEはその変数の複素 共役を返す。このパッケージはLOAD(EIGEN);を実行すれば使える。このパッケージの 詳しい説明はPRINTFILE("eigen.usg");を参照。

関数: COPYMATRIX (M)
行列Mの複製を生成する。この命令はMを成分毎に再生成する時のみに使われる。行列 の複製を行う際にSETMELMXを使うと便利である。

関数: DETERMINANT (M)
Gaussの消去法と似た方法で行列Mの行列式を計算する。結果の形式はRATMXスイッチの 設定に依存する。疎行列の行列式を計算する特別な方法があり、それはRATMX:TRUEと SPARSE:TRUEにこれらのスイッチを設定していれば使える。

変数: DETOUT
デフォルト値:[FALSE] - TRUEであれば、逆行列を計算した時に行列式の割算がその まま行列の外に残される。このスイッチが効力を持つ為にはDOALLMXOPSとDOSCMXOPSが FALSEでなければならない(それらの詳細を参照)。逆に、このスイッチをその他の二つ が正確に設定されるEVで与える事も可能である。

関数: DIAGMATRIX (n, x)
n行n列の対角行列でを返す。ここで対角成分は全てxの行列である。単位行列は DIAGMATRIX(n,1)かIDENT(n)で生成される。

変数: DOALLMXOPS
デフォルト値:[TRUE] - TRUEであれば、全ての行列演算子が評価される。FALSEであれ ば、演算子を支配する個々のDOTスイッチの設定が実行される。

変数: DOMXEXPT
デフォルト値:[TRUE] - TRUEであれば、
 
%E^MATRIX([1,2],[3,4]) ==>
MATRIX([%E,%E^2],[%E^3,%E^4])
となる。一般的に、この変換は<基底>^<羃>の形式の変換に影響する。ここで<基底>は スカラか定数の式であり、<羃>はリストか行列である。この変換はスイッチがFALSE であれば実行されない。

変数: DOMXMXOPS
デフォルト値:[TRUE] - TRUEであれば、全ての行列対行列、又は行列対リスト演算子 が実行される(尚、スカラー対行列演算子は除く);このスイッチがFALSEなら、それら は実行されない。

変数: DOMXNCTIMES
デフォルト値:[FALSE] - FALSEであれば行列の非可換積が実行される。

変数: DONTFACTOR
デフォルト値:[] - DONTFACTORに因子分解を行わない変数のリストを設定しても良い(初期値は空リスト である)。因子分解はDONTFACTORリストに含まれる変数以外に、CRE形式に対して仮定 された変数の順序を用いてより小さな任意の変数に対しても実行されない。

変数: DOSCMXOPS
デフォルト値:[FALSE] - TRUEであればスカラ対行列演算子が実行される。

変数: DOSCMXPLUS
デフォルト値:[FALSE] - TRUEであれば、スカラ + 行列 が行列値となる。 このスイッチはDOALLMXOPSで制御されない。

変数: DOT0NSCSIMP
デフォルト値:[TRUE] - TRUEであれば、零と非スカラの項の非可換積が可換積で簡易化 される。

変数: DOT0SIMP
デフォルト値:[TRUE] - TRUEであれば零のスカラ項の非可換積が可換積で簡易化 される。

変数: DOT1SIMP
デフォルト値:[TRUE] - TRUEであれば、1との他の項との非可換積が可換積で簡易化 される。

変数: DOTASSOC
デフォルト値:[TRUE] - TRUEであれば、(A.B).CがA.(B.C)と簡易化される。

変数: DOTCONSTRULES
デフォルト値:[TRUE] - TRUEであれば定数と他の項の非可換積が可換積で簡易化される。このフラグを 立てると、DOTOCIMO、DOTONSCSIMP、そしてDOT1SIMPも同様に立つ。

変数: DOTDISTRIB
デフォルト値:[FALSE] - TRUEであれば、A.(B+C)はA.B+A.Cに簡易化される。

変数: DOTEXPTSIMP
デフォルト値:[TRUE] - TRUEであれば、A.AはA^2に簡易化される。

変数: DOTIDENT
デフォルト値:[1] - X^^0で返される値。

変数: DOTSCRULES
デフォルト値: [FALSE] - TRUEであれば、A.SC又はSC.AがSC*Aに簡易化され、 A.(SC*B)はSC*(A.B)に簡易化される。

関数: ECHELON (M)
行列Mのechelon形式を生成する。これは初等的な行操作で各々の行の最初の非零元を1、 その元を含む列に対してはその元を含む行よりも下の成分を全て零となる様に変形する (上三角行列)。
 
                        [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]

関数: EIGENVALUES (mat)
SHARE;ディレクトリ上のパッケージがあり、それにはEIGENVALUESとEIGENVECTORSと 関連する行列の計算を行う関数が含まれている。それに関する詳細な情報は PRINTFILE("EIGEN.USG");を実行せよ。

 
(* 訳者注:
原文では、"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命令でなければ読込み
に問題が生じている。

*)

関数: EIGENVECTORS (MAT)
行列をその引数として取り、リストを返す。このリストに含まれる最初の副リストに はEIGENVALUES命令の出力が含まれ、他の副リストには行列の各々の固有値に対応する 固有ベクトルが含まれる。この関数はMACSYMAから直接使えるが、この命令を制御する フラグ(以下を参照)の御利益を亨受したければ、先ず最初にEIGENパッケージを SHAREディレクトリから読み込む必要がある。その為にはLOAD("eigen");を実行すれば 良い。

この関数に影響を与えるフラグは:

もし、固有値が不確かな場合、ALGSYSは解を生成する事が出来ない事がある。この 場合、EIGENVALUES命令を用いて最初に見つけた固有値の簡易化を行う事を勧める。 そして、より簡易な形にする事以上の鮮やかな手段は無い。後に述べるKNOWNEIGVALS フラグも使う事が可能である)。

関数: EMATRIX (m, n, x, i, j)
m行n列の行列を生成する。この行列はi行j列成分のみがxで他が全て零である。

関数: ENTERMATRIX (m, n)
行列の生成をMACSYMAの要求に従ってm*n個の成分を入力して行なう。

 
(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 ]


関数: GENMATRIX (array, i2, j2, i1, j1)
配列から行列を生成する。ここで配列array(i1,j1)は最初(左側上)の元array(i2,j2) が残り(左下)の元となる。j1=i1であれば、j1は削除される。j1=i1=1であれば、 i1とj1の両方が省略される事もある。もしも、配列の選ばれた元が存在しない場合、 記号的な元が使われる。

 
(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]

関数: GRAMSCHMIDT (X)
EIGENパッケージに含まれる関数である。利用する為にLOAD(EIGEN)を実行せよ。 GRAMSCHMIDTは引数としてリストを成分とする一つのリストを取る。ここで各リストは 長さが等しいが、(上で定義した内積に対して)直交している必要は無い。又、互いに 直交したリストで構成されたリストを返す(返ってきた結果は因子分解された整数が 含まれた場合がある。これはMACSYMAのFACTOR関数がGram-Schmidtのアルゴリズムの 各段階の結果を簡易化する為に用いられる為である。こうする事で式がより混乱した ものになる事を避け、この方法で生成される変数の大きさを減らす助けになる)。

関数: HACH (a,b,m,n,l)
Hacijanの線型プログラミングアルゴリズムの実装。これはBATCHを実行すると利用可能 となる("kach.mc"$。使用の詳細はBATCH(kach);を実行して参照する事。

 
(* 訳者注:

原文ではBATCH("kach.dem")を実行すると書いてあるが、kach.demは無く、kach.mc
のみがある。

*)

関数: IDENT (n)
n行n列の単位行列を生成する。

関数: INNERPRODUCT (X,Y)
EIGENパッケージに含まれる関数。使う為にはLOAD(EIGEN)を実行する。INNERPRODUCT は同じ長さの二つのリストを引数として取り、それらの(Xの複素共役).Yで定義される 内積(スカラー値)を返す。ここで、"点"演算子は通常のベクトルのそれと同じもので ある。

関数: INVERT (matrix)
逆行列を余因子行列を用いた方法で求める。これはbfloat値成分や浮動小数点を係数 とする多項式を成分とする行列の逆行列をCRE形式に変換せずに計算出来る。 DETERMINANT命令は余因子の計算で利用される為、RATMXがFALSE(デフォルト値)であれ ば、その逆行列は成分表現を変更せずに計算される。現行の実装は高い次数の行列に 対して効率的なものでは無い。DETOUTフラグがTRUEであれば行列式の部分は逆行列の 外側に出されたままとなる。

注意:結果は自動的に展開されない。最初から多項式成分を持つ行列の場合、 EXPAND(INVERT(mat)),DETOUTで生成された出力は見栄えが良い。行列式で割られた方 が望ましい場合、XTHRU(%)を併用する事や、 他にEXPAND(ADJOINT(mta))/EXPAND(DETERMINANT(mat))からも計算すると良い。

 
INVERT(mat):=ADJOINT(mat)/DETERMINANT(mat)。

逆行列を計算する他の手法に関しては、DESCRIBE("^^");も参照せよ。

変数: LMXCHAR
デフォルト値: [[] - ここで指定した文字は行列表示で(左側)の括弧に使う (RMXCHARを参照)。

関数: MATRIX (row1, ..., rown)
指定した行を持つ行列を定義する。各行列は式のリストの形式を持つ。例えば、 [A,X**2,Y,0]は4個の元を持つリストである。MACSYMAには行列を扱う命令がある。 例えば、DETERMINANT,CHARPOLY,GENMATRIX,ADDCOL,ADDROW,COPYMATRIX,TRANSPOSE, ECHELON,そしてRANKである。又、SHAREディレクトリには固有値(EIGENVALUES)を計算 する為のパッケージがある。これらの事項に関してDESCRIBEを実行すればより詳細な 情報が得られる。行列の積は点演算子"."が対応し、この演算子は利用者が望むならば 他の非可換代数演算子を表現する事にも便利である。"."に対応する羃の演算子は"^^" である。つまり、行列Aに対し、A.A=A^^2であり、もしもAの逆行列が存在すればA^^-1 がその逆行列となる。

演算子、+,-,*,**は全て成分対成分の演算子、つまり、全ての演算子は通常"."(点) 演算子を含めて全てに作用する。多くの点や行列対リスト演算子を含め、簡易化を 制御する為のスイッチがある。

行列に対する関連するオプションには: LMXCHAR, RMXCHAR, RATMX, LISTARITH, DETOUT, DOALLMXOPS, DOMXEXPT DOMXMXOPS, DOSCMXOPS, DOSCMXPLUS, SCALARMATRIXとSPARSEがある。 それらに関する詳細は、DESCRIBE(option)を実行せよ。

関数: MATRIXMAP (fn, M)
行列Mの各成分にfnを作用させる。

関数: MATRIXP (exp)
expが行列であればTRUE、そうでなければFALSEを返す。

変数: MATRIX_ELEMENT_ADD
デフォルト値:[+] - "?";に対して設定して良く、関数名やLAMBDA式であっても良い。 こうする事で、様々な代数的構造が扱える。より詳細は、DEMO("matrix.dem1");と DEMO("matrix.dem2")を実行せよ。

変数: MATRIX_ELEMENT_MULT
デフォルト値:[*] - ".";に対して設定されて良く、関数名やLAMBDA式であっても良い。 こうする事で様々な代数的構造が扱える。より詳細は、DEMO("matrix.dem1");と DEMO("matrix.dem2");を実行せよ。

 
(* 訳者注:
maxima-5.6ではmatrix.dem1とmatrix.dem2共に無い。
*)

変数: MATRIX_ELEMENT_TRANSPOSE
デフォルト値:[FALSE] - 別の便利な設定はTRANSPOSEとNONSCALARS;であり、関数名や LAMBDA式であっても良い。こうする事で様々な代数的構造が扱える。より詳細は DEMO("matrix.dem1");とDEMO("matrix.dem2");を実行せよ。

関数: MATTRACE (M)
正方行列Mのtrace[行列の主対角成分の総和]を計算する。これはNCHARPOLYで利用さ れる。NCHARPOLYはMACSYMAのCHARPOLYの代り用いられている。LOAD("nchrpl");を 実行する事で使える。

 
(* 訳者注:
原文ではLOADFILE("nchrpl")を実行せよとあるが、LOADFILEではエラーが出る。
*)

関数: MINOR (M, i, j)
行列Mのi,j成分の小行列を計算する。即ち、行列Mからi行とj列を抜いた小行列の 行列式である。

関数: NCEXPT (A,B)
A^^Bを(非可換)指数式で表示するのに大き過ぎれば、NCEXPT(A,B)が用いられる。

関数: NCHARPOLY (M,var)
varに対する行列Mの特性多項式を計算する。これはMACSYMAのCHARPOLYとは別物である。 NCHARPOLYでは与えられた行列の羃乗の対角和を計算するが、それは特性多項式の根の 羃乗の総和に等しいと知られているものである。これらの諸量から根の対称式の計算 が可能となり、それらは特性多項式の係数以上の何者でもない。CHARPOLYは VAR*IDENT[N]-Aの行列式を計算している。そんな訳でNCHARPOLYは優れている。 例えば、整数成分の非常に大きな行列の場合は算術的に多項式の計算を避ける為で ある。LOAD("nchrpl");で使える。

関数: NEWDET (M,n)
Mの行列式を計算するが、Johnson-Gentleman tree minorアルゴリズムを用いる。Mは 行列や配列の名前である。変数nは次数である;これはMが行列であればオプションで ある。

宣言: NONSCALAR
- 点演算子"."にaiがリストと行列である事を指定する。

関数: NONSCALARP (exp)
expが非スカラ、つまり、原子を含み、非スカラと宣言されたリストや行列であれば TRUE。

関数: PERMANENT (M,n)
行列Mのpermanentを計算する。permanentは行列式に似ているが符号の変化は無い。

関数: RANK (M)
行列Mの階数を計算する。つまり、Mの非零となる最大の小行列式の大きさである。 注意:RANKは行列成分の値が非常に零に近い場合には誤った答を返す事がある。

変数: RATMX
デフォルト値:[FALSE] - FALSEであれば、行列式や行列の和、差、積が行列の表示 形式で行われ、逆行列の結果も一般の表示となる。TRUEであれば、これらの4個の演算 はCRE形式で行われて逆行列の結果もCRE形式となる。これは成分が往々にして望みも しない展開(RATFACの設定に依存するものの)の原因となる。

関数: ROW (M, i)
行列Mのi番目の行を出力する。

変数: SCALARMATRIXP
デフォルト値:[TRUE] - TRUEであれば、二つの行列のdot積の計算で得られる1x1行列 はスカラーに変換される。もし、ALLに設定されていれば、この変換は1x1行列が簡易 化される時なら何時でも行われる。FALSEに設定されていれば、この変換は行われない。

関数: SETELMX (x, i, j, M)
行列Mのi行j列成分をxで置き換える。置き換えられた行列が値として返される。表記 M[i,j]:xも使え、Mを同じ方法で置き換える。しかし、値として返って来るのはxで ある。

関数: SIMILARITYTRANSFORM (MAT)
EIGENパッケージに含まれる関数。利用する為にはLOAD(EIGEN);を実行する。 SIMILARITYTRANSFORMは一つの行列を引数とし、UNITEIGENVECTORS命令の出力結果の リストを返す。加えて、NONDIAGONALIZABLEスイッチがFALSEであれば、二つの大域行列 LEFTMATRIXとRIGHTMATRIXが生成される。これらの行列はLEFTMATRIX.MAT.RIGHTMATRIX でNATの固有値が対角成分に持つ対角行列となる性質を持つ。NONDIAGONALIZABLEが TRUEであれば、これらの二つの行列は生成されない。HERMITIANMATRIXスイッチがTRUE であれば、LEFTMATRIXはRIGHTMATRIXの複素共役の転置となる。その他では、 LEFTMATRIXはRIGHTMATRIXの逆行列でもある。 RIGHTMATRIXはMATの正規化した固有ベクトルを列とする行列である。 その他のスイッチ(DESCRIBE(EIGENVALUES);とDESCRIBE(EIGENVECTORS);を参照)は SIMILARITYTRANSFORMがRIGHTMATRRIXを生成する為にパッケージのその他の関数を呼ぶ 為に同じ影響を持つ。

変数: SPARSE
デフォルト値:[FALSE] - この変数がTRUEでRATMX:TRUEであれば、DETERMINANTは 疎行列式を計算する為の特別のルーチンを利用する。

関数: SUBMATRIX (m1, ..., M, n1, ...)
mi行とni列が削除された新しい行列を生成する。

関数: TRANSPOSE (M)
行列Mの転置を生成する。

関数: TRIANGULARIZE (M)
行列Mの上三角行列形式を生成する。ここでMは正方行列である必要は無い。

関数: UNITEIGENVECTORS (MAT)
EIGENパッケージの関数。利用する為にはLOAD(EIGEN)を実行する。UNITEIGENVALUESは 一つの行列を引数としてリストを返す。このリストの最初の成分となる副リストには EIGENVALUES命令の出力があり、他の副リストには正規化した固有ベクトルが固有値に 対応する順番で並んでいる。

EIGENVECTORS命令の詳細で述べたスイッチはここでも同様の影響を与える。加えて、 便利なスイッチがある:

KNOWNEIGENVEVTS[FALSE]がTRUEに設定されると、EIGENパッケージでは利用者が行列の 固有ベクトルを知っており、大域変数LISTEIGVECTSに固有ベクトルが蓄えられている と仮定する。

LISTEIGVECTSはEIGENVECTORS命令の出力と同じ形式のリストを設定しておく必要があ る(KNOWNEIGVECTSがTRUEで、固有ベクトルのリストも与えられており、 NONDIAGONALIZABLEの設定が正しくない場合、それを正しい値に設定して欲しい。 作者は利用者が自分が何を行っているか知っており、また、適切な次元でベクトル 空間を張らない固有ベクトルで構成された行列の対角化を望んでいないと仮定して いる…)。

関数: UNITVECTOR (X)
EIGENパッケージに含まれる関数。使う為にLOAD(EIGEN)を実行する。UNITVECTORは 一つのリストを引数とし、正規化したもの(つまり、大きさを1にしたリスト)を返す。

関数: VECTORSIMP (vectorexpression)
この関数は和の簡易化で様々なオプションの式と共に用いる。ここで式は以下の 大域スイッチの設定に関連するものである:

 
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で設定されている。

変数: VECT_CROSS
デフォルト値:[FALSE] - TRUEであればDIFF(X~Y,Y)が使える。ここで、~はSHARE;VECT で定義されている(但し、VECT_CROSSがTRUEに設定されていれば)。

関数: ZEROMATRIX (m,n)
引数として整数値のm,nを取ってm行n列の零行列を返す。

特殊記号: "["
- [ と ]はMACSYMAでリストの区切り記号として使う文字である。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Hiroshi Yokota on September, 16 2002 using texi2html