我考虑常波动方程
utt−uxx=0
有初始条件
u(x,0)=exp(−2x2)ut(x,0)=0
为了解决这个问题,我近似uxx用 4 阶差分格式,用辛 4 阶方法求时间演化。
我使用以下参数:
xmin=−500xmax=500dx=0.5dt=0.1
问题是,例如,在这一点x=0该算法非常适用于t<1000(注意这个值等于xmax−xmin=2xmax但后来进化看起来很奇怪。这是一张照片。

我试图手动修复边界值(在每一步设置u(xmin,t)=u(xmax,t)=0, ut(xmin,t)=ut(xmax,t)=0) 并且还尝试使用“指数抑制”来避免来自边界的辐射。这uxx有限差分近似仅用于距离边界超过 2 步的点,以避免出现问题。
似乎问题在于边界的存在,因为这种辛算法适用于任何时间值的谐振子(没有边界)。
UPD:我用于偏导数的模板:
uxx(x)=−u(x−2)+16u(x−1)−30u(x)+16u(x+1)−u(x+2)12(dx)2