使用位置和动量算子在 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 你切断矩阵的地方)。