Using Mathematica for Quantum Mechanics:states and operators


0 动机

这是我的第一篇博客,没有获奖感言,锻炼下markdown使用以及测试下hexo-renderer-kramed渲染器的稳定性倒是有必要的。


‘The limits of my language mean the limits of my world.’ —— Ludwig Wittgenstein

量子力学数学语言和代码语言之间的关系是什么?

1 基矢的表示

1.1 算符和量子态的计算机语言

1.2 有限空间的处理方法

2 时不变薛定谔方程

数学语言为:

计算机语言为:

其向量形式为$H\cdot\vec{\psi}=E\vec{\boldsymbol{\psi}}$.

3 时变薛定谔方程

数学语言为:

解方程得到:
$|\psi(t)\rangle=\hat{\mathcal{U}}(t_0;t)|\psi(t_0)\rangle$, 其中$\hat{\mathcal{U}}(t_0;t)$为传播子,对其用Magnus expansion得到$\hat{\mathcal{U}}(t_0;t)=\exp\left[\sum_{k=1}^\infty\hat{\Omega}_k(t_0;t)\right]$.

3.1 假设基矢时不变,去解方程

假设$\hat{\mathcal{H}}(t)=\sum_{ij}H_{ij}(t) |i\rangle\langle j|$, $|\psi(t)\rangle=\sum\psi_i(t)\mid i\rangle$, 带入时变薛定谔方程,可以得到
计算机语言为:

其向量形式为$\mathrm{i}\hbar\dot{\vec{\boldsymbol{\psi}}}(t)=H(t)\cdot\vec{\boldsymbol{\psi}}(t)$.

3.2 假设基矢时变,去解方程(用于相互作用图景)

相互作用下哈密顿量为:$\hat{\mathcal{H}}(t)=\hat{\mathcal{H}}_0+\hat{\mathcal{H}}_1(t)$. 假设$\hat{\mathcal{H}}_0$可以对角化,即$\hat{\mathcal{H}}_0|i\rangle=E_i|i\rangle$, 则时变基矢表达式为:$|i(t)\rangle=e^{-\mathrm{i}E_it/\hbar}|i\rangle$, 于是可以将量子态用时变基展开:

将之带入时变薛定谔方程,可以得到
计算机语言为:

3.3 特殊情况: $\left[\hat{\mathcal{H}}(t),\hat{\mathcal{H}}(t’)\right]=0 \forall(t,t’)$

可以直接解出薛定谔方程,其
计算机语言为:

3.4 特殊情况: 哈密顿量是时不变的

可以直接解出薛定谔方程,其
计算机语言为:

phi:= = Flatten[KroneckerProduct[ phi1, phi2, phi3]]

4 基矢的计算机构造

4.1 多维系统的描述

多维量子态的数学描述如下:

计算机语言为:

U[t_?NumericQ] := MatrixExp[-I*H*N[∆t]/~]

多维算符的数学描述如下:

计算机语言为:

A = KroneckerProduct[a1, a2, a3]

我们经常考察作用在某一成员空间的算符,这种算符的
计算机语言(假设为三体系统)为
H1 = KroneckerProduct[h1,
                    IdentityMatrix[Dimensions[h2]],
                    IdentityMatrix[Dimensions[h3]]];
H2 = KroneckerProduct[IdentityMatrix[Dimensions[h1]],
                    h2,
                    IdentityMatrix[Dimensions[h3]]];
H3 = KroneckerProduct[IdentityMatrix[Dimensions[h1]],
                    IdentityMatrix[Dimensions[h2]],
                    h3];

4.2 偏迹的描述

数学描述如下,假如有一个三体系统:

其中$\rho$是个6维张量。对B求偏迹的数学公式为:

可见这是对6维张量在2&5维上的压缩操作。
所以用计算机语言去表示偏迹,可以先把$\hat{\rho}_{\mathrm{ABC}}$重塑成6维张量:

R = ArrayReshape[ρABC, {dA,dB,dC,dA,dB,dC}]

然后在2&5维上进行压缩操作:
S = TensorContract[R, {2,5}]

最后再还原成密度矩阵形式(2维张量):
ρAC = Flatten[S, {{1,2}, {3,4}}]


文章作者: Caeser Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Caeser Wang !
  目录