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

# 64. linearalgebra

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

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

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

## 64.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-ノルムを返します。 . The allowed values for 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)`を返します。 ここで、, where the set 集合 `{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)`を返します。 ここで、, where the se 集合 `{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

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

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