强制 ODE 求解器保持规范

计算科学 稳定 scipy 量子力学
2021-11-26 09:50:43

我有一个形式的 ODE

dydt=iHy.

在哪里y是一个复向量并且H是时间相关的 Hermitian 矩阵。

解决方案的规范y(t)在任何时间点都应该是 1,但由于小数值误差的累积,它最终会大大偏离。

库使用的此问题的解决方案是qutip通过规范化每隔一段时间重置 ode 求解器y有些时候t并从那时起恢复。是否有严格的解释为什么这是一个好主意(它似乎在实践中有效)?

有没有更好的办法?如果不需要修改求解器代码会更好吗?

1个回答

最好的方法是使用保证保持初始条件范数的 ODE 求解器,即yn=y0对于所有这样的求解器存在,并且被称为几何积分器,因为它们保留了精确解的几何特性(在这种情况下,能量是守恒的,即) . (一个特殊的类别是哈密​​顿力学中 ODE 系统的辛积分器。)nNddty(t)=0

最简单的这种积分器(并非特定于哈密顿系统)实际上是一种非常标准的方法,分别称为梯形法、隐式中点法或Crank-Nicolson方法。在你的情况下,它相当于在每一步求解线性系统 其中是单位矩阵,是当前时间步长。这种方法是隐式的,但二阶准确且 A 稳定。(我认为没有一阶几何积分器。)我不知道它是否包含在 ODEPACK 中(scipy 的基础

(I+ihn2H(tn+1))yn+1=(Iihn2H(tn))yn,
Ihn=tn+1tnodeint例程),但自己实现应该不会太难。

如果您想了解有关几何积分的更多信息: