之前相关的几篇:
张量积是不满足交换律的,但交换顺序后描述的仍然是同一个物理体系。这里通过数值的方式,观察泡利矩阵张量积的顺序对本征值的影响。
代码如下(调用开源项目Guan:https://py.guanjihuan.com):
"""
This code is supported by the website: https://www.guanjihuan.com
The newest version of this code is on the web page: https://www.guanjihuan.com/archives/12731
"""
import numpy as np
import guan
a_00 = np.random.uniform(-1, 1)
a_0x = np.random.uniform(-1, 1)
a_0y = np.random.uniform(-1, 1)
a_0z = np.random.uniform(-1, 1)
a_x0 = np.random.uniform(-1, 1)
a_xx = np.random.uniform(-1, 1)
a_xy = np.random.uniform(-1, 1)
a_xz = np.random.uniform(-1, 1)
a_y0 = np.random.uniform(-1, 1)
a_yx = np.random.uniform(-1, 1)
a_yy = np.random.uniform(-1, 1)
a_yz = np.random.uniform(-1, 1)
a_z0 = np.random.uniform(-1, 1)
a_zx = np.random.uniform(-1, 1)
a_zy = np.random.uniform(-1, 1)
a_zz = np.random.uniform(-1, 1)
hamiltonian_1 = \
a_00*guan.sigma_00()+a_0x*guan.sigma_0x()+a_0y*guan.sigma_0y()+a_0z*guan.sigma_0z()+ \
a_x0*guan.sigma_x0()+a_xx*guan.sigma_xx()+a_xy*guan.sigma_xy()+a_xz*guan.sigma_xz()+ \
a_y0*guan.sigma_y0()+a_yx*guan.sigma_yx()+a_yy*guan.sigma_yy()+a_yz*guan.sigma_yz()+ \
a_z0*guan.sigma_z0()+a_zx*guan.sigma_zx()+a_zy*guan.sigma_zy()+a_zz*guan.sigma_zz()
eigenvalue_1 = guan.calculate_eigenvalue(hamiltonian_1)
hamiltonian_2 = \
a_00*guan.sigma_00()+a_0x*guan.sigma_x0()+a_0y*guan.sigma_y0()+a_0z*guan.sigma_z0()+ \
a_x0*guan.sigma_0x()+a_xx*guan.sigma_xx()+a_xy*guan.sigma_yx()+a_xz*guan.sigma_zx()+ \
a_y0*guan.sigma_0y()+a_yx*guan.sigma_xy()+a_yy*guan.sigma_yy()+a_yz*guan.sigma_zy()+ \
a_z0*guan.sigma_0z()+a_zx*guan.sigma_xz()+a_zy*guan.sigma_yz()+a_zz*guan.sigma_zz()
eigenvalue_2 = guan.calculate_eigenvalue(hamiltonian_2)
print()
print('Eigenvalue:')
print(eigenvalue_1)
print(eigenvalue_2)
print()
print('Difference of matrices:')
print(hamiltonian_1-hamiltonian_2)
print()
# print(hamiltonian_1)
# print(hamiltonian_2)
运算结果:
数值结论:矩阵形式不同,本征值相同。
物理意义:说明不管哪个自由度作为张量积嵌套的“大空间”,都不影响结果。即使哈密顿量形式不一样,但物理上是等价的。
本篇匿名网友的评论:其实把哈密顿量中的Pauli矩阵的直积顺序改变一下,也就是更改了一下构建哈密顿量基矢时候的顺序,比如改变前是(orbit-a-spin-up,orbit-b-spin-up,orbit-a-spin-down,orbit-b-spin-down)改变成(orbit-a-spin-up,orbit-a-spin-down,orbit-b-spin-up,orbit-b-spin-down); spin\otimes orbit —–> orbit\otimes spin
测试2:如果只是改变一个顺序,例如仅仅把guan.sigma_0x()改成guan.sigma_x0(),代码如下:
"""
This code is supported by the website: https://www.guanjihuan.com
The newest version of this code is on the web page: https://www.guanjihuan.com/archives/12731
"""
import numpy as np
import guan
a_00 = np.random.uniform(-1, 1)
a_0x = np.random.uniform(-1, 1)
a_0y = np.random.uniform(-1, 1)
a_0z = np.random.uniform(-1, 1)
a_x0 = np.random.uniform(-1, 1)
a_xx = np.random.uniform(-1, 1)
a_xy = np.random.uniform(-1, 1)
a_xz = np.random.uniform(-1, 1)
a_y0 = np.random.uniform(-1, 1)
a_yx = np.random.uniform(-1, 1)
a_yy = np.random.uniform(-1, 1)
a_yz = np.random.uniform(-1, 1)
a_z0 = np.random.uniform(-1, 1)
a_zx = np.random.uniform(-1, 1)
a_zy = np.random.uniform(-1, 1)
a_zz = np.random.uniform(-1, 1)
hamiltonian_1 = \
a_00*guan.sigma_00()+a_0x*guan.sigma_0x()+a_0y*guan.sigma_0y()+a_0z*guan.sigma_0z()+ \
a_x0*guan.sigma_x0()+a_xx*guan.sigma_xx()+a_xy*guan.sigma_xy()+a_xz*guan.sigma_xz()+ \
a_y0*guan.sigma_y0()+a_yx*guan.sigma_yx()+a_yy*guan.sigma_yy()+a_yz*guan.sigma_yz()+ \
a_z0*guan.sigma_z0()+a_zx*guan.sigma_zx()+a_zy*guan.sigma_zy()+a_zz*guan.sigma_zz()
eigenvalue_1 = guan.calculate_eigenvalue(hamiltonian_1)
# only guan.sigma_0x() is changed to guan.sigma_x0()
hamiltonian_3 = \
a_00*guan.sigma_00()+a_0x*guan.sigma_x0()+a_0y*guan.sigma_0y()+a_0z*guan.sigma_0z()+ \
a_x0*guan.sigma_x0()+a_xx*guan.sigma_xx()+a_xy*guan.sigma_xy()+a_xz*guan.sigma_xz()+ \
a_y0*guan.sigma_y0()+a_yx*guan.sigma_yx()+a_yy*guan.sigma_yy()+a_yz*guan.sigma_yz()+ \
a_z0*guan.sigma_z0()+a_zx*guan.sigma_zx()+a_zy*guan.sigma_zy()+a_zz*guan.sigma_zz()
eigenvalue_3 = guan.calculate_eigenvalue(hamiltonian_3)
print()
print('Eigenvalue:')
print(eigenvalue_1)
print(eigenvalue_3)
print()
运算结果:
结论:本征值结果不一致。
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】
其实把哈密顿量中的Pauli矩阵的直积顺序改变一下, 也就是更改了一下构建哈密顿量基矢时候的顺序,比如改变前是(orbit-a-spin-up,orbit-b-spin-up,orbit-a-spin-down,orbit-b-spin-down)改变成(orbit-a-spin-up,orbit-a-spin-down,orbit-b-spin-up,orbit-b-spin-down); spin\otimes orbit -----> orbit\otimes spin
是这个意思。感谢!