【发布时间】:2018-09-17 21:27:21
【问题描述】:
我正在尝试将矩阵乘以我定义如下的常量:
E1 = "E1"
E2 = "E2"
J = "J"
但是,当我尝试将它们乘以下面定义的矩阵时,我最终会遇到错误:
# Defining the sigma functions and Identity matrices:
sigx = np.array([[0,1],[1,0]])
sigy = np.array([[0,-1j],[1j,0]])
sigz = np.array([[1,0],[0,-1]])
I1 = np.array([[1,0],[0,1]])
I2 = I1
# Trying to structure a Hamiltonian
H1 = np.kron(((E1)*(sigz)),I2)
H2 = np.kron((E2*(I1)),(sigz))
H3 = J*((np.kron((sigx),(sigx)))+(np.kron((sigy),(sigy))))
print(H1)
print(H2)
print(H3)
# Overall Hamiltonian Matrix
Hs = H1 + H2 + H3
print(Hs)
如果我没有如上所示预先定义 E1、E2 或 J,则该脚本有效,但它仅有效,因为 python 自动为它们分配了 1、2、3 的值。如何才能让 E1、E2 和 J 出现在矩阵运算输出中?
【问题讨论】:
-
Numpy 无法进行符号数学运算,这看起来就像您正在尝试做的那样。如果您尝试做一些需要符号数学的事情,您可以使用 sympy 代替。否则,如果您知道
J的值是数字,则应将变量J设置为该值而不是字符串。 -
这个计算到底应该完成什么(即,一旦你定义了汉密尔顿,你想用它做什么)?
-
好的,我会尝试用 sympy 重写它。该库是否具有与 kron 之类的 numpy 相同的包?
-
我正在尝试获取哈密顿量,从那里我可以得到特征值和特征向量
-
您想要 E1、E2 和 J 的特定值的特征值和特征态,或者您想要根据这些变量的哈密顿特征值和特征态的符号表达式?
标签: arrays string python-3.x numpy matrix