| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 23.1 Introduction to Matrices and Linear Algebra | ||
| 23.2 Functions and Variables for Matrices and Linear Algebra |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 23.1.1 Dot | ||
| 23.1.2 Vectors | ||
| 23.1.3 eigen |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
演算子 .は非可換乗算とスカラー積を表します。
オペランドが1列行列か1行行列の aと bの時、
式 a.bは sum (a[i]*b[i], i, 1, length(a))と同値です。
もし aと bが複素数でないならこれはスカラー積であり、
aと bの内積すなわちドット積がコールされます。
aと bが複素数の時、スカラー積は
conjugate(a).bとして定義されます;
eigenパッケージの innerproductは複素スカラー積を提供します。
オペランドがもっと一般的な行列の時、積は aと bの行列積です。
bの行数は aの列数と等しくなければいけなく、
結果は aの行数に等しい行数と bの列数に等しい列数を持ちます。
.を算術演算子として浮動小数点数の小数点と区別するために
どちらかの側にスペースを残す必要があるかもしれません。
例えば 5.e3は 5000.0ですが、
5 . e3は 5掛ける e3です。
.を含む式の整理を支配するいくつかのフラグがあります。
すなわち dot0nscsimp
, dot0simp
, dot1simp
, dotassoc
,
dotconstrules
, dotdistrib
, dotexptsimp
, dotident
,
dotscrules
。
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
vectはベクトル解析のための関数のパッケージです。
load ("vect")でこのパッケージをロードし、
demo ("vect")でデモンストレーションを表示します。
ベクトル解析パッケージは グラディエント、ダイバージェンス、カール、ラプラシアン演算子と一緒に ドット積やクロス積を含むシンボリックな式を結合したり整理したりすることができます。 これらの演算子の和や積上の分配は、 任意の特定の直交座標系の成分への展開を含む様々な他の展開と同様に、 いくつかのフラグで決定されます。 場のスカラーポテンシャルやベクトルポテンシャルを演繹するための関数もあります。
vectパッケージは以下の関数を含みます:
vectorsimp
, scalefactors
,
express
, potential
, vectorpotential
.
デフォルトでは vectパッケージはドット演算子 .を可換演算子とは宣言しません。
可換ドット演算子 .を得るにはコマンド
declare(".", commutative)を実行しなければいけません。
Categories: Vectors ·Share packages ·Package vect
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
パッケージ eigenは固有値や固有ベクトルのシンボリックな計算に充てられた
いくつかの関数を含みます。
もし eigenvaluesか eigenvectorsのどちらかが呼び出されたら、
Maximaはパッケージを自動的にロードします。
パッケージは load ("eigen")として明示的にロードすることもできます。
demo ("eigen")でこのパッケージの能力のデモンストレーションを表示します。
batch ("eigen")は一連の計算の間で
ユーザープロンプトなしに同じデモンストレーションを実行します。
eigenパッケージの関数は
innerproduct
, unitvector
, columnvector
,
gramschmidt
, eigenvalues
, eigenvectors
, uniteigenvectors
, similaritytransform
です。
Categories: Vectors ·Matrices ·Share packages ·Package eigen
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
1つか複数のリスト(または行列)で与えられる列を行列 Mに追加します。
Categories: Matrices
1つか複数のリスト(または行列)で与えられる行を行列 Mに追加します。
Categories: Matrices
行列 Mの余因子行列を返します。 余因子行列は Mの余因子の行列の転置です。
Categories: Matrices
線形方程式系 eqn_1, …, eqn_mの変数 x_1, …, x_nに関する拡大係数行列を返します。 これは、 それぞれの方程式の定数項 (x_1, …, x_nに依存しないそれらの項) に関して隣接した列を持つ係数行列です。
(%i1) m: [2*x - (a - 1)*y = 5*b, c + b*y + a*x = 0]$
(%i2) augcoefmatrix (m, [x, y]);
[ 2 1 - a - 5 b ]
(%o2) [ ]
[ a b c ]
|
Categories: Linear equations ·Matrices
要素 a[i,j] = 1/(x_i+y_i)を持つ、
n掛ける mの Cauchy行列を返します。
cauchy_matrixの第二引数はオプションです。
この場合、 Cauchy行列の要素は a[i,j] = 1/(x_i+x_j)です。
注意: 文献によると Cauchy行列は2つの形式で定義されたものが見られます。 2つ目の定義は a[i,j] = 1/(x_i-y_i)です。
例:
(%i1) cauchy_matrix([x1,x2],[y1,y2]); [ 1 1 ]
[ ------- ------- ]
[ y1 + x1 y2 + x1 ]
(%o1) [ ]
[ 1 1 ]
[ ------- ------- ]
[ y1 + x2 y2 + x2 ]
(%i2) cauchy_matrix([x1,x2]);
[ 1 1 ]
[ ---- ------- ]
[ 2 x1 x2 + x1 ]
(%o2) [ ]
[ 1 1 ]
[ ------- ---- ]
[ x2 + x1 2 x2 ]
|
Categories: Matrices
行列 Mの変数 xに関する特性多項式を返します。
すなわち
determinant (M - diagmatrix (length (M), x))です。
(%i1) a: matrix ([3, 1], [2, 4]);
[ 3 1 ]
(%o1) [ ]
[ 2 4 ]
(%i2) expand (charpoly (a, lambda));
2
(%o2) lambda - 7 lambda + 10
(%i3) (programmode: true, solve (%));
(%o3) [lambda = 5, lambda = 2]
(%i4) matrix ([x1], [x2]);
[ x1 ]
(%o4) [ ]
[ x2 ]
(%i5) ev (a . % - lambda*%, %th(2)[1]);
[ x2 - 2 x1 ]
(%o5) [ ]
[ 2 x1 - x2 ]
(%i6) %[1, 1] = 0;
(%o6) x2 - 2 x1 = 0
(%i7) x2^2 + x1^2 = 1;
2 2
(%o7) x2 + x1 = 1
(%i8) solve ([%th(2), %], [x1, x2]);
1 2
(%o8) [[x1 = - -------, x2 = - -------],
sqrt(5) sqrt(5)
1 2
[x1 = -------, x2 = -------]]
sqrt(5) sqrt(5)
|
Categories: Matrices
線形方程式系 eqn_1, …, eqn_mの変数 x_1, …, x_nに関する係数行列を返します。
(%i1) coefmatrix([2*x-(a-1)*y+5*b = 0, b*y+a*x = 3], [x,y]);
[ 2 1 - a ]
(%o1) [ ]
[ a b ]
|
Categories: Linear equations ·Matrices
行列 Mの i番目の列を返します。 戻り値は行列です。
Categories: Matrices
リスト Lの要素を含む1列 length (L)行の行列を返します。
covectは columnvectorと同義です。
load ("eigen")でこの関数をロードします。
もしこのパッケージの関数の出力の一部を行列計算で使いたいなら、これが役に立ちます。
例:
(%i1) load ("eigen")$
Warning - you are redefining the Macsyma function eigenvalues
Warning - you are redefining the Macsyma function eigenvectors
(%i2) columnvector ([aa, bb, cc, dd]);
[ aa ]
[ ]
[ bb ]
(%o2) [ ]
[ cc ]
[ ]
[ dd ]
|
Categories: Matrices
行列 Mのコピーを返します。 これは Mを要素毎にコピーすること以外では、コピーを作る唯一の方法です。
m2: m1のように1つの行列のもう1つへの割り当ては
m1をコピーしないことに注意してください。
割り当て m2 [i,j]: xまたは setelmx (x, i, j, m2は
m1 [i,j]も変更します。
copymatrixを使ってコピーを生成し、割り当てを使うことは
別個の変更されたコピーを生成します。
Categories: Matrices
Mの行列式をガウスの消去法と似た方法で計算します。
結果の形式はスイッチ ratmx
の設定に依ります。
スイッチ ratmxと sparse
がともに trueの時コールされる、
粗な行列式を計算するための特殊なルーチンがあります。
Categories: Matrices
デフォルト値: false
detoutが trueの時、
逆行列が計算される行列の行列式が逆行列から因子として外に出されます。
このスイッチが効果を持つには
doallmxops
と doscmxops
は falseでなければいけません。
(それらの記述を参照してください。)
代わりにこの2つを正しく設定する ev
にこのスイッチを与えるという方法もあります。
例:
(%i1) m: matrix ([a, b], [c, d]);
[ a b ]
(%o1) [ ]
[ c d ]
(%i2) detout: true$
(%i3) doallmxops: false$
(%i4) doscmxops: false$
(%i5) invert (m);
[ d - b ]
[ ]
[ - c a ]
(%o5) ------------
a d - b c
|
Categories: Matrices ·Evaluation flags
対角要素すべてが xに等しくて、
サイズが n掛ける nの対角線行列を返します。
diagmatrix (n, 1)は
(ident (n)と同じように)単位行列を返します。
nは整数に評価されなければいけなく、そうでないなら
diagmatrixはエラーメッセージを出力します。
xは別の行列を含む、任意の種類の式を取り得ます もし xが行列ならそれはコピーされません; 対角要素すべては同じインスタンス xを参照します。
Categories: Matrices
デフォルト値: true
doallmxopsが trueの時
行列に関係する演算すべてが実行されます。
falseの時、個々の
dotスイッチの設定がどの演算を実行するか決めます。
Categories: Matrices
デフォルト値: true
domxexptが trueの時、
行列の指数関数 exp (M)―ただしMは行列―
は、要素 [i,j]が exp (m[i,j])に等しい行列として解釈されます。
そうでないなら exp (M)は exp (ev(M))に評価されます。
domxexptは形式 base^powerの式すべてに影響します。
ここで、 baseはスカラーまたは定数と仮定された式、
powerはリストまたは行列です。
例:
(%i1) m: matrix ([1, %i], [a+b, %pi]);
[ 1 %i ]
(%o1) [ ]
[ b + a %pi ]
(%i2) domxexpt: false$
(%i3) (1 - c)^m;
[ 1 %i ]
[ ]
[ b + a %pi ]
(%o3) (1 - c)
(%i4) domxexpt: true$
(%i5) (1 - c)^m;
[ %i ]
[ 1 - c (1 - c) ]
(%o5) [ ]
[ b + a %pi ]
[ (1 - c) (1 - c) ]
|
Categories: Matrices
デフォルト値: true
domxmxopsが trueの時、行列-行列演算、行列-リスト演算すべてが実行されます
(しかし、スカラー-行列演算は実行されません);
もしこのスイッチが falseなら演算は実行されません。
Categories: Matrices
デフォルト値: false
domxnctimesが trueの時、行列の非可換積が実行されます。
Categories: Matrices
デフォルト値: []
ある変数に関する因数分解が起こらないよう、
dontfactorをその変数のリストに設定することができます。
(リストは初期には空です。)
標準有理式(CRE)形で仮定される変数順序に従って
dontfactorリスト上のそれらよりも重要でない変数に関しても
因数分解は行われなくなります。
Categories: Expressions
デフォルト値: false
doscmxopsが trueの時、スカラー-行列演算が実行されます。
Categories: Matrices
デフォルト値: false
doscmxplusが trueの時、スカラー-行列演算は行列の結果をもたらします。
このスイッチは doallmxops
の下に包括されません。
Categories: Matrices
デフォルト値: true
dot0nscsimpが trueの時、
ゼロと非スカラー項の非可換積は可換積に整理されます。
Categories: Simplification flags and variables
デフォルト値: true
dot0simpが trueの時、
ゼロとスカラー項の非可換積は可換積に整理されます。
Categories: Simplification flags and variables
デフォルト値: true
dot1simpが trueの時、
1ともう1つの項の非可換積は可換積に整理されます。
Categories: Simplification flags and variables
デフォルト値: true
dotassocが trueの時、式 (A.B).Cは
A.(B.C)に整理されます。
Categories: Simplification flags and variables
デフォルト値: true
dotconstrulesが trueの時、
定数ともう1つの項の非可換積は可換積に整理されます。
このフラグをオンにすることは事実上、
dot1simp
はもちろん dot0simp
, dot0nscsimp
もオンにします。
Categories: Simplification flags and variables
デフォルト値: false
dotdistribが trueの時、
式 A.(B + C)は A.B + A.Cに整理されます。
Categories: Simplification flags and variables
デフォルト値: true
dotexptsimpが trueの時、
式 A.Aは A^^2に整理されます。
Categories: Simplification flags and variables
デフォルト値: 1
dotidentは X^^0が返す値です。
Categories: Simplification flags and variables
デフォルト値: false
dotscrulesが trueの時、
式 A.SCまたは SC.Aは SC*Aに整理され、
A.(SC*B)は SC*(A.B)に整理されます。
Categories: Simplification flags and variables
ガウスの消去法で生成される行列 Mの階段形を返します。 階段形は Mから初等的な行演算によって計算されます。 それぞれの行の最初の非ゼロ要素が1で、 その要素の下の列要素がすべてゼロであるような行列です。
triangularize
もガウスの消去法を実行しますが、
それぞれの行の先頭の非ゼロ要素を規格化しません。
lu_factor
と cholesky
は三角行列をもたらす他の関数です。
(%i1) M: matrix ([3, 7, aa, bb], [-1, 8, 5, 2], [9, 2, 11, 4]);
[ 3 7 aa bb ]
[ ]
(%o1) [ - 1 8 5 2 ]
[ ]
[ 9 2 11 4 ]
(%i2) echelon (M);
[ 1 - 8 - 5 - 2 ]
[ ]
[ 28 11 ]
[ 0 1 -- -- ]
(%o2) [ 37 37 ]
[ ]
[ 37 bb - 119 ]
[ 0 0 1 ----------- ]
[ 37 aa - 313 ]
|
Categories: Linear equations ·Matrices
行列 Mの固有値を含む2つのリストのリストを返します。 戻り値の最初の部分リストは行列の固有値のリストで、 二番目の部分リストは固有値の重複度のリストです。二つのリスト乃要素は順に対応しています。
eivalsは eigenvaluesと同義です。
eigenvaluesは行列の特性多項式の根を見つけるために、関数
solve
をコールします。
時々、solveは多項式の根を見つけられないかもしれません;
その場合、このパッケージの
(innerproduct
, unitvector
, columnvector
,
gramschmidt
を除いた)いくつかの他の関数はうまく動かないでしょう。
いくつかの場合、 solveが見つける固有値は複雑な式かもしれません。
(solveが実数とわかっている固有値について
見てもすぐにはわからない実数式を返す時、これが起こることがあります。)
他のいくつかの関数を使って固有値を整理することが可能なことがあります。
パッケージeigen.macは、
eigenvaluesや eigenvectors
が参照された時、
自動的にロードされます。
もし eigen.macがまだロードされていないなら、
load ("eigen")はそれをロードします。
ロードした後はパッケージの中の関数と変数すべてが利用可能です。
Categories: Package eigen
行列 Mの固有ベクトルを計算します。 戻り値は2つの要素のリストです。 一番目のものは Mの固有値のリストと固有値の重複度のリストです。 二番目のものは固有ベクトルのリストのリストです。 固有値それぞれに対して固有ベクトルのリストが1つあります。 それぞれのリストには固有ベクトルが1つの時も複数の時もあります。
eivectsは eigenvectorsと同義です。
パッケージ eigen.macは、
eigenvalues
や eigenvectorsが参照された時、
自動的にロードされます。
もし eigen.macがまだロードされていないなら、
load ("eigen")はそれをロードします。
ロードした後はパッケージの中の関数と変数すべてが利用可能です。
この関数に影響するフラグは以下の通りです:
nondiagonalizableは、
eigenvectorsが戻った後、行列が対角化不可能か可能かに依って
trueか falseに設定されます。
hermitianmatrixが trueの時、
エルミート行列の縮退した固有ベクトルが
グラム-シュミットアルゴリズムを使って直交化されるようにします。
knowneigvalsが trueの時、
eigenパッケージは、
行列の固有値がユーザーに知られていて、グローバル名
listeigvalsの下に記憶されていることを仮定するようにします。
listeigvalsは出力 eigenvaluesに似たリストに設定しなければいけません。
ここで、関数 algsys
が固有ベクトルについて解くために使われます。
もし固有値がごちゃごちゃしているなら、
algsysは時々、解を見つけられないかもしれません。
いくつかの場合、最初に
eigenvaluesコマンドを使って固有値を見つけ、
それらをもっと簡潔な何かに換算するために他の関数を使うことによって、
固有値を整理することが可能かもしれません。
整理に続いて
trueに設定された knowneigvalsフラグとともに
再び eigenvectorsをコールすることができます。
eigenvalues
も参照してください。
例:
固有値1つにただ1つの固有ベクトルを持つ行列。
(%i1) M1 : matrix ([11, -1], [1, 7]);
[ 11 - 1 ]
(%o1) [ ]
[ 1 7 ]
(%i2) [vals, vecs] : eigenvectors (M1);
(%o2) [[[9 - sqrt(3), sqrt(3) + 9], [1, 1]],
[[[1, sqrt(3) + 2]], [[1, 2 - sqrt(3)]]]]
(%i3) for i thru length (vals[1]) do disp (val[i] = vals[1][i],
mult[i] = vals[2][i], vec[i] = vecs[i]);
val = 9 - sqrt(3)
1
mult = 1
1
vec = [[1, sqrt(3) + 2]]
1
val = sqrt(3) + 9
2
mult = 1
2
vec = [[1, 2 - sqrt(3)]]
2
(%o3) done
|
1つの固有値(ここでは2)に2つの固有ベクトルを持つ行列。
(%i1) M1 : matrix ([0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 2, 0],
[0, 0, 0, 2]);
[ 0 1 0 0 ]
[ ]
[ 0 0 0 0 ]
(%o1) [ ]
[ 0 0 2 0 ]
[ ]
[ 0 0 0 2 ]
(%i2) [vals, vecs] : eigenvectors (M1);
(%o2) [[[0, 2], [2, 2]], [[[1, 0, 0, 0]],
[[0, 0, 1, 0], [0, 0, 0, 1]]]]
(%i3) for i thru length (vals[1]) do disp (val[i] = vals[1][i],
mult[i] = vals[2][i], vec[i] = vecs[i]);
val = 0
1
mult = 2
1
vec = [[1, 0, 0, 0]]
1
val = 2
2
mult = 2
2
vec = [[0, 0, 1, 0], [0, 0, 0, 1]]
2
(%o3) done
|
Categories: Package eigen
値が xの [i, j]要素を除いて、すべての要素がゼロの
m行 n列行列を返します。
Categories: Matrices
対話的に要素を読み、 m行 n列行列を返します。
もし nが mと等しいなら、
Maximaは、行列のタイプ(対角、対称、反対称、一般)の入力を促し、
それぞれの要素の入力を促します。
応答それぞれは、セミコロン ;かドル記号 $で終了させます。
もし nが mと等しくないなら Maximaはそれぞれの要素の入力を促します。
要素は任意の式を取り得て、その式は評価されます。
entermatrixは引数を評価します。
(%i1) n: 3$
(%i2) m: entermatrix (n, n)$
Is the matrix 1. Diagonal 2. Symmetric 3. Antisymmetric
4. General
Answer 1, 2, 3 or 4 :
1$
Row 1 Column 1:
(a+b)^n$
Row 2 Column 2:
(a+b)^(n+1)$
Row 3 Column 3:
(a+b)^(n+2)$
Matrix entered.
(%i3) m;
[ 3 ]
[ (b + a) 0 0 ]
[ ]
(%o3) [ 4 ]
[ 0 (b + a) 0 ]
[ ]
[ 5 ]
[ 0 0 (b + a) ]
|
Categories: Console interaction ·Matrices
aから生成される行列を返します。
返される行列は、要素 a[i_1,j_1]を左上の要素として取り、
a[i_2,j_2]を右下の要素として取ります。
ここで、aは、
(make_array
ではなく arrayが生成する)宣言配列か、
未宣言配列か、配列関数か、2つの引数を持つラムダ式のいずれかです。
(配列関数は、他の関数のように :=
や define
で生成されますが、
引数は括弧の代わりにカギ括弧でくくられます。)
もし j_1が省略されたら、 それは i_1と等しいと仮定されます。 もし j_1と i_1両方が省略されたら、 両方とも1と等しいと仮定されます。
もし配列の選択された要素 i,jが未定義なら、
行列はシンボル要素 a[i,j]を含みます。
例:
(%i1) h [i, j] := 1 / (i + j - 1);
1
(%o1) h := ---------
i, j i + j - 1
(%i2) genmatrix (h, 3, 3);
[ 1 1 ]
[ 1 - - ]
[ 2 3 ]
[ ]
[ 1 1 1 ]
(%o2) [ - - - ]
[ 2 3 4 ]
[ ]
[ 1 1 1 ]
[ - - - ]
[ 3 4 5 ]
(%i3) array (a, fixnum, 2, 2);
(%o3) a
(%i4) a [1, 1] : %e;
(%o4) %e
(%i5) a [2, 2] : %pi;
(%o5) %pi
(%i6) genmatrix (a, 2, 2);
[ %e 0 ]
(%o6) [ ]
[ 0 %pi ]
(%i7) genmatrix (lambda ([i, j], j - i), 3, 3);
[ 0 1 2 ]
[ ]
(%o7) [ - 1 0 1 ]
[ ]
[ - 2 - 1 0 ]
(%i8) genmatrix (B, 2, 2);
[ B B ]
[ 1, 1 1, 2 ]
(%o8) [ ]
[ B B ]
[ 2, 1 2, 2 ]
|
Categories: Matrices
xに対してグラム-シュミット直交化アルゴリズムを実行します。
xは行列かリストのリストのいずれかです。
gramschmidtは xを変更しません。
もし引数にあるなら gramschmidtは Fを内積として使います。
そうでないなら、内積は関数 innerproductです。
もし xが行列なら、アルゴリズムは xの行に適用されます。 もし xがリストのリストなら、アルゴリズムは部分リストに適用されます。 部分リストは要素数が同じでなければいけません。 いずれの場合も、戻り値はリストのリストです。 この部分リストは互いに直交し、 xと同じ空間を埋めます。 もし xの全範囲の次元が行や部分リストの数より小さいなら、 戻り値の部分リストのいくつかはゼロです。
中間結果を整理するために、アルゴリズムのそれぞれの段階で factorがコールされます。
結果として、戻り値は素因数分解された整数を含みます。
load(eigen)はこの関数をロードします。
例:
デフォルトの内積関数を使ったグラム-シュミットアルゴリズム。
(%i1) load (eigen)$
(%i2) x: matrix ([1, 2, 3], [9, 18, 30], [12, 48, 60]);
[ 1 2 3 ]
[ ]
(%o2) [ 9 18 30 ]
[ ]
[ 12 48 60 ]
(%i3) y: gramschmidt (x);
2 2 4 3
3 3 3 5 2 3 2 3
(%o3) [[1, 2, 3], [- ---, - --, ---], [- ----, ----, 0]]
2 7 7 2 7 5 5
(%i4) map (innerproduct, [y[1], y[2], y[3]], [y[2], y[3], y[1]]);
(%o4) [0, 0, 0]
|
指定した内積関数を使ったグラム-シュミットアルゴリズム。
(%i1) load (eigen)$
(%i2) ip (f, g) := integrate (f * g, u, a, b);
(%o2) ip(f, g) := integrate(f g, u, a, b)
(%i3) y : gramschmidt([1, sin(u), cos(u)], ip), a= -%pi/2, b=%pi/2;
%pi cos(u) - 2
(%o3) [1, sin(u), --------------]
%pi
(%i4) map (ip, [y[1], y[2], y[3]], [y[2], y[3], y[1]]),
a= -%pi/2, b=%pi/2;
(%o4) [0, 0, 0]
|
Categories: Package eigen
n行 n列の単位行列を返します。
Categories: Matrices
xと yの(スカラー積やドット積とも呼ばれる)内積を返します。
xと yは、等しい長さのリストか、ともに等しい長さの1列行列か1行行列です。
戻り値は conjugate (x) . yです。
ここで .は非可換乗算演算子です。
load ("eigen")はこの関数をロードします。
inprodは innerproductと同義です。
Categories: Package eigen
行列 Mの逆行列を返します。 逆行列はLU分解で計算されます。
ratmx
が trueの時、
Mの要素は標準有理式(CRE)に変換され、
戻り値の要素もまたCREになります。
ratmx
が falseの時、
Mの要素は通常の表現に変換されません。
特に、floatとbigfloatは有理数に変換されません。
detout
が trueの時、
行列式が逆行列から括りだされます。
行列式が逆行列に吸収されるのを抑制するよう、グローバルフラグ doallmxops
と doscmxops
は falseでなければいけません。
xthru
を使って行列式を逆行列に掛けることができます。
invert
は、デフォルトの算術整理を除いて、どんな式整理も逆行列の要素に適用しません。
ratsimp
と expand
は加算整理を適用できます。
特に、 Mが多項式要素を持つ時、
expand(invert(M))が適しているかもしれません。
invert(M)は M^^-1と同値です。
Categories: Matrices
行列 Mの要素を含むリストを返します。
例:
(%i1) list_matrix_entries(matrix([a,b],[c,d])); (%o1) [a, b, c, d] |
Categories: Matrices
デフォルト値: [
lmxcharは行列の左区切り記号として表示される文字です。
rmxchar
も参照してください。
例:
(%i1) lmxchar: "|"$
(%i2) matrix ([a, b, c], [d, e, f], [g, h, i]);
| a b c ]
| ]
(%o2) | d e f ]
| ]
| g h i ]
|
Categories: Display flags and variables ·Matrices
行 row_1, ..., row_nを持つ長方形行列を返します。 行それぞれは、式のリストです。 すべての行は同じ長さでなければいけません。
オペランドが2つの行列、スカラーと行列、行列とスカラーのいずれかの時、
演算 + (足し算), - (引き算), * (掛け算),
/ (割り算)は要素毎に実行されます。
もしオペランドがスカラーと行列、行列とスカラーのいずれかなら、
演算 ^ (べき乗, **と同値)は、要素毎に実行されますが、
もしオペランドが2つの行列なら要素毎には実行されません。
. (非可換乗算)を含むすべての演算は通常、完全に実行されます。
行列の掛け算は非可換乗算演算子 .で表されます。
対応する非可換べき乗演算子は ^^です。
行列 Aに関して、
A.A = A^^2であり、
もし存在するなら A^^-1は Aの逆行列です。
A^^-1は invert(A)と同値です。
ドット演算や行列-リスト演算を含む式の整理を制御するためのスイッチがあります。
それらは、
doallmxops
, domxexpt
domxmxops
, doscmxops
, doscmxplus
です。
行列に関係する付加的なオプションがあります。
それらは以下の通りです:
lmxchar
, rmxchar
, ratmx
, listarith
, detout
,
scalarmatrix, sparse
行列を引数として取ったり、行列を戻り値としてもたらしたりするたくさんの関数があります。
eigenvalues
, eigenvectors
, determinant
, charpoly
,
genmatrix
, addcol
, addrow
, copymatrix
,
transpose
, echelon
, rank
を参照してください。
例:
(%i1) x: matrix ([17, 3], [-8, 11]);
[ 17 3 ]
(%o1) [ ]
[ - 8 11 ]
(%i2) y: matrix ([%pi, %e], [a, b]);
[ %pi %e ]
(%o2) [ ]
[ a b ]
|
(%i3) x + y;
[ %pi + 17 %e + 3 ]
(%o3) [ ]
[ a - 8 b + 11 ]
|
(%i4) x - y;
[ 17 - %pi 3 - %e ]
(%o4) [ ]
[ - a - 8 11 - b ]
|
(%i5) x * y;
[ 17 %pi 3 %e ]
(%o5) [ ]
[ - 8 a 11 b ]
|
(%i6) x / y;
[ 17 - 1 ]
[ --- 3 %e ]
[ %pi ]
(%o6) [ ]
[ 8 11 ]
[ - - -- ]
[ a b ]
|
(%i7) x ^ 3;
[ 4913 27 ]
(%o7) [ ]
[ - 512 1331 ]
|
(%i8) exp(y);
[ %pi %e ]
[ %e %e ]
(%o8) [ ]
[ a b ]
[ %e %e ]
|
(%i9) x ^ y;
[ %pi %e ]
[ ]
[ a b ]
[ 17 3 ]
(%o9) [ ]
[ - 8 11 ]
|
(%i10) x . y;
[ 3 a + 17 %pi 3 b + 17 %e ]
(%o10) [ ]
[ 11 a - 8 %pi 11 b - 8 %e ]
(%i11) y . x;
[ 17 %pi - 8 %e 3 %pi + 11 %e ]
(%o11) [ ]
[ 17 a - 8 b 11 b + 3 a ]
|
b^^mは b^mと同じです。
(%i12) x ^^ 3;
[ 3833 1719 ]
(%o12) [ ]
[ - 4584 395 ]
(%i13) %e ^^ y;
[ %pi %e ]
[ %e %e ]
(%o13) [ ]
[ a b ]
[ %e %e ]
|
(%i14) x ^^ -1;
[ 11 3 ]
[ --- - --- ]
[ 211 211 ]
(%o14) [ ]
[ 8 17 ]
[ --- --- ]
[ 211 211 ]
(%i15) x . (x ^^ -1);
[ 1 0 ]
(%o15) [ ]
[ 0 1 ]
|
Categories: Matrices
f(M[i,j])に等しい要素 i,jを持つ行列を返します。
map
, fullmap
, fullmapl
, apply
も参照してください。
Categories: Matrices
もし exprが行列なら trueを返し,そうでないなら falseを返します。
Categories: Predicate functions ·Matrices
デフォルト値: +
matrix_element_addは行列乗算の中で足し算の代わりに呼び出される演算です。
matrix_element_addは任意の
n項演算子(すなわち、任意の数の引数を扱う関数)に割り当てられます。
割り当てられた値はクォートマークでくくられた演算子の名前か、
関数名かラムダ式を取り得ます。
matrix_element_mult
と matrix_element_transpose
も参照してください。
例:
(%i1) matrix_element_add: "*"$
(%i2) matrix_element_mult: "^"$
(%i3) aa: matrix ([a, b, c], [d, e, f]);
[ a b c ]
(%o3) [ ]
[ d e f ]
(%i4) bb: matrix ([u, v, w], [x, y, z]);
[ u v w ]
(%o4) [ ]
[ x y z ]
(%i5) aa . transpose (bb);
[ u v w x y z ]
[ a b c a b c ]
(%o5) [ ]
[ u v w x y z ]
[ d e f d e f ]
|
Categories: Matrices
デフォルト値: *
matrix_element_multは行列乗算の中で掛け算の代わりに呼び出される演算です。
matrix_element_multは任意の二項演算子に割り当てられます。
割り当てられた値はクォートマークでくくられた演算子の名前か、関数名か、
ラムダ式を取り得ます。
ドット演算子 .はいくつかの文脈で役に立つ選択です。
matrix_element_add
と matrix_element_transpose
も参照してください。
例:
(%i1) matrix_element_add: lambda ([[x]], sqrt (apply ("+", x)))$
(%i2) matrix_element_mult: lambda ([x, y], (x - y)^2)$
(%i3) [a, b, c] . [x, y, z];
2 2 2
(%o3) sqrt((c - z) + (b - y) + (a - x) )
(%i4) aa: matrix ([a, b, c], [d, e, f]);
[ a b c ]
(%o4) [ ]
[ d e f ]
(%i5) bb: matrix ([u, v, w], [x, y, z]);
[ u v w ]
(%o5) [ ]
[ x y z ]
(%i6) aa . transpose (bb);
[ 2 2 2 ]
[ sqrt((c - w) + (b - v) + (a - u) ) ]
(%o6) Col 1 = [ ]
[ 2 2 2 ]
[ sqrt((f - w) + (e - v) + (d - u) ) ]
[ 2 2 2 ]
[ sqrt((c - z) + (b - y) + (a - x) ) ]
Col 2 = [ ]
[ 2 2 2 ]
[ sqrt((f - z) + (e - y) + (d - x) ) ]
|
Categories: Matrices
デフォルト値: false
matrix_element_transposeは、
転置される時、行列のそれぞれの要素に適用される演算です。
matrix_element_mult
は任意の単項演算子に割り当てられます。
割り当てられた値はクォートマークでくくられた演算子の名前か、
関数名か、ラムダ式を取り得ます。
matrix_element_transposeが transpose
に等しい時、
transpose関数が要素すべてに適用されます。
matrix_element_transposeが nonscalarsに等しい時、
transpose関数は非スカラー要素すべてに適用されます。
もしある要素がアトムなら、
nonscalarsオプションはアトムが宣言された非スカラーの時だけ
transposeを適用します。
一方、transposeオプションはいつも transposeを適用します。
デフォルト値, falseはいかなる演算も適用しないことを意味します。
matrix_element_add
と matrix_element_mult
も参照してください。
例:
(%i1) declare (a, nonscalar)$
(%i2) transpose ([a, b]);
[ transpose(a) ]
(%o2) [ ]
[ b ]
(%i3) matrix_element_transpose: nonscalars$
(%i4) transpose ([a, b]);
[ transpose(a) ]
(%o4) [ ]
[ b ]
(%i5) matrix_element_transpose: transpose$
(%i6) transpose ([a, b]);
[ transpose(a) ]
(%o6) [ ]
[ transpose(b) ]
(%i7) matrix_element_transpose: lambda ([x], realpart(x)
- %i*imagpart(x))$
(%i8) m: matrix ([1 + 5*%i, 3 - 2*%i], [7*%i, 11]);
[ 5 %i + 1 3 - 2 %i ]
(%o8) [ ]
[ 7 %i 11 ]
(%i9) transpose (m);
[ 1 - 5 %i - 7 %i ]
(%o9) [ ]
[ 2 %i + 3 11 ]
|
Categories: Matrices
正方行列 Mの跡(すなわち、主対角上の要素の和)を返します。
mattraceは ncharpoly
―Maximaのcharpoly
の代わり―
によってコールされます。
load ("nchrpl")はこの関数をロードします。
Categories: Matrices ·Package nchrpl
行列 Mの i, j小行列を返します。 すなわち、行 iと列 jを除いた Mです。
Categories: Matrices
行列Mの xに関する特性多項式を返します。
これはMaximaの charpoly
の代わりです。
ncharpolyは与えられた行列のべきの跡を計算することで機能します。
それは特性多項式の根のべきの和に等しいことが知られています。
それらの量から根の対称関数を計算することができます。
それらは特性多項式の係数以上のなにものでもありません。
charpolyは、
x * ident [n] - aの行列式を形成することで機能します。
このように、
ncharpolyは完全に多項式算術を避けるので、
例えば、整数で埋められた大きな密な行列の場合、 ncharpolyが勝ります。
load ("nchrpl")はこのファイルをロードします。
Categories: Matrices ·Package nchrpl
行列 Mの行列式を
ジョンソン-ジェントルマンのtree minorアルゴリズムを使って計算します。
newdetはCRE形式で結果を返します。
Categories: Matrices
行列 Mのパーマネントを計算します。
パーマネントは行列式のようですが、符号が変わりません。
permanentはCRE形式で結果を返します。
newdetも参照してください。
Categories: Matrices
行列 Mのランクを計算します。 すなわち、Mの最も大きな非特異な小行列式の次数です。
もし rankがゼロと同値の行列要素が確かにそうであることを決定することができないなら、 間違った答えを返す可能性があります。
Categories: Matrices
デフォルト値: false
ratmxが falseの時、
行列要素の表現で行列式と行列の足し算、引き算、掛け算が実行され、
逆行列の結果は一般表現のまま残されます。
ratmxが trueの時、
上で述べた4つの演算は CRE形式で実行され、逆行列の結果も CRE形式になります。
要素の展開は常に望まれているわけではないですが、
これによって(ratfacの設定に依って)
要素が展開されるかもしれないことに注意してください。
Categories: Matrices ·Rational expressions
行列 Mのi番目の行を返します。 戻り値は行列です。
Categories: Matrices
デフォルト値: ]
rmxcharは行列の右辺に描かれる文字です。
lmxcharも参照してください。
Categories: Display flags and variables
デフォルト値: true
scalarmatrixpが trueの時、
1 x 1行列が行列のドット積を計算した結果として生成される時はいつでも、
スカラーすなわち行列の唯一の要素に整理されます。
scalarmatrixpがallの時、
すべての1 x 1行列はスカラーに整理されます。
scalarmatrixpがfalseの時、
1 x 1行列はスカラーに整理されません。
Categories: Matrices ·Simplification flags and variables
ここで coordinatetransformは形式 [[expression1, expression2, ...], indeterminate1, indeterminat2, ...] に評価されます。また、 indeterminate1, indeterminate2, などは曲線座標変数であり、 直交カーテシアン成分の集合は、 [expression1, expression2, ...]によって、曲線座標を使って与えられます。
coordinatesを
ベクトル [indeterminate1, indeterminate2,...]に設定し、
dimensionをこのベクトルの長さに設定します。
SF[1], SF[2], …, SF[DIMENSION]を座標スケールファクタに設定し、
sfprodをこれらのスケールファクタの積に設定します。
初期状態では 3次元直交カーテシアン座標に対応して、
coordinatesは [X, Y, Z]であり、
dimensionは 3であり、 SF[1]=SF[2]=SF[3]=SFPROD=1です。
式を現在の座標形の物理成分に展開するために形式を利用する関数があります。
(訳注:「形式」の部分、原文自体が欠けています)
Categories: Package vect
xを行列 Mの(i, j)番目の要素に割り当て、 変わった行列を返します。
M [i, j]: xは同じ効果を持ちますが、
Mの代わりに xを返します。
Categories: Matrices
similaritytransformは行列 Mの相似変換を計算します。
uniteigenvectorsコマンドの出力であるリストを返します。
更に、もしフラグ nondiagonalizableが falseなら、
2つのグローバル行列 leftmatrixと rightmatrixを計算します。
これらの行列は、 leftmatrix . M . rightmatrixが
Mの固有値を対角上に持つ対角行列となるという性質を持ちます。
もし nondiagonalizableが
trueなら、左右の行列は計算されません。
もしフラグ hermitianmatrixが trueなら、
leftmatrixは rightmatrixの転置の複素共役です。
そうでないなら、 leftmatrixは rightmatrixの逆行列です。
rightmatrixは列が Mの単位固有ベクトルである行列です。
rightmatrixを形成可能にするために
similaritytransformがパッケージの中の他の関数をコールするので、
他のフラグ
(eigenvaluesと eigenvectorsを参照してください)は同じ効果を持ちます。
load ("eigen")はこの関数をロードします。
simtranは similaritytransformと同義です。
Categories: Package eigen
デフォルト値: false
sparseが trueかつ ratmxが trueなら、
determinantは粗な行列式を計算するために特別なルーチンを使います。
Categories: Matrices
行列 Mから 行 i_1, …, i_mを取り除き、 列 j_1, …, j_nを取り除いた新しい行列を返します。
Categories: Matrices
Mの転置を返します。
もし Mが行列なら、
戻り値は N[i,j] = M[j,i]であるような別の行列 Nです。
もし Mがリストなら、
戻り値は N[i,1] = M[i]であるような length (m)行1列の行列Nです。
そうでないなら Mはシンボルで、
戻り値は名詞式 'transpose (M)です。
Categories: Matrices
ガウスの消去法で生成されるような、行列 Mの右上三角化行列を返します。
それぞれの行の先頭の非ゼロ係数が1に規格化されないことを除いて、
戻り値は echelonと同じです。
三角化行列をもらたす他の関数に lu_factorと choleskyがあります。
(%i1) M: matrix ([3, 7, aa, bb], [-1, 8, 5, 2], [9, 2, 11, 4]);
[ 3 7 aa bb ]
[ ]
(%o1) [ - 1 8 5 2 ]
[ ]
[ 9 2 11 4 ]
(%i2) triangularize (M);
[ - 1 8 5 2 ]
[ ]
(%o2) [ 0 - 74 - 56 - 22 ]
[ ]
[ 0 0 626 - 74 aa 238 - 74 bb ]
|
Categories: Linear equations ·Matrices
行列 Mの単位固有ベクトルを計算します。
戻り値はリストのリストです。
最初のサブリストは eigenvaluesコマンドの出力であり、
他のサブリストは固有値それぞれに対応する行列の単位固有ベクトルです。
eigenvectorsコマンドでの記述で言及されたフラグはこれに関しても同じ効果を持ちます。
knowneigvectsが trueの時、
行列の固有ベクトルがユーザーに知られていて、グローバル名
listeigvectsの下に記憶されていることを
eigenパッケージは仮定します。
listeigvectsは
eigenvectorsコマンドの出力に似たリストに設定されなければいけません。
もし knowneigvectsが trueに設定されていて、
固有ベクトルのリストが与えられるなら、
フラグ nondiagonalizableの設定は正しくないかもしれません。
この場合に該当するなら正しい値に設定してください。
ユーザーがしていることを知っていること、
固有値が適切な次元のベクトル空間を作り出さない行列を対角化しようとはしないことを
作者は仮定しています。
load ("eigen")はこの関数をロードします。
ueivectsは uniteigenvectorsと同義です。
Categories: Package eigen
x/norm(x)を返します; これは xと同じ向きの単位ベクトルです。
load ("eigen")はこの関数をロードします。
uvectは unitvectorと同義です。
Categories: Package eigen
現在の座標系で与えられた回転ベクトルのベクトルポテンシャルを返します。
potentialzerolocが potentialに対して似たような役割を持ちますが、
等式の左辺側の次数は座標変数の巡回置換でなければいけません。
Categories: Package vect
以下のグローバルフラグに従って整理と展開を適用します:
expandall, expanddot, expanddotplus, expandcross, expandcrossplus,
expandcrosscross, expandgrad, expandgradplus, expandgradprod,
expanddiv, expanddivplus, expanddivprod, expandcurl, expandcurlplus,
expandcurlcurl, expandlaplacian, expandlaplacianplus,
expandlaplacianprod.
これらのフラグすべてはデフォルト値 falseを持ちます。
plus接尾辞は加算性や分配性の利用に関係します。
prod接尾辞は任意の種類の積のオペランドに関する展開に関係します。
expandcrosscrossp ~ (q ~ r)を (p . r)*q - (p . q)*rに整理します。
expandcurlcurlcurl curl pを grad div p + div grad pに整理します。
expandlaplaciantodivgradlaplacian pを div grad pに整理します。
expandcrossexpandcrossplusと expandcrosscrossを有効にします。
expandplusexpanddotplus, expandcrossplus, expandgradplus,
expanddivplus, expandcurlplus,
expandlaplacianplusを有効にします。
expandprodexpandgradprod, expanddivprod,
expandlaplacianprodを有効にします。
これらのフラグはすべて evflagとして宣言されています。
Categories: Package vect ·Simplification functions
デフォルト値: false
vect_crossが trueの時、
~がSHARE;VECTの中で定義されているところ
(とにかく、VECT_CROSSが trueに設定されているところ)
でDIFF(X~Y,T)が機能するようにします。
Categories: Package vect ·Differential calculus
要素すべてがゼロの m行 n列行列を返します。
Categories: Matrices
| [ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は市川 雄二によって2014年4月月20日にtexi2html 1.82を用いて生成されました。