LinearAlgebra[Multiply] - 行列、ベクトルとスカラーの積の計算
使い方
Multiply(A, B, ip, outopt)
パラメータ
A - 行列、ベクトル、またはスカラー
B - 行列、ベクトル、またはスカラー
ip - (オプション) BooleanOpt(inplace); 出力が入力を上書きするかどうかを指定
outopts - (オプション) outputoptions=list の形をした等式; 結果として得られるオブジェクトのコンストラクタオプション
|
説明
|
|
•
|
Multiply(A, B) 関数は、積 A . B を計算します。返される結果の型は、A と B に依存しています。(プログラミングノート の下の表を参照)
|
•
|
inplace オプション (ip) は結果が返される場所を決めます。inplace=true が与えられれば、結果は最初の引数に上書きされます。 inplace=false が与えられるか、または呼び出し手順に含まれていないときは、結果は新しい行列(あるいはベクトル)として返されます。
|
|
第1引数がスカラーならば、計算は第2引数に対して行われます(可能ならば)。両方の引数がスカラーのときは、inplace と outputoptions パラメータは無視されます。
|
|
inplace=true という条件は、inplace と略記することができます。
|
|
inplace オプションは、注意して使わなければいけません。なぜなら、演算が失敗すれば元の行列(あるいはベクトル)の引数は改悪されてしまうからです。
|
•
|
outputoptions オプション (outopts) は、結果を作成する Matrix (あるいは Vector) コンストラクタに付加情報 (readonly, shape, storage, order, datatype, attributes) を与えます。
|
•
|
inplace と outputoptions オプションは両立しません。
|
•
|
この関数は LinearAlgebra パッケージの一部ですから、 with(LinearAlgebra) を実行した後にのみ Multiply(..) の形で使うことができます。ただし、長い形の名前 LinearAlgebra[Multiply](..) を使えばいつでもアクセスすることができます。
|
プログラミングノート
このルーチンは、 LinearAlgebra パッケージ内の対応するバイナリー乗法ルーチンを選ぶために A と B の型を用います。(LinearAlgebra パッケージによるプログラミング を参照してください。呼び出されたパラメータ型、対応する結果の型、呼び出される LinearAlgebra の乗法ルーチンを、次の表に示します。
B
A qXn 1Xn qX1
行列 行ベクトル 列ベクトル スカラー
mXq mXn 行列 エラー mX1 列ベクトル mXq 行列
行列 MatrixMatrixMultiply MatrixVectorMultiply MatrixScalarMultiply
1Xq 1Xn 行ベクトル エラー スカラー 1Xq ベクトル
行ベクトル VectorMatrixMultiply VectorScalarMultiply
mX1 エラー mXn 行列 (外積) エラー mX1 ベクトル
列ベクトル OuterProductMatrix VectorScalarMultiply
qXn 行列 1Xn 行ベクトル qX1 列ベクトル スカラー
スカラー MatrixScalarMultiply VectorScalarMultiply VectorScalarMultiply 標準的な積
|
* A か B のどちらかが識別できない型 (Matrix, Vector, scalar でない)のときは、エラーが返されます。
|
|
* 外積の場合、結果は OuterProduct の shape を持つ行列として作られるのではなく、フルな長方行列として生成されます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
A := <<n,0>|<0,n>>;
|
| (2.1) |
| (2.2) |
>
|
Multiply(A,-2,inplace);
|
| (2.3) |
| (2.4) |
| (2.5) |
| (2.6) |
| (2.7) |
| (2.8) |
| (2.9) |
|
|