传播薛定谔方程

计算科学 算法 量子力学
2021-12-16 13:15:42

我的任务是模拟量子进化。为此,我需要执行此操作

w=eitHv

在哪里H是一个稀疏矩阵并且v是初始列向量。我想知道是否有办法计算矢量w不评估 MatrixExp?我的意思是:如果t真的很小(时间步长)是否有某种仅使用矩阵向量乘法的算法(稳定且准确)?

例如:

w(t)=(eitnH)nvtn=dt
算法会是这样的:
w(0)=vw(dt)=eidtHw(0)w(2dt)=eidtHw(dt)

我不知道,更换

eidtH1idtH

一件事应该保持不变:向量的范数||w(t)||=1

3个回答

除了 Godric Seer 的建议,您还可以对指数使用有理逼近,例如

ez=1+z/21z/2+O(z3),

为矩阵指数设计更准确的近似值:

eitH(I+itH)1(IitH).

这种近似具有作为酉算子的优点,因此在精确算术中w remains unchanged. Of course you have to watch out in floating point arithmetic if the condition number of H is very large.

The paper 19 Dubious Ways to Compute the Exponential of a Matrix is worth a read, and if you want to dig deeper, Saad's book is both very readable and very comprehensive.

By definition

eidtH=k=01k!(idtH)k

which is easily approximated by truncating the sum after a number of terms. Ideally you would want to use only two terms so that

eidtH1+idtH

What that means is that 12(idtH)2 must have a small effect on the solution. Assuming H has eigenvalues λi, then you need dt2λi2<<1 for every eigenvalue. As long as you choose a small enough dt that this is true, you can avoid the matrix exponential with only the first two terms of the sum.

Is H time-dependent? If not, can not you just diagonalize H, and then express your initial vector "v" as a linear combination of the eigenvectors of H, and then propagate those?

If H is time-dependent, another technique (in addition to those already mentioned) would be to use a split operator technique like the Trotter decomposition.