23MatricesandLinearAlgebra

Last-modified: 2025-04-30 (水) 19:44:05

23 Matrices and Linear Algebra

23.2 行列と線形代数の関数と変数
関数: addcol (M, list_1, ..., list_n)
1つ以上のリスト(または行列)によって指定された列を行列Mに追加します.

addrow」およびappend」も参照してください.

カテゴリ: 行列 ·
関数: addrow (M, list_1, ..., list_n)
1つ以上のリスト(または行列)によって指定された行を行列Mに追加します.

addcol と append も参照してください.

カテゴリ: 行列 ·
関数: 随伴 (M)
行列 M の随伴行列を返します。随伴行列は、Mの補因子の行列の転置です.

カテゴリ: 行列 ·
関数: augcoefmatrix ([eqn_1, ..., eqn_m], [x_1, ..., x_n])
連立一次方程式系の変数 x_1、...、x_n の増補係数行列を返します eqn_1、...、eqn_m。これは、各方程式の定数項 (つまり、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   ]

カテゴリ: 線形方程式 ·行列 ·
機能:cauchy_matrix

   cauchy_matrix ([x_1, x_2, ..., x_m], [y_1, y_2, ..., y_n])
   cauchy_matrix ([x_1, x_2, ..., x_n])

要素 a[i,j] = 1/(x_i+y_i) を持つ n x m コーシー行列を返します。cauchy_matrix の 2 番目の引数はオプションです。この場合、コーシー行列の要素は a[i,j] = 1/(x_i+x_j です。).

備考:文献では、コーシー行列は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   ]

カテゴリ: 行列 ·
関数: charpoly (M, x)
変数 x に対する行列 M の特性多項式を返します。つまり、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)

カテゴリ: 行列 ·
関数: coefmatrix ([eqn_1, ..., eqn_m], [x_1, ..., x_n])
連立一次方程式系の変数 x_1、...、x_n の係数行列を返します eqn_1、...、eqn_m.

(%i1) coefmatrix([2*x-(a-1)*y+5*b = 0, b*y+a*x = 3], [x,y]);

                                [ 2  1 - a ]

(%o1) [ ]

                                [ a    b   ]

カテゴリ: 線形方程式 ·行列 ·
関数: col (M, i)
行列 M の i 番目の列を返します。戻り値は行列です。

カテゴリ: 行列 ·
関数: columnvector (L)
関数: covect (L)
リスト 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 ]

カテゴリ: 行列 ·
関数: copymatrix (M)
行列 M のコピーを返します。これは、M要素ごとにコピーする以外に、コピーを作成する唯一の方法です。

m2: m1 のように、ある行列を別の行列に代入しても、m1 はコピーされないことに注意してください。代入 m2 [i,j]: x または setelmx(x, i, j, m2) も m1 [i,j] を変更します。copymatrix を使用してコピーを作成し、代入を使用すると、変更された別のコピーが作成されます。

カテゴリ: 行列 ·
関数: 行列式 (M)
ガウス消去法と同様の方法で M の行列式を計算します。

結果の形式は、スイッチratmxの設定によって異なります.

スパース行列式を計算するための特別なルーチンがあり、これはスイッチ ratmx と sparse がtrueである場合に呼び出されます.

カテゴリ: 行列 ·
オプション変数: detout
デフォルト値: false

detout が true の場合、逆行列が計算される行列の行列式は、逆行列から因数分解されます。

このスイッチが効果を持つためには、doallmxops と doscmxops が false である必要があります (それぞれの説明を参照)。あるいは、このスイッチをevに与えると、他の2つが正しく設定されます。

例:

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

カテゴリ: 行列 ·評価フラグ ·
関数: diagmatrix (n, x)
サイズ n x n の対角行列を返し、対角要素がすべて x に等しい対角行列を返します。diagmatrix (n, 1) は、ID 行列 (ident (n)).

n は整数に評価されなければならず、そうでない場合は diagmatrix はエラーメッセージで文句を言います。

x は、別の行列を含む任意の種類の式にすることができます。x が行列の場合、コピーされません。すべての対角要素は、同じインスタンス x を参照します。.

カテゴリ: 行列 ·
オプション変数: doallmxops
デフォルト値: true

doallmxops がtrueの場合、行列に関連するすべての演算が実行されます。false の場合、個々のdot スイッチの設定によって、実行される操作が制御されます。

カテゴリ: 行列 ·
オプション変数: domxexpt
デフォルト値: 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)    ]

カテゴリ: 行列 ·
オプション変数: domxmxops
デフォルト値: true

domxmxops がtrueの場合、すべての行列行列または行列リスト演算が実行されます (ただし、スカラー行列演算は実行されません)。このスイッチが false の場合、このような操作は実行されません。

カテゴリ: 行列 ·
オプション変数: domxnctimes
デフォルト値: false

domxnctimes がtrueの場合、行列の非可換積が実行されます。

カテゴリ: 行列 ·
オプション変数: dontfactor
既定値:[]

dontfactor は、因数分解が発生しない変数のリストに設定できます。(リストは最初は空です。また、dontfactor リストにある変数よりも、正準有理数式 (CRE) 形式で想定される変数の順序に従って、重要性の低い変数についても因数分解は行われません。

カテゴリー: 式 ·
オプション変数: doscmxops
デフォルト値: false

doscmxops がtrueの場合、スカラー行列演算が実行されます。

カテゴリ: 行列 ·
オプション変数: doscmxplus
デフォルト値: false

doscmxplus が true の場合、スカラー行列演算は行列の結果を生成します。このスイッチは doallmxops には含まれません.

カテゴリ: 行列 ·
オプション変数: dot0nscsimp
デフォルト値: true

dot0nscsimp が true の場合、非可換積が 0 で非スカラー項は可換積に簡略化されます。

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dot0simp
デフォルト値: true

dot0simp がtrueの場合、0 の非可換積とスカラー項は可換積に簡略化されます。

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dot1simp
デフォルト値: true

dot1simp がtrueの場合、1 つの項と別の項の非可換積は可換積に簡略化されます。

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dotassoc
デフォルト値: true

dotassoc true の場合、式 (A.B).CはA.(B.C)に単純化されます。.

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dotconstrules
デフォルト値: true

dotconstrules がtrueの場合、定数と別の項の非可換積は可換積に簡略化されます。このフラグをオンにすると、dot0simp が効果的にオンになります, dot0nscsimp と dot1simp も同様です。

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dotdistrib
デフォルト値: false

dotdistrib がtrueの場合、式 A.(B + C) は A.B + A.C に単純化されます.

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dotexptsimp
デフォルト値: true

dotexptsimp が true の場合、式 A.A は A^^2 に単純化されます.

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dotident
デフォルト値: 1

dotident は X^^0 によって返される値です。.

カテゴリ: 簡略化フラグと変数 ·
オプション変数: dotscrules
デフォルト値: false

dotscrules が true の場合、式A.SC または SC.A は SC*A に、A.(SC*B) は SC*(A.B) に簡略化されます.

カテゴリ: 簡略化フラグと変数 ·
関数: エシュロン (M)
ガウス消去法によって生成された行列 M の階層形式を返します。エシュロン形式は、結果の行列の各行の最初の非ゼロ要素が 1 で、各行の最初の要素の下の列要素がすべてゼロになるように、基本的な行演算によって M から計算されます。

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 ]

カテゴリ: 線形方程式 ·行列 ·
関数: 固有値 (M)
関数: eivals (M)
行列 M の固有値を含む 2 つのリストのリストを返します。戻り値の最初のサブリストは行列の固有値のリストであり、2番目のサブリストは対応する順序での固有値の多重度のリストです。

eivals は eigenvalues の同義語です.

eigenvalues関数 solve を呼び出して、行列の特性多項式の根を求めます。solve が多項式の根を見つけることができない場合があります。その場合、このパッケージ内の他の関数 (innerproduct、unitvector を除く), columnvector と gramschmidt) は機能しません。solve は多項式の根のサブセットのみを見つけることがあります。これは、多項式の因数分解に次数 5 以上の多項式が含まれている場合に発生する可能性があります。このような場合は、警告メッセージが表示され、見つかったルートとそれに対応する多重度のみが返されます。

場合によっては、solve によって検出される固有値が複雑な式になることがあります。(これは、solve が実数であることがわかっている固有値に対して、それほど明白ではない実数式を返す場合に発生する可能性があります。他の関数を使用して固有値を単純化できる場合があります。

eigen.mac パッケージは、eigenvalues または eigenvectors が参照されると自動的に読み込まれます。eigen.mac がまだロードされていない場合は、load ("eigen") がロードします。ロード後、パッケージ内のすべての関数と変数が使用可能になります。

カテゴリー: パッケージ固有 ·
関数: 固有ベクトル (M)
関数: eivects (M)
行列 M の固有ベクトルを計算します。戻り値は、2 つの要素のリストです。1 つ目は、M の固有値のリストと固有値の多重度のリストです。2 つ目は、固有ベクトルのリストのリストです。各固有値に対して固有ベクトルのリストが 1 つあります。各リストには 1 つ以上の固有ベクトルが存在する可能性があります。

eivects はeigenvectors同義語です.

eigen.mac パッケージは、eigenvalues または eigenvectors が参照されると自動的に読み込まれます。eigen.mac がまだロードされていない場合は、load ("eigen") がロードします。ロード後、パッケージ内のすべての関数と変数が使用可能になります。

eigenvectors内部的にeigenvaluesを呼び出して固有値を取得することに注意してください。したがって、eigenvalues がすべての固有値のサブセットを返すと、eigenvectorsすべての固有ベクトルの対応するサブセットを返し、eigenvaluesと同じ警告が表示されます.

この機能に影響を与えるフラグは次のとおりです。

nondiagonalizable は、eigenvectors戻った後に行列が非対角化可能か対角化可能かに応じてtrue または false に設定されます。

hermitianmatrix true の場合、エルミート行列の縮退固有ベクトルは、Gram-Schmidt アルゴリズムを使用して直交されます。

knowneigvals true の場合、eigenパッケージは、行列の固有値がユーザーに既知であり、グローバル名 listeigvals で格納されていると想定します。listeigvals は、出力eigenvaluesと同様のリストに設定する必要があります.

ここでは、固有ベクトルを解くために関数 algsys を使用します。固有値が乱雑な場合、algsysは解決策を見つけることができない場合があります。場合によっては、最初にeigenvaluesコマンドを使用して固有値を見つけ、次に他の関数を使用して固有値を単純なものに縮小することで、固有値を簡略化できる場合があります。簡略化に続いて、eigenvectorsknowneigvals フラグを true に設定して再度呼び出すことができます.

eigenvaluesも参照してください.

例:

固有値ごとに 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
カテゴリー: パッケージ固有 ·
関数: ematrix (m, n, x, i, j)
m x n の行列を返します。[[i, j] 要素 x を除くすべての要素が 0 です.

カテゴリ: 行列 ·
関数: entermatrix (m, n)
m x 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)  ]

カテゴリ: コンソールインタラクション ·行列 ·
機能:ジェンマトリックス

   ジェンマトリックス (a, i_2, j_2, i_1, j_1)
   ジェンマトリックス (a, i_2, j_2, i_1)
   ジェンマトリックス (a, i_2, j_2)

a から生成された行列を返し、要素 a[i_1, j_1] を行列の左上の要素としa[i_2, j_2] を行列の右下の要素として取ります。ここでa は宣言された配列 (arrayによって作成されますが、make_array によって作成されません)、hashed array、memoizing function、または 2 つの引数のラムダ式です。(memoizing function、他の関数と同様に := または 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 ]

カテゴリ: 行列 ·
機能:グラムシュミット

   グラムシュミット(x)
   グラムシュミット (x, F)

グラム・シュミット直交アルゴリズムを x (行列またはリストのリスト) で実行します。x は gramschmidt によって変更されません。gramschmidtによって採用される内積は、存在する場合はFであり、それ以外の場合、内積は関数innerproductである.

x が行列の場合、アルゴリズムは x の行に適用されます。x がリストのリストの場合、アルゴリズムはサブリストに適用され、サブリストには同じ数の要素が必要です。どちらの場合も、戻り値はリストのリストであり、そのサブリストは直交し、x と同じスペースにまたがっています。x の範囲の次元が行またはサブリストの数より小さい場合、戻り値の一部のサブリストは 0 です。

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]
カテゴリー: パッケージ固有 ·
関数: ident (n)
n 行 n単位行列を返します。

カテゴリ: 行列 ·
関数: innerproduct (x, y)
関数: inprod (x, y)
x と y の内積 (スカラー積またはドット積とも呼ばれます) を返します。これらは同じ長さのリスト、または同じ長さの 1 列または 1 行の行列です。戻り値はconjugate (x) . y です。. は非可換乗算演算子です。

load ("eigen") は、この関数を読み込みます。

inprodはinnerproductの同義語です.

カテゴリー: パッケージ固有 ·
関数: invert_by_adjoint (M)
行列 M の逆数を返します。逆行列は、随伴行列法によって計算されます。

invert_by_adjoint は、invert と同様にratmx フラグと detout フラグを尊重します.

関数:反転(M)
行列 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 と同等です.

カテゴリ: 行列 ·
関数: list_matrix_entries (M)
行列 M の要素を含むリストを返します.

例:

(%i1) list_matrix_entries(matrix([a,b],[c,d]));
(%o1) [a, b, c, d]
カテゴリ: 行列 ·
オプション変数: lmxchar
既定値:[

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 ]

カテゴリ: 表示フラグと変数 ·行列 ·
関数: 行列 (row_1, ..., row_n)
行が row_1、...、row_n の矩形行列を返します。各行は式のリストです。すべての行の長さは同じである必要があります。

  1. (加算)、- (減算)、* (乗算)、/ (除算) は、オペランドが 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   ]

行列の基数を行列指数に。これは要素ごとに実行されるわけではありません。matrixexp も参照してください。.
(%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 は b^m と同じです.
(%i12) x ^^ 3;

                       [  3833   1719 ]

(%o12) [ ]

                       [ - 4584  395  ]

(%i13) %e ^^ y;

                        [   %pi    %e ]
                        [ %e     %e   ]

(%o13) [ ]

                        [    a     b  ]
                        [  %e    %e   ]

非可換指数を持つ -1 指数に上げられた行列は、存在する場合、逆行列です。
(%i14) x ^^ -1;

                        [ 11      3  ]
                        [ ---  - --- ]
                        [ 211    211 ]

(%o14) [ ]

                        [  8    17   ]
                        [ ---   ---  ]
                        [ 211   211  ]

(%i15) x . (x ^^ -1);

                           [ 1  0 ]

(%o15) [ ]

                           [ 0  1 ]

カテゴリ: 行列 ·
機能:matrixexp

   matrixexp (M)
   matrixexp (M, n)
   matrixexp (M, V)

行列の指数を計算します

.ベクトル V の代わりに、数値 n を 2 番目の引数として指定できます。この引数を省略すると、matrixexp は 1 で置き換えます.

行列 M の行列指数は、べき級数として表すことができます。

カテゴリ: 行列 ·
関数: matrixmap (f, M)
要素 i,j が f(M[i,j]) に等しい行列を返します。.

map」、「fullmapfullmapl」、「apply」も参照してください.

カテゴリ: 行列 ·
関数: matrixp (expr)
expr が行列の場合は true、それ以外の場合は false を返します.

カテゴリ: 述語関数 ·行列 ·
オプション変数: matrix_element_add
既定値:+

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  ]

カテゴリ: 行列 ·
オプション変数: matrix_element_mult
既定値:*

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

カテゴリ: 行列 ·
オプション変数: matrix_element_transpose
デフォルト値: false

matrix_element_transposeは、行列の各要素が転置されるときに適用される操作です。matrix_element_multには、任意の単項演算子を割り当てることができます。割り当てられる値は、引用符で囲まれた演算子の名前、関数の名前、またはラムダ式です。

matrix_element_transposetransposeと等しい場合、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   ]

カテゴリ: 行列 ·
関数: mattrace (M)
正方形行列 M のトレース (つまり、主対角線上の要素の合計) を返します.

mattrace は、Maxima charpoly の代替である ncharpoly によって呼び出されます.

load ("nchrpl") は、この関数をロードします。

カテゴリ: 行列 ·パッケージ nchrpl ·
関数: マイナー (M, i, j)
行列 M の i, j マイナーを返します。つまり、行 i と列 j が削除された M です。

カテゴリ: 行列 ·
関数: ncharpoly (M, x)
x を基準とした行列 M の特性多項式を返します。これは、Maximaのcharpolyの代替手段です.

ncharpoly は、特性多項式の根の累乗の合計に等しいことが知られている、特定の行列の累乗のトレースを計算することによって機能します。これらの量から、根の対称関数を計算することができますが、これは特性多項式の係数にすぎません。charpolyは、x * ident [n] - aの決定式を形成することによって機能します。したがって、ncharpoly は、たとえば、整数で満たされた大きな密行列の場合、多項式演算を完全に回避するため、勝ちます。

load ("nchrpl") は、このファイルをロードします。

カテゴリ: 行列 ·パッケージ nchrpl ·
関数: newdet (M)
行列 M の行列式を Johnson-Gentleman ツリー マイナー アルゴリズムによって計算します。newdet は結果を CRE 形式で返します。

カテゴリ: 行列 ·
機能: パーマネント (M)
行列 M の永続を Johnson-Gentleman ツリー マイナー アルゴリズムによって計算します。パーマネントは決定要因のようなものですが、兆候は変化しません。permanent は結果を CRE 形式で返します。

newdetも参照してください.

カテゴリ: 行列 ·
関数: ランク (M)
行列 M のランクを計算します。つまり、M の最大非特異部分決定項の順序です.

rank は、ゼロと等価な行列要素が実際にそうであると判断できない場合、間違った答えを返す可能性があります。

カテゴリ: 行列 ·
オプション変数: ratmx
デフォルト値: false

ratmx が false の場合、行列要素の表現で行列式と行列の加算、減算、および乗算が実行され、行列の反転の結果が一般的な表現のままになります。

ratmx trueの場合、上記の 4 つの演算は CRE 形式で実行され、行列逆行列の結果は CRE 形式になります。これにより、要素が展開される可能性があり (ratfac の設定によって異なります)、常に望ましいとは限らないことに注意してください。

カテゴリ: 行列 ·有理式 ·
関数: row (M, i)
行列 M の i 番目の行を返します。戻り値は行列です。

カテゴリ: 行列 ·
オプション変数: rmxchar
既定値:]

rmxchar は、行列の右側に描画される文字です。

lmxchar」も参照してください。.

カテゴリ: 表示フラグと変数 ·
オプション変数: scalarmatrixp
デフォルト値: true

scalarmatrixp が true の場合、行列の内積を計算した結果として 1 x 1 行列が生成されるたびに、行列の唯一の要素であるスカラーに簡略化されます。

scalarmatrixp が all の場合、すべての 1 x 1 行列はスカラーに簡略化されます。

scalarmatrixp が false の場合、1 x 1 行列はスカラーに簡略化されません。

カテゴリ: 行列 ·簡略化のフラグと変数 ·
関数: scalefactors (coordinatetransform)
ここで、引数 coordinatetransform は [[expression1, expression2, ...], indeterminate1, indeterminat2, ...] の形式に評価されます。ここで、変数 indeterminate1, indeterminate2 などは曲線座標変数であり、直交デカルト成分のセットは [expression1, expression2, ...] によって曲線座標で与えられます。coordinates はベクトル [indeterminate1, indeterminate2,...] に設定され、dimension はこのベクトルの長さに設定されます。SF[1]、SF[2]、...、SF[DIMENSION] は座標スケール係数に設定され、sfprod はこれらのスケール係数の積に設定されます。最初は、coordinatesは [X, Y, Z]、dimensionは 3、SF[1]=SF[2]=SF[3]=SFPROD=1 で、3 次元の直交座標に対応します。式を現在の座標系の物理コンポーネントに拡張するには、次の形式を使用する関数があります。

カテゴリー: パッケージ vect ·
関数: setelmx (x, i, j, M)
行列 M の (i, j) 番目の要素に x を代入し、変更された行列を返します。

M [i, j]: x は同じ効果を持ちますが、M の代わりに x を返します.

カテゴリ: 行列 ·
関数: similaritytransform (M)
関数: simtran (M)
similaritytransform は、行列 M の類似性変換を計算します。uniteigenvectors コマンドの出力であるリストを返します。さらに、フラグ nondiagonalizable が false の場合、2 つのグローバル行列 leftmatrix と rightmatrix が計算されます。これらの行列には、leftmatrix . M . rightmatrix は、対角線上に M の固有値を持つ対角行列です。nondiagonalizable が true の場合、左右の行列は計算されません。

フラグ hermitianmatrix が true の場合、leftmatrix は rightmatrix の転置の複素共役です。それ以外の場合、leftmatrix は rightmatrix の逆数です.

rightmatrix は行列で、その列は M の単位固有ベクトルです。他のフラグ (eigenvaluesとeigenvectorsを参照) は、similaritytransform がパッケージ内の他の関数を呼び出して rightmatrix を形成できるようにするため、同じ効果があります.

load ("eigen") は、この関数を読み込みます。

simtran は similaritytransform の同義語です.

カテゴリー: パッケージ固有 ·
オプション変数: スパース
デフォルト値: false

sparse が true で、ratmx true の場合、determinantはスパース行列式を計算するために特別なルーチンを使用します。

カテゴリ: 行列 ·
機能:サブマトリックス

   サブマトリックス (i_1, ..., i_m, M, j_1, ..., j_n)
   サブマトリックス (i_1, ..., i_m, M)
   サブマトリックス (M, j_1, ..., j_n)

行 i_1、...、i_m が削除され、列 j_1、...、j_n が削除された行列 M で構成される新しい行列を返します。

カテゴリ: 行列 ·
関数: 転置 (M)
M の転置を返します.

M が行列の場合、戻り値は別の行列 N であり、N[i,j] = M[j,i].

M がリストの場合、戻り値はlength (m) 行と 1 列の行列 N であり、N[i,1] = M[i].

それ以外の場合、M は記号であり、戻り値は名詞表現 'transpose (M) です.

カテゴリ: 行列 ·
関数: triangularize (M)
ガウス消去法によって生成された行列 M の上三角形を返します。戻り値はechelonと同じですが、各行の先頭の非ゼロ係数が 1 に正規化されていない点が異なります。

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 ]

カテゴリ: 線形方程式 ·行列 ·
関数: uniteigenvectors (M)
関数: ueivects (M)
行列 M の単位固有ベクトルを計算します。戻り値はリストのリストであり、その最初のサブリストは eigenvalues コマンドの出力であり、他のサブリストはそれぞれそれらの固有値に対応する行列の単位固有ベクトルです。

eigenvectors コマンドの説明に記載されているフラグは、このコマンドでも同じ効果があります。

knowneigvects がtrueの場合、eigenは、行列の固有ベクトルがユーザーに既知であり、グローバル名 listeigvects で格納されていると想定します。listeigvects は、eigenvectors コマンドの出力と同様のリストに設定する必要があります。

knowneigvects が true に設定され、固有ベクトルのリストが指定されている場合、nondiagonalizable の設定が正しくない可能性があります。その場合は、正しい値に設定してください。著者は、ユーザーが自分が何をしているのかを理解しており、固有ベクトルが適切な次元のベクトル空間にまたがっていない行列を対角化しようとはしないと仮定しています。

load ("eigen") は、この関数を読み込みます。

ueivects は uniteigenvectors のシノニムです.

カテゴリー: パッケージ固有 ·
関数: unitvector (x)
関数: uvect (x)
x/norm(x) を返します。x と同じ方向の単位ベクトルです.

load ("eigen") は、この関数を読み込みます。

uvect は unitvector の同義語です.

カテゴリー: パッケージ固有 ·
関数: vectorpotential (givencurl)
現在の座標系で、指定されたカール ベクトルのベクトル ポテンシャルを返します。potentialzeroloc はpotentialと同様の役割を果たしますが、方程式の左辺の順序は座標変数の巡回順列でなければなりません。

カテゴリー: パッケージ vect ·
関数: vectorsimp (expr)
簡略化と拡張を次のグローバル フラグに従って適用します。

expandall、expanddot、expanddotplus、expandcrossexpandcrossplus、expandcrosscross、expandgrad、expandgradprod、expanddivexpandgradplus、expanddivplus、expanddivprod、expandcurl、expandcurlplusexpandcurlcurlexpandlaplacianexpandlaplacianplusexpandlaplacianprod.

これらのフラグのデフォルト値はすべて false です。plus接尾辞は、加法性または分配性を採用することを指します。prod 接尾辞は、任意の種類の積であるオペランドの展開を指します。

expandcrosscross
簡素 化
宛先

.

expandcurlcurl
簡素 化
宛先

.

expandlaplaciantodivgrad
簡素 化
宛先

.

expandcross
expandcrossplusとexpandcrosscrossを有効にします.

expandplus
expanddotplus、expandcrossplus、expandgradplus、expanddivplus、expandcurlplus、expandlaplacianplusを有効にします.

expandprod
expandgradprod、expanddivprod、expandlaplacianprod を有効にします.

これらのフラグはすべて evflag として宣言されています.

カテゴリ: パッケージ vect ·簡略化関数 ·
オプション変数: vect_cross
デフォルト値: false

vect_cross trueの場合、SHARE で ~ が定義されている場所で DIFF(X~Y,T) を機能させることができます。VECT (ただし、VECT_CROSS true に設定されます。

カテゴリ: パッケージ vect ·微分計算 ·
関数: zeromatrix (m, n)
すべての要素が 0 である m x n 行列を返します。

カテゴリ: 行列 ·