使用位置和动量算子在 Matlab 中构造哈密顿量
Constructing Hamiltonian in Matlab using position and momentum operator
我正在尝试构建位置和动量算子,以便在 MATLAB 中计算谐振子的哈密顿量,但我不确定我这样做的方式是否正确。
对于阶梯运算符,我有这个代码:
D=25;
Np=D+1;
n=1:D;
a=diag(sqrt(1:D),1);
ad=a';
然后,动量和位置算子由下式给出:
其中,我在代码中是这样做的:
hbar = 1;
m=0.1;
omega = 1;
p = -1i*sqrt((hbar*m*omega)/2)*(a-ad);
x = sqrt(hbar/(2*m*omega))*(a+ad);
有两种构造哈密顿量的方法
在代码中,我将哈密顿量构造为:
H = p^2/(2*m)+(1/2)*m*omega*x^2
H1 = hbar*omega*(ad*a + 1/2)
但是我得到了哈密顿量的两个不同值。这是构造动量和位置算子以及哈密顿量的正确方法吗?
在Matlab中,(ad*a + 1/2)
表示ad*a
加上1/2*ones(size(ad*a))
,即1/2*ones(D+1,D+1)
。您可能想要 (ad*a + 1/2*eye(D+1))
,仅在对角线上添加 1/2
。然后这两种形式将匹配(除了最后的 row/column 你切断矩阵的地方)。
我正在尝试构建位置和动量算子,以便在 MATLAB 中计算谐振子的哈密顿量,但我不确定我这样做的方式是否正确。
对于阶梯运算符,我有这个代码:
D=25;
Np=D+1;
n=1:D;
a=diag(sqrt(1:D),1);
ad=a';
然后,动量和位置算子由下式给出:
其中,我在代码中是这样做的:
hbar = 1;
m=0.1;
omega = 1;
p = -1i*sqrt((hbar*m*omega)/2)*(a-ad);
x = sqrt(hbar/(2*m*omega))*(a+ad);
有两种构造哈密顿量的方法
在代码中,我将哈密顿量构造为:
H = p^2/(2*m)+(1/2)*m*omega*x^2
H1 = hbar*omega*(ad*a + 1/2)
但是我得到了哈密顿量的两个不同值。这是构造动量和位置算子以及哈密顿量的正确方法吗?
在Matlab中,(ad*a + 1/2)
表示ad*a
加上1/2*ones(size(ad*a))
,即1/2*ones(D+1,D+1)
。您可能想要 (ad*a + 1/2*eye(D+1))
,仅在对角线上添加 1/2
。然后这两种形式将匹配(除了最后的 row/column 你切断矩阵的地方)。