在某种意义上,@Geoff Oxberry 说二次不变量的稳定性和保存没有直接关系是正确的。例如,存在可以为您的问题保留能量的显式方法(它们肯定不是稳定的)。A
然而,在另一种意义上,两者之间存在某种关系。
体贴入微
首先,请注意,您所描述的问题不是很好,并且您给出的不变量不符合问题描述。我相信你应该有
u¨+u=0
有初始条件
u(0)=u0
和
其中。那么问题是适定的,并且您编写的不变条件如下。u˙(0)=v0
u20+v20=1
能量守恒
现在,如果你将这个二阶方程重写为一阶系统
(u˙v˙)=(0−110)(uv),
你发现特征值是。如果我们将上面的系统写为,则精确解由
给出
,你有能量守恒的原因是对于的两个特征值。±iw˙=Aw
w(t)=exp(At)w(0)
|eλt|=1A
离散守恒
用一步法离散化后,您将得到一个形式为
wn+1=R(ΔtA)wn,
其中是数值时间步长,是方法的稳定性函数(通常是多项式或有理函数)。由于是正常的,因此要进行离散守恒,您需要. ΔtR(z)A
|R(±iΔt)|=1.
连接
解释刚刚陈述的条件的一种方法是说ODE 系统的特征值,按数值时间步长缩放,必须位于数值积分器的绝对稳定区域的边界上。这是因为稳定区域被精确地定义为复数的集合,其中。z|R(z)|≤1
因此,只要有正确的时间步长,即使是四阶龙格-库塔方法也可以用来保存这个问题的能量,因为它的稳定区域边界与虚轴相交。当然没有人推荐这个,因为它只适用于的一个特殊值。Δt
梯形法则对任何时间步都保持能量守恒,因为它的绝对稳定区域正好是左半平面;都满足上述条件。Δt
同时,前向或后向欧拉方法不可能保存能量,因为这些方法有一个稳定区域,其边界仅与原点处的假想轴接触。