波动方程模拟的发散

计算科学 pde 有限差分 Python 龙格库塔 波传播
2021-12-22 10:24:18

我目前正在开发自己的 PDE 求解器,用于 python 中的非线性模拟。我已经成功地对 KdV 和 Fisher 方程进行了模拟,但现在我正在及时使用二阶导数。

我使用的方程是一维波动方程,其中为简单起见,我使用并通过定义辅助字段来求解,所以方程看起来像Δx=0.5Δt=0.01c=1v(x,t)

tu=v(x,t);tv=c2xxu

目前我正在使用我自己的 RK4 积分器来计算时间和空间的有限差异,直到我的问题是,随着时间的流逝,随着解决方案似乎会增长,直到它在数值上发散。我尝试使用高斯初始条件,例如并且这些解决方案似乎辐射出不属于这些情况的解析解的波。O(h2)u(x,0)=sin(αx)tu(x,0)=0u(x,0)=exp(βx2)tu(x,0)=0u(x,0)=0tu(x,0)=exp(γx2)

高斯情况的边界条件不是固定的,我只是尝试了这些初始条件以找出发生了什么。

有人面临同样的问题吗?可能是有限差分的顺序吗?我对模拟很陌生,所以任何事情都会有帮助:)

以下是上面提到的情况的图表,分别。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

0个回答
没有发现任何回复~