LinearAlgebra[MatrixMatrixMultiply] - 2 つの行列の積の計算
使い方
MatrixMatrixMultiply(A, B, ip, outopts)
パラメータ
A - 行列
B - 行列
ip - (オプション) BooleanOpt(inplace); B が正方行列のときに限り出力が入力を上書きするかどうかを指定
outopts - (オプション) outputoptions=list の形をした等式; 結果として得られるオブジェクトのコンストラクタオプション
|
説明
|
|
•
|
MatrixMatrixMultiply(A, B) 関数は、標準的な行列の積 A . B を計算します。結果として得られる行列は、A と同じ行数と B と同じ列数を持ちます。
|
•
|
inplace オプション (ip) は結果が返される場所を決めます。inplace=true で B が正方行列なら、結果は最初の引数に上書きされます。inplace=false が与えられるか、呼び出し手順に含まれていないときは、結果は新しい行列として返されます。
|
|
inplace=true という条件は、inplace と略記することができます。
|
|
inplace オプションは、注意して使わなければいけません。なぜなら、演算が失敗すれば元の行列の引数は改悪されてしまうからです。
|
|
outputoptions オプション (outopts) は、結果を作成する Matrix コンストラクタに付加情報 (readonly, shape, storage, order, datatype, attributes) を与えます。
|
•
|
inplace と outputoptions オプションは両立しません。
|
•
|
この関数は LinearAlgebra パッケージの一部ですから、with(LinearAlgebra) を実行した後にのみ MatrixMatrixMultiply(..) の形で使うことができます。ただし、長い形の名前 LinearAlgebra[MatrixMatrixMultiply](..) を使えばいつでもアクセスすることができます。
|
•
|
この関数は、同等なショートカット表記 A . B を持ちます。詳しくは、dot 演算を参照してください。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
R := Matrix([[cos(theta),-sin(theta)],[sin(theta),cos(theta)]]);
|
| (2.1) |
>
|
MatrixMatrixMultiply(R, Transpose(R));
|
| (2.2) |
| (2.3) |
>
|
A := Matrix(1,3, (i,j) -> a[i,j]):
B := Matrix(3,1, (i,j) -> b[i,j]):
MatrixMatrixMultiply(A,B);
|
| (2.4) |
|
|