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

68. linearalgebra


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

68.1 Introduction to linearalgebra

linearalgebraは線形代数に関する関数のコレクションです。

例:

 
(%i1) M : matrix ([1, 2], [1, 2]);
                            [ 1  2 ]
(%o1)                       [      ]
                            [ 1  2 ]
(%i2) nullspace (M);
                               [  1  ]
                               [     ]
(%o2)                     span([   1 ])
                               [ - - ]
                               [   2 ]
(%i3) columnspace (M);
                                [ 1 ]
(%o3)                      span([   ])
                                [ 1 ]
(%i4) ptriangularize (M - z*ident(2), z);
                         [ 1   2 - z   ]
(%o4)                    [             ]
                         [           2 ]
                         [ 0  3 z - z  ]
(%i5) M : matrix ([1, 2, 3], [4, 5, 6], [7, 8, 9]) - z*ident(3);
                     [ 1 - z    2      3   ]
                     [                     ]
(%o5)                [   4    5 - z    6   ]
                     [                     ]
                     [   7      8    9 - z ]
(%i6) MM : ptriangularize (M, z);
              [ 4  5 - z            6            ]
              [                                  ]
              [                2                 ]
              [     66        z    102 z   132   ]
              [ 0   --      - -- + ----- + ---   ]
(%o6)         [     49        7     49     49    ]
              [                                  ]
              [               3        2         ]
              [           49 z    245 z    147 z ]
              [ 0    0    ----- - ------ - ----- ]
              [            264      88      44   ]
(%i7) algebraic : true;
(%o7)                         true
(%i8) tellrat (MM [3, 3]);
                         3       2
(%o8)                  [z  - 15 z  - 18 z]
(%i9) MM : ratsimp (MM);
               [ 4  5 - z           6           ]
               [                                ]
               [                2               ]
(%o9)          [     66      7 z  - 102 z - 132 ]
               [ 0   --    - ------------------ ]
               [     49              49         ]
               [                                ]
               [ 0    0             0           ]
(%i10) nullspace (MM);
                        [        1         ]
                        [                  ]
                        [   2              ]
                        [  z  - 14 z - 16  ]
                        [  --------------  ]
(%o10)             span([        8         ])
                        [                  ]
                        [    2             ]
                        [   z  - 18 z - 12 ]
                        [ - -------------- ]
                        [         12       ]
(%i11) M : matrix ([1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],
                   [13, 14, 15, 16]);
                       [ 1   2   3   4  ]
                       [                ]
                       [ 5   6   7   8  ]
(%o11)                 [                ]
                       [ 9   10  11  12 ]
                       [                ]
                       [ 13  14  15  16 ]
(%i12) columnspace (M);
                           [ 1  ]  [ 2  ]
                           [    ]  [    ]
                           [ 5  ]  [ 6  ]
(%o12)                span([    ], [    ])
                           [ 9  ]  [ 10 ]
                           [    ]  [    ]
                           [ 13 ]  [ 14 ]
(%i13) apply ('orthogonal_complement, args (nullspace (transpose (M))));
                           [ 0 ]  [  1  ]
                           [   ]  [     ]
                           [ 1 ]  [  0  ]
(%o13)                span([   ], [     ])
                           [ 2 ]  [ - 1 ]
                           [   ]  [     ]
                           [ 3 ]  [ - 2 ]

Categories:  Linear algebra · Share packages · Package linearalgebra


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

68.2 Functions and Variables for linearalgebra

関数: addmatrices (f, M_1, …, M_n)

関数 fを加算関数として使い、行列 M_1, …, M_nの和を返します。 関数 fは任意の数の引数を受け付けなければいけません (Maxima n項関数)。

例:

 
(%i1) m1 : matrix([1,2],[3,4])$
(%i2) m2 : matrix([7,8],[9,10])$
(%i3) addmatrices('max,m1,m2);
(%o3) matrix([7,8],[9,10])
(%i4) addmatrices('max,m1,m2,5*m1);
(%o4) matrix([7,10],[15,20])

Categories:  Package linearalgebra

関数: blockmatrixp (M)

Mのエントリがすべて行列なら、その時に限って trueを返します。

関数: columnop (M, i, j, theta)

もし Mが行列なら、 列演算 C_i <- C_i - theta * C_jを施すことで生じる行列を返します。 もし Mが行 iか行 jを持たないならエラーをシグナルします。

Categories:  Package linearalgebra

関数: columnswap (M, i, j)

もし Mが行列なら、列 ijを交換します。 もし Mに列 ijがないならエラーをシグナルします。

Categories:  Package linearalgebra

関数: columnspace (M)

もし Mが行列なら span (v_1, ..., v_n)を返します。 ここで、集合 {v_1, ..., v_n}Mの列空間の基底です。 空集合の包は {0}です。 従って、列空間が 1員だけ持つ時 span ()を返します。

Categories:  Package linearalgebra

関数: copy (e)

Maxima式 eのコピーを返します。 eは任意の Maxima式であり得ますが、 eがリストか行列の時、コピー関数はもっとも役立ちます; 以下を考えてください:

 
(%i1) m : [1,[2,3]]$
(%i2) mm : m$
(%i3) mm[2][1] : x$
(%i4) m;
(%o4)                      [1,[x,3]]
(%i5) mm;
(%o5)                      [1,[x,3]]

同じ実験を試みましょう。 しかし、今回 mmmのコピーとします。

 
(%i6) m : [1,[2,3]]$
(%i7) mm : copy(m)$
(%i8) mm[2][1] : x$
(%i9) m;
(%o9)                     [1,[2,3]]
(%i10) mm;
(%o10)                    [1,[x,3]]

今回、 mmへの割り当ては mの値を変えません。

Categories:  Package linearalgebra

関数: cholesky  
    cholesky (M)  
    cholesky (M, field)

自己共役(すなわち Hermite)行列の Cholesky分解を返します。

二番目の引数はデフォルトでは 'generalring'です。 fieldの取り得る値の説明については lu_factorを参照してください。

関数: ctranspose (M)

行列 Mの複素共役転置を返します。 関数 ctransposeはそれぞれの行列要素を転置するのに matrix_element_transposeを使います。

Categories:  Package linearalgebra

関数: diag_matrix (d_1, d_2,...,d_n)

対角成分 d_1, d_2,...,d_nを持つ対角行列を返します。 対角成分が行列の時、戻り値行列の零成分は適切なサイズの零行列です; 例えば:

 
(%i1) diag_matrix(diag_matrix(1,2),diag_matrix(3,4));

                            [ [ 1  0 ]  [ 0  0 ] ]
                            [ [      ]  [      ] ]
                            [ [ 0  2 ]  [ 0  0 ] ]
(%o1)                       [                    ]
                            [ [ 0  0 ]  [ 3  0 ] ]
                            [ [      ]  [      ] ]
                            [ [ 0  0 ]  [ 0  4 ] ]
(%i2) diag_matrix(p,q);

                                   [ p  0 ]
(%o2)                              [      ]
                                   [ 0  q ]

Categories:  Package linearalgebra

関数: dotproduct (u, v)

ベクトル uvの内積を返します。 これは conjugate (transpose (u)) . vと同じです。 引数 uvは列ベクトルでなければいけません。

Categories:  Package linearalgebra

関数: eigens_by_jacobi  
    eigens_by_jacobi (A)  
    eigens_by_jacobi (A, field_type)

Aの固有値と固有ベクトルを Jacobi回転法で計算します。 Aは対称行列でなければいけません。 (しかし、正定値である必要も半正定値である必要もありません。) field_typeは計算上の体を示し、 floatfieldbigfloatfieldです。 もし field_typeを指定しないなら、デフォルトは floatfieldです。

Aの要素は、数か、 (field_typeに依存して )floatbfloatを介して数に評価される式でなければいけません。

例:

 
(%i1) S: matrix([1/sqrt(2), 1/sqrt(2)],[-1/sqrt(2), 1/sqrt(2)]);
                     [     1         1    ]
                     [  -------   ------- ]
                     [  sqrt(2)   sqrt(2) ]
(%o1)                [                    ]
                     [      1        1    ]
                     [ - -------  ------- ]
                     [   sqrt(2)  sqrt(2) ]
(%i2) L : matrix ([sqrt(3), 0], [0, sqrt(5)]);
                      [ sqrt(3)     0    ]
(%o2)                 [                  ]
                      [    0     sqrt(5) ]
(%i3) M : S . L . transpose (S);
            [ sqrt(5)   sqrt(3)  sqrt(5)   sqrt(3) ]
            [ ------- + -------  ------- - ------- ]
            [    2         2        2         2    ]
(%o3)       [                                      ]
            [ sqrt(5)   sqrt(3)  sqrt(5)   sqrt(3) ]
            [ ------- - -------  ------- + ------- ]
            [    2         2        2         2    ]
(%i4) eigens_by_jacobi (M);
The largest percent change was 0.1454972243679
The largest percent change was 0.0
number of sweeps: 2
number of rotations: 1
(%o4) [[1.732050807568877, 2.23606797749979],
                        [  0.70710678118655   0.70710678118655 ]
                        [                                      ]]
                        [ - 0.70710678118655  0.70710678118655 ]
(%i5) float ([[sqrt(3), sqrt(5)], S]);
(%o5) [[1.732050807568877, 2.23606797749979],
                        [  0.70710678118655   0.70710678118655 ]
                        [                                      ]]
                        [ - 0.70710678118655  0.70710678118655 ]
(%i6) eigens_by_jacobi (M, bigfloatfield);
The largest percent change was 1.454972243679028b-1
The largest percent change was 0.0b0
number of sweeps: 2
number of rotations: 1
(%o6) [[1.732050807568877b0, 2.23606797749979b0],
                [  7.071067811865475b-1   7.071067811865475b-1 ]
                [                                              ]]
                [ - 7.071067811865475b-1  7.071067811865475b-1 ]

関数: get_lu_factors (x)

x = lu_factor (A)の時、 get_lu_factorsは形式 [P, L, U]のリストを返します。 ここで、 Pは置換行列、 Lは対角成分を含む下三角行列、 Uは上三角行列であり、 A = P L Uが成り立ちます。

Categories:  Package linearalgebra

関数: hankel  
    hankel (col)  
    hankel (col, row)

Hankel行列 Hを返します。 Hの最初の列は colです; 最初の成分を除いて、 Hの最後の行は rowです。 rowのデフォルトは colと同じ長さを持つ零ベクトルです。

Categories:  Package linearalgebra

関数: hessian (f, x)

変数 xのリストに関する fの Hessian行列を返します。 Hessian行列の (i, j)成分は diff(f, x[i], 1, x[j], 1)です。

例:

 
(%i1) hessian (x * sin (y), [x, y]);
                     [   0       cos(y)   ]
(%o1)                [                    ]
                     [ cos(y)  - x sin(y) ]
(%i2) depends (F, [a, b]);
(%o2)                       [F(a, b)]
(%i3) hessian (F, [a, b]);
                        [   2      2   ]
                        [  d F    d F  ]
                        [  ---   ----- ]
                        [    2   da db ]
                        [  da          ]
(%o3)                   [              ]
                        [   2      2   ]
                        [  d F    d F  ]
                        [ -----   ---  ]
                        [ da db     2  ]
                        [         db   ]

関数: hilbert_matrix (n)

n掛け nの Hilbert行列を返します。 nが正の整数でない時、エラーをシグナルします。

Categories:  Package linearalgebra

関数: identfor  
    identfor (M)  
    identfor (M, fld)

行列 Mと同じ形を持つ単位行列を返します。 単位行列の対角成分は体 fldの乗算単位元です; fldのデフォルトは generalringです。

一番目の引数 Mは平方行列か非行列でなければいけません。 Mが行列の時、 Mのそれぞれの成分は平方行列であり得ます。 - 従って、 Mは区分されたMaxima行列であり得ます。 行列は任意の(有限の)深さに区分できます。

zeroforも参照してください。

Categories:  Package linearalgebra

関数: invert_by_lu (M, (rng generalring))

LU分解を使って行列 Mの逆行列を返します。 LU分解は環 rngを使って実行されます。

Categories:  Package linearalgebra

関数: jacobian (f, x)

変数のリスト xに関する関数のリスト fの Jacobi行列を返します。 Jacobi行列の (i, j)成分は diff(f[i], x[j])です。

例:

 
(%i1) jacobian ([sin (u - v), sin (u * v)], [u, v]);
                  [ cos(v - u)  - cos(v - u) ]
(%o1)             [                          ]
                  [ v cos(u v)   u cos(u v)  ]
(%i2) depends ([F, G], [y, z]);
(%o2)                  [F(y, z), G(y, z)]
(%i3) jacobian ([F, G], [y, z]);
                           [ dF  dF ]
                           [ --  -- ]
                           [ dy  dz ]
(%o3)                      [        ]
                           [ dG  dG ]
                           [ --  -- ]
                           [ dy  dz ]

関数: kronecker_product (A, B)

行列 ABの Kronecker積を返します。

Categories:  Package linearalgebra

関数: listp  
    listp (e, p)  
    listp (e)

オプションの引数 pが与えられたとして、もし eが Maximaリストで、 pがすべてのリストの要素で trueに評価されるなら、 trueを返します。 listpがオプションの引数を与えられない時、もし eが Maximaリストなら、 trueを返します。 他のすべての場合 falseを返します。

関数: locate_matrix_entry (M, r_1, c_1, r_2, c_2, f, rel)

一番目の引数は行列でなければいけません; 引数 r_1から c_2は行 r_1から r_2と列 c_1から c_2から成る Mの部分行列を決定します。

ある性質を満たす部分行列 Mの中の成分を見つけます。 3つのケース:

(1) rel = 'boolfが述語論理:

左から右へ、そして上から下へ部分行列をスキャンし、 述語論理 fを満たす最初の成分のインデックスを返します。 もし fを満たす行列成分がないなら、 falseを返します。

(2) rel = 'maxfが実関数:

fを最大にする成分を探して部分行列をスキャンします。 最大化の成分のインデックスを返します。

(3) rel = 'minfが実関数:

fを最小にする成分を探して部分行列をスキャンします。 最小化の成分のインデックスを返します。

Categories:  Package linearalgebra

関数: lu_backsub (M, b)

M = lu_factor (A, field)の時、 lu_backsub (M, b)は線形系 A x = bを解きます。

Categories:  Package linearalgebra

関数: lu_factor (M, field)

形式 [LU, perm, fld][LU, perm, fld, lower-cnd upper-cnd]のリストを返します。 ここで、

(1) 行列 LUMの分解をパックされた形式で含みます。 パックされた形式は3つのことを意味します; 第一に LUの行はリスト permに従って置換されます。 もし、例えば、 permがリスト [3,2,1]なら、 LU分解の実際の一番目の行は行列 LUの三番目の行です。 第二に、 mの下三角因子はすべて 1で置き換えられた対角成分を持つ LUの下三角部です。 第三に、 Mの上三角因子は LUの上三角部です。

(2) 体が floatfieldcomplexfieldの時、数 lower-cndupper-cndMの無限ノルム条件数の下限と上限です。 すべての体に対して条件数を見積ることができるわけではありません; そんな体に対しては lu_factorは 2項目リストを返します。 下限と上限どちらも真の値から任意に大きな因子だけ異なる可能性があります。 (mat_condも参照してください。)

引数 Mは平方行列でなければいけません。

オプション引数 fldは環か体かを決めるシンボルでなければいけません。 予め定義された体と環は以下のものがあります:

(a) generalring - Maxima式の環, (b) floatfield - 倍精度浮動小数点数体, (c) complexfield - 倍精度浮動小数点複素数体, (d) crering - Maxima CRE式の環, (e) rationalfield - 有理数体, (f) runningerror - 浮動小数点の丸め誤差をトラック, (g) noncommutingring - 乗算が非可換ドット演算子のMaxima式の環

体が floatfieldcomplexfield, runningerrorのいずれかの時、アルゴリズムは部分ピボットを使います; 他のすべての体に対しては、零ピボットを避ける必要があるときだけ行をスイッチします。

浮動小数点加算算術は結合的でなく、'体'の意味は数学的定義と異なります。

runningerrorの要素は形式 [x,n]の 2つの要素の Maximaリストです。 ここで、 xは浮動小数点数で、 nは整数です。 xの'真'の値と xの相対差は計算機イプシロンに nをかけたもので近似的に抑えられます。 ランニングエラー境界はオーダーが計算機イプシロンの平方の項をいくつか落とします。 The running error bound drops some terms that of the order the square of the machine epsilon.

新しい体を定義するユーザーインターフェースはありません。 Common Lispに精通しているユーザーは新しい体を定義することができるはずです。 これをするには、ユーザーは算術演算のための関数と 体表現と Maximaの相互変換のための関数を定義しなければいけません。 さらに、(部分ピボットが使われる)順序体に関しては、 ユーザーは大きさの関数と体の元の比較関数を定義しなければいけません。 あとは、 Common Lisp 構造体 mringを定義することだけです。 ファイル mringに多くの例があります。

分解を計算するために、最初の仕事は行列成分それぞれを指定された体の元に変換することです。 変換が不可能な時は、分解はエラーメッセージとともに停止します。 体の元は Maxima式である必要はありません。 例えば、complexfieldの元は Common Lisp複素数です。 そして、分解を計算した後には、行列成分は Maxima式に変換されなければいけません。

get_lu_factorsも参照してください。

例:

 
(%i1) w[i,j] := random (1.0) + %i * random (1.0);
(%o1)          w     := random(1.) + %i random(1.)
                i, j
(%i2) showtime : true$
Evaluation took 0.00 seconds (0.00 elapsed)
(%i3) M : genmatrix (w, 100, 100)$
Evaluation took 7.40 seconds (8.23 elapsed)
(%i4) lu_factor (M, complexfield)$
Evaluation took 28.71 seconds (35.00 elapsed)
(%i5) lu_factor (M, generalring)$
Evaluation took 109.24 seconds (152.10 elapsed)
(%i6) showtime : false$

(%i7) M : matrix ([1 - z, 3], [3, 8 - z]);
                        [ 1 - z    3   ]
(%o7)                   [              ]
                        [   3    8 - z ]
(%i8) lu_factor (M, generalring);
          [ 1 - z         3        ]
          [                        ]
(%o8)    [[   3            9       ], [1, 2], generalring]
          [ -----  - z - ----- + 8 ]
          [ 1 - z        1 - z     ]
(%i9) get_lu_factors (%);
                  [   1    0 ]  [ 1 - z         3        ]
        [ 1  0 ]  [          ]  [                        ]
(%o9)  [[      ], [   3      ], [                9       ]]
        [ 0  1 ]  [ -----  1 ]  [   0    - z - ----- + 8 ]
                  [ 1 - z    ]  [              1 - z     ]
(%i10) %[1] . %[2] . %[3];
                        [ 1 - z    3   ]
(%o10)                  [              ]
                        [   3    8 - z ]

関数: mat_cond  
    mat_cond (M, 1)  
    mat_cond (M, inf)

行列 mp-ノルムの行列条件数を返します。 pに許される値は 1と infです。 この関数は、行列 mの逆元を計算するのに LU分解を使います。 このため mat_condの実行時間は行列サイズの三乗に比例します; lu_factorは、行列サイズの二乗に比例する時間内に 無限大ノルム条件数の下限と上限を決定します。

Categories:  Package linearalgebra

関数: mat_norm  
    mat_norm (M, 1)  
    mat_norm (M, inf)  
    mat_norm (M, frobenius)

行列 Mの行列 p-ノルムを返します。 pに許される値は 1か inffrobenius (Frobenius行列ノルム)です。 行列 Mは区分されない行列でなければいけません。

Categories:  Package linearalgebra

関数: matrixp  
    matrixp (e, p)  
    matrixp (e)

オプション引数 pが与えられたとして、 もし eが行列で、 pが行列成分すべてに対して trueに評価されるなら、 trueを返します。 matrixpがオプション引数を与えられない時は、もし eが行列なら、 trueを返します。 他のすべての場合には falseを返します。

blockmatrixpも参照してください。

関数: matrix_size (M)

行列 Mの行数と列数をそれぞれ与える 2要素リストを返します。

Categories:  Package linearalgebra

関数: mat_fullunblocker (M)

もし Mが区分行列なら、 行列をすべてのレベルで区分解除します。 もし Mが行列なら、 Mを返します; それ以外ではエラーをシグナルします。

Categories:  Package linearalgebra

関数: mat_trace (M)

行列 Mの跡を返します。 もし Mが行列でないなら、名詞形を返します。 Mが区分行列の時、 mat_trace(M)mat_trace(mat_unblocker(m))するのと同じ値を返します。

Categories:  Package linearalgebra

関数: mat_unblocker (M)

もし Mが区分行列なら、 Mを 1レベル区分解除します。 もし Mが行列なら、 mat_unblocker (M)Mを返します; それ以外ではエラーをシグナルします。

このように、もし Mの成分それぞれが行列なら、 mat_unblocker (M)は区分されていない行列を返しますが、 もし Mの成分それぞれが区分行列なら、 mat_unblocker (M)は区分が 1レベル少ない区分行列を返します。

もし区分行列を使うなら、おそらく、 matrix_element_mult"."に、 matrix_element_transpose'transposeに設定したくなるでしょう。 mat_fullunblockerも参照してください。

例:

 
(%i1) A : matrix ([1, 2], [3, 4]);
                            [ 1  2 ]
(%o1)                       [      ]
                            [ 3  4 ]
(%i2) B : matrix ([7, 8], [9, 10]);
                            [ 7  8  ]
(%o2)                       [       ]
                            [ 9  10 ]
(%i3) matrix ([A, B]);
                     [ [ 1  2 ]  [ 7  8  ] ]
(%o3)                [ [      ]  [       ] ]
                     [ [ 3  4 ]  [ 9  10 ] ]
(%i4) mat_unblocker (%);
                         [ 1  2  7  8  ]
(%o4)                    [             ]
                         [ 3  4  9  10 ]

Categories:  Package linearalgebra

関数: nullspace (M)

もし Mが行列なら、 span (v_1, ..., v_n)を返します。 ここで集合 {v_1, ..., v_n}Mの零空間の基底です。 空集合のスパンは {0}です。 なので、零空間が要素を 1つだけ持つときは span ()を返します。

Categories:  Package linearalgebra

関数: nullity (M)

もし Mが行列なら、 Mの零空間の次元を返します。

Categories:  Package linearalgebra

関数: orthogonal_complement (v_1, ..., v_n)

span (u_1, ..., u_m)を返します。 ここで集合 {u_1, ..., u_m}は集合 (v_1, ..., v_n)の直交補空間の基底です。

ベクトル v_1から v_nそれぞれは列ベクトルでなければいけません。

Categories:  Package linearalgebra

関数: polynomialp  
    polynomialp (p, L, coeffp, exponp)  
    polynomialp (p, L, coeffp)  
    polynomialp (p, L)

もし pがリスト Lの中の変数に関して多項式なら、 trueを返します。 述語論理 coeffpは係数それぞれに対して trueに評価されなければいけなく、述語論理 exponpLの中の変数の指数すべてに対して trueに評価されなければいけません。 もし exponpに対してデフォルトでない値を使いたいなら、 たとえ coeffpに関してデフォルトを使いたくても coeffpを値とともに供給しなければいけません。

polynomialp (p, L, coeffp)polynomialp (p, L, coeffp, 'nonnegintegerp)と同値です。

polynomialp (p, L)polynomialp (p, L, 'constantp, 'nonnegintegerp)と同値です。

多項式は展開する必要はありません:

 
(%i1) polynomialp ((x + 1)*(x + 2), [x]);
(%o1)                         true
(%i2) polynomialp ((x + 1)*(x + 2)^a, [x]);
(%o2)                         false

coeffpと exponpにデフォルトでない値を使う例:

 
(%i1) polynomialp ((x + 1)*(x + 2)^(3/2), [x], numberp, numberp);
(%o1)                         true
(%i2) polynomialp ((x^(1/2) + 1)*(x + 2)^(3/2), [x], numberp,
                                                        numberp);
(%o2)                         true

2変数多項式:

 
(%i1) polynomialp (x^2 + 5*x*y + y^2, [x]);
(%o1)                         false
(%i2) polynomialp (x^2 + 5*x*y + y^2, [x, y]);
(%o2)                         true

関数: polytocompanion (p, x)

もし pxの多項式なら、 pのコンパニオン行列を返します。 次数 nのモニック多項式(最高次数の係数が1の多項式)に対しては、 p = (-1)^n charpoly (polytocompanion (p, x)) があります。

pxの多項式でないなら、エラーをシグナルします。

Categories:  Package linearalgebra

関数: ptriangularize (M, v)

もし Mがそれぞれの成分がvの多項式の行列なら、以下のような行列 M2を返します。

(1) M2は上三角で、

(2) M2 = E_n ... E_1 M, ここで E_1から E_nは成分が vの多項式の基本行列です。

(3) |det (M)| = |det (M2)|,

注意: この関数はすべての成分が vの多項式かチェックしません。

Categories:  Package linearalgebra

関数: rowop (M, i, j, theta)

もし Mが行列なら、行演算 R_i <- R_i - theta * R_jをすることで生じる行列を返します。 もし Mに行ijがないなら、エラーをシグナルします。

Categories:  Package linearalgebra

関数: rank (M)

行列 Mの階数を返します。 階数は列空間の次元です。

例:

 
(%i1) rank(matrix([1,2],[2,4]));
(%o1)                                  1
(%i2) rank(matrix([1,b],[c,d]));
Proviso:  {d - b c # 0}
(%o2)                                  2

Categories:  Package linearalgebra

関数: rowswap (M, i, j)

もし Mが行列なら行 ijを入れ替えます。 もし Mに行ijがないならエラーをシグナルします。

Categories:  Package linearalgebra

関数: toeplitz  
    toeplitz (col)  
    toeplitz (col, row)

Toeplitz行列 Tを返します。 Tの一番目の列は colです; 一番目の成分を除いて、 Tの最初の行は rowです。 rowのデフォルトは colの複素共役です。

例:

 
(%i1)  toeplitz([1,2,3],[x,y,z]);

                                  [ 1  y  z ]
                                  [         ]
(%o1)                             [ 2  1  y ]
                                  [         ]
                                  [ 3  2  1 ]
(%i2)  toeplitz([1,1+%i]);

                              [   1     1 - %I ]
(%o2)                         [                ]
                              [ %I + 1    1    ]

Categories:  Package linearalgebra

関数: vandermonde_matrix ([x_1, ..., x_n])

i番目の行が [1, x_i, x_i^2, ... x_i^(n-1)]n掛け n行列を返します。

Categories:  Package linearalgebra

関数: zerofor  
    zerofor (M)  
    zerofor (M, fld)

行列 Mと同じ形の零行列を返します。 零行列の成分すべては体 fldの加算の単位元です; fldのデフォルトは generalringです。

一番目の引数 Mは平方行列か行列以外でなければいけません。 Mが行列の時、 Mの成分それぞれは平方行列であり得ます。 - 従って Mは区分 Maxima行列であり得ます。 行列は任意の(有限の)深さに区分できます。

identforも参照してください。

Categories:  Package linearalgebra

関数: zeromatrixp (M)

Mが区分行列でない時、 もし行列 Mのそれぞれの要素 eに対して is (equal (e, 0))が真なら、 trueを返します。 Mが区分行列の時、 もしeの要素それぞれに対して zeromatrixptrueに評価されるなら、 trueを返します。


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

This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.