LinearAlgebra[DotProduct] - 2 つのベクトルのドット積(標準的な内積)の計算
LinearAlgebra[BilinearForm] - 行列に関する 2 つのベクトルの一般的な双1次形式の計算
使い方
DotProduct(U, V, c)
BilinearForm(U, V, A, c)
パラメータ
U, V - ベクトル
A - (オプション) 行列; 双 1 次形式を定義
c - (オプション) BooleanOpt(conjugate); エルミート変換を用いるかを指定
|
説明
|
|
•
|
DotProduct(U, V) 関数はベクトル U と V のドット積を計算します。
|
|
W := DotProduct(U, V) ならば、W は次の公式を用いて計算されたスカラーです。
|
|
add( F(U[i]) * G(V[i]), i = 1..Dimension(U))
|
|
U が列ベクトルなら F(z) = conjugate(z)、そうでなければ F(z) = z で、
|
|
(V でなく) U が行ベクトルなら G(z) = conjugate(z)、そうでなければ G(z) = z です。
|
•
|
BilinearForm(U, V, A) 関数は、 形式を定めるために行列 A を用いる DotProduct(U, V) 関数の一般化、すなわち U, A, V の3つの積です。
|
|
パラメータ A は、 呼び出し手順の BilinearForm に対するパラメータです。A が省略されれば、そのデフォルト値は単位行列で、双 1 次形式は単にドット積となります。
|
|
U, V, A の次元は、積が構成できるものでなければなりません。特に、A が双 1 次形式に対する呼び出し手順の中に含まれてないなら U と V は同じ次元を持たなければなりません。
|
|
下の表でベクトルの方向付けと conjugate オプションが有無に応じて決められるベクトルと行列の組に対して双 1 次形式を定義します。表中の星印はエルミート (共役) 転置を表し、アポストロフィは転置を表します。
|
c が conjugate または conjugate=true のとき、
U の方向 V の方向 結果
列 列 U* A V
行 列 U A conjugate(V)
行 行 U A* V*
列 行 U* A* V'
c が conjugate=false のとき、
U の方向 V の方向 結果
列 列 U** A V
行 列 U A V
行 行 U A' V'
列 行 U' A' V'
|
注意: 上の表中で与えられる規則は、A が (対称 または エルミート) 正定値行列で、U = V かつ conjugate オプションがベクトルと行列のデータ型と矛盾していない (すなわち、それらが複素数上で定義されていれば true 、実数上で定義されていれば false) ならば、結果は非負の実数値スカラーとなることを保証するように設計されています。特に、A が単位行列ならば、結果は U の 2-ノルム の平方です。
|
•
|
この関数は LinearAlgebra パッケージの一部ですから、with(LinearAlgebra) を実行した後にのみ DotProduct(..) の形で使うことができます。ただし、長い形の名前 LinearAlgebra[DotProduct](..) を使えばいつでもアクセスすることができます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
V1 := <x,y,1,2>;
|
| (2.1) |
| (2.2) |
| (2.3) |
>
|
BilinearForm(V1, V2, conjugate=false);
|
| (2.4) |
>
|
A := <<1,5,w>|<2,6,x>|<3,7,y>|<4,8,z>>;
|
| (2.5) |
| (2.6) |
>
|
BilinearForm(V1, V3, A);
|
| (2.7) |
|
|