2017-08-05 2 views
2

次のコード例は、複素数を持つ2つのベクトルの内積を実行します。複素数を有するドット積

import sympy as sp 
from sympy import I 
sp.init_printing() 

b1 = sp.Rational(1, 2) * sp.Matrix([I, 1, 0, -I, 1]) 
v2 = sp.Matrix([2 * I, 1 + I, 0, 1 - I, 2 * I]) 

print(sp.simplify(v2.dot(b1))) 
print(sp.simplify(sp.conjugate(v2.T) @ b1)[0]) 

出力は次のとおり

-1 + I 
2 - 2*I 

明らかドット方法は最初の引数を結合しません。しかし、私は2番目の回避策が嫌いです。 2つのベクトルの内積を計算するきれいな方法は何ですか?

答えて

2

内積最初のベクトル抱合:

v1.H.dot(v2) 

が第二のコンジュゲートを:

v1.dot(v2.H) 

は、一部の人々はかつて、いくつかの後者をしたいです。 SymPyはこの問題について立場を取っていない。あなたの例では

print(sp.simplify(v2.H.dot(b1))) 

Hはエルミート共役を表します。

関連する問題