[ < ] | [ > ] |  | [ << ] | [上] | [ >> ] |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

# 63. linearalgebra

[ < ] | [ > ] |  | [ << ] | [上] | [ >> ] |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

## 63.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

[ < ] | [ > ] |  | [ << ] | [上] | [ >> ] |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

## 63.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を返します。

  ·

  Categories: Package linearalgebra ·Predicate functions

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

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

  ·

  Categories: Package linearalgebra

関数: columnswap (M, i, j)

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

  ·

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

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

      (%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 (M)
関数: cholesky (M, field)

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

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

  ·

  Categories: Matrix decompositions ·Package linearalgebra

関数: 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)

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

  ·

  Categories: Package linearalgebra

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

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

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

  例:

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

  ·

  Categories: Matrix decompositions ·Package linearalgebra

関数: 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 (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   ]

  ·

  Categories: Differential calculus ·Package linearalgebra

関数: hilbert_matrix (n)

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

  ·

  Categories: Package linearalgebra

関数: 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 ]

  ·

  Categories: Differential calculus ·Package linearalgebra

関数: kronecker_product (A, B)

  行列 Aと Bの Kronecker積を返します。

  ·

  Categories: Package linearalgebra

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

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

  ·

  Categories: Package linearalgebra ·Predicate functions

関数: 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 = 'bool`で fが述語論理:

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

  (2) `rel = 'max`で fが実関数:

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

  (3) `rel = 'min`で fが実関数:

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

  (2) 体が `floatfield`か `complexfield`の時、数 lower-cndと upper-cndは Mの無限ノルム条件数の下限と上限です。 すべての体に対して条件数を見積ることができるわけではありません; そんな体に対しては `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式の環

  体が `floatfield`か `complexfield`, `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 ]

  ·

  Categories: Matrix decompositions ·Package linearalgebra

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

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

  ·

  Categories: Package linearalgebra

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

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

  ·

  Categories: Package linearalgebra

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

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

  `blockmatrixp`も参照してください。

  ·

  Categories: Package linearalgebra ·Predicate functions

関数: 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 (p, L, coeffp, exponp)
関数: polynomialp (p, L, coeffp)
関数: polynomialp (p, L)

  もし pがリスト Lの中の変数に関して多項式なら、 `true`を返します。 述語論理 coeffpは係数それぞれに対して `true`に評価されなければいけなく、述語論理 exponpは Lの中の変数の指数すべてに対して `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

  ·

  Categories: Package linearalgebra ·Predicate functions

関数: polytocompanion (p, x)

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

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

  ·

  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に行iか jがないなら、エラーをシグナルします。

  ·

  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が行列なら行 iと jを入れ替えます。 もし Mに行iか jがないならエラーをシグナルします。

  ·

  Categories: Package linearalgebra

関数: 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 (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の要素それぞれに対して `zeromatrixp`が `true`に評価されるなら、 `true`を返します。

  ·

  Categories: Package linearalgebra ·Predicate functions

[ << ] | [ >> ] |  |  |  |  |  | [冒頭] | [目次] | [見出し] | [ ? ]

この文書は市川 雄二によって2013年8月月24日にtexi2html 1.82を用いて生成されました。