形式陈述
怎样把连续链式法则变成一步就能核验的精确能量恒等式?对连续可微的 H (即 H ∈ C 1 ),离散梯度是连续的两点函数 ∇ ― H ( x , y ) ,满足
H ( y ) − H ( x ) = ∇ ― H ( x , y ) T ( y − x ) , ∇ ― H ( x , x ) = ∇ H ( x ) . 对Hamilton 系统 公理库 Hamilton 系统 Hamiltonian system · Hamilton 系统 由 Hamiltonian 的梯度经标准辛矩阵生成相空间流的常微分方程系统。 z ˙ = J ∇ H ( z ) ,J T = − J ,构造隐式一步时间更新 公理库 常微分方程时间步进框架 Time-stepping method for ODE · ODE integrator · Numerical time integration 将常微分方程初值问题离散为时间网格上的数值状态与一步或多步更新,并分离流映射、误差层和退出状态。
z n + 1 − z n h = J ∇ ― H ( z n , z n + 1 ) . 将右式代入两点恒等式,得到 H ( z n + 1 ) − H ( z n ) = h ∇ ― H T J ∇ ― H = 0 。这个保能量证明只用反对称性;数值求解必须达到足够精度才能实现相应的实际能量残差。
当连接两点的线段处于 H 的可微定义域内时,一种对称离散梯度是线段平均
∇ ― H ( x , y ) = ∫ 0 1 ∇ H ( ( 1 − s ) x + s y ) d s . 沿线段使用微积分基本定理 公理库 微积分基本定理 Fundamental theorem of calculus 积分与求导在适当连续性条件下互为逆过程。 即可验证两点恒等式。若积分改为一般数值求积,则应重新检查能量等式的精确程度。
直觉
普通梯度只描述一点附近的线性变化;离散梯度要求从旧点到新点的整个能量差被一次内积准确表示。反对称矩阵使运动方向与这个离散梯度正交,于是新点被限制在同一能量水平集上。
这项构造针对能量。它通常不同时满足一般辛映射的 Jacobian 恒等式,也未自动规定高阶精度。在足够光滑、选定可解的局部步映射并有稳定误差传播时,对称一致的选择可给二阶方法,非对称选择可能只有一阶;仅有前面的连续两点恒等式不自动给出这些阶数。
例子与边界
四次势能的完整一步
取 H ( q , p ) = p 2 / 2 + q 4 / 4 。分量离散梯度可取
∇ ― H = ( Q 3 + Q 2 q + Q q 2 + q 3 4 , P + p 2 ) . 它使用 Q 4 − q 4 = ( Q − q ) ( Q 3 + Q 2 q + Q q 2 + q 3 ) ,所以端点重合时也有连续定义。
从 ( q , p ) = ( 1 , 0 ) 取 h = 1 ,更新方程为 Q − 1 = P / 2 与 P = − ( Q 3 + Q 2 + Q + 1 ) / 4 。消去 P 得到
Q 3 + Q 2 + 9 Q − 7 = 0. 其导数 3 Q 2 + 2 Q + 9 恒正,故实根唯一。求得 Q ≈ 0.6887624213 、P ≈ − 0.6224751573 ,代入能量得到 P 2 / 2 + Q 4 / 4 ≈ 0.25 ,与初值一致。
这个例子也能直接检查不保辛。把势能的离散导数记为 g ( q , Q ) = ( Q 3 + Q 2 q + Q q 2 + q 3 ) / 4 ;对两条更新方程隐式求导,可得
det D Φ h ( q , p ) = 1 + ( h 2 / 2 ) ∂ q g 1 + ( h 2 / 2 ) ∂ Q g , ∂ q g − ∂ Q g = q 2 − Q 2 2 . 本步 q = h = 1 且 0 < Q < 1 ,分母为正,所以行列式严格大于一,面积并未保持。反过来,同样初值和步长下的辛 Euler 公理库 辛 Euler 方法 Symplectic Euler method 以更新后的动量推动位置,构造一阶辛方法,并在谐振子上精确计算稳定区和离散不变量。 给出 ( Q , P ) = ( 0 , − 1 ) ,保辛却把原能量从 1 / 4 变成 1 / 2 。两种方法分别保留的结构在同一个非二次例子中清楚不同。
换成中点梯度会发生什么
对四次势能,普通中点梯度的 q 分量是 ( ( Q + q ) / 2 ) 3 ,一般不等于上述差商。例如 q = 1 , Q = 0 ,前者为 1 / 8 ,后者为 1 / 4 。因此把普通中点梯度直接当离散梯度,会破坏两点能量恒等式;二次 Hamiltonian 才有相应特殊相等性。
推论与应用
每步需解隐式方程。实际成本由维数、离散梯度求值和非线性迭代次数决定;在每轮检查方程残差,并在接受一步后检查能量差。若把残差明确定义为 r = ( z n + 1 − z n ) / h − J ∇ ― H ,则能量缺陷恰为 h ∇ ― H T r ;若采用未除以 h 的残差,公式中的因子也要相应改变。这样才能设置有量纲的容差。
保能量并不固定沿能量曲线的运动速度。可同时比较轨迹相位、其他不变量和长期统计行为,选择最符合问题目的的结构保持方式。
参考资料