行列とベクトル成分の割り当て
既存の Matrix または Vector (これらのコンストラクタオプション ro は readonly に設定されていないとき) において割り当て文を用いて成分の値を変更することができます。割り当て文がこの目的のために使用されると、結果として得られる行列またはベクトルの返され方に関して影響があります。
以下のセクションにおいて、A は行列、V はベクトルです。
|
成分に値を割り当てる
|
|
Matrix と Vector 成分の抽出 で記述される成分選択フォーマットの各々を割り当て文の左辺で使用することができます。割り当て文の左辺で選ばれる成分は、右辺の対応する成分と置き換えられます。指定されていない成分は、0 に設定されます。そのような割り当て文では次元の数が一致しなければなりません。 ベクトルは部分行列に割り当てることはできません、たとえ 1 x n の部分行列にさえもできません。
例えば、割り当て
>
|
A := Matrix([[9,9,9,9],[9,9,9,9],[9,9,9,9],[9,9,9,9]]);
|
| (1.1) |
>
|
A[1..2, 2..4] := Matrix([[5, 6], [7, 8]]);
|
| (1.2) |
| (1.3) |
は A[1, 2] を 5、A[1, 3] を 6、A[2, 2] を 7、A[2, 3] を 8 で置き換えます。成分 A[1, 4] と A[2, 4] は 0 に設定されます。
割り当て文の左辺の選択が、行列またはベクトルの隣り合う部分や順序付けられた部分を表している必要はありません。例えば、A[[ 3, 1], 1..-1] := B は A の第 3 行と 第 1 行のそれぞれを既存の行列 B の第 1 行と 第 2 行で置き換えます。
|
|
結果として得られる行列またはベクトルの性質
|
|
ここで述べた割り当て操作は位置に作用します。結果として得られる行列とベクトルはもとの行列とベクトルを上書きするものです。結果として、コマンド A[1..-1, 1..-1] := Matrix([[...],...,[...]]) は A のすべての成分の置き換えを引き起こします、ところがコマンド A := Matrix([[...],...,[...]]) は新しい行列を作成します。
すべての割り当てにおいて、右辺の値は左辺の行列またはベクトルと同じか互換性を持つデータタイプでなければなりません。さらに、右辺が左辺で指定した部分行列、部分ベクトルはスカラーの位置と合わないとエラーになります。右辺が左辺よりも小さい場合はエラーになりません。
|
|