我正在使用 Runge-Kutta 方法对非线性波 PDE 进行数值求解,并且我知道我正在寻找的解决方案在时间上是恒定的,但我不知道解决方案。验证我收敛到正确解决方案的好方法是什么?
附加信息:我知道这个解决方案是唯一稳定的解决方案
我正在使用 Runge-Kutta 方法对非线性波 PDE 进行数值求解,并且我知道我正在寻找的解决方案在时间上是恒定的,但我不知道解决方案。验证我收敛到正确解决方案的好方法是什么?
附加信息:我知道这个解决方案是唯一稳定的解决方案
当您将 PDE 从你得到一个 ODE. PDE 达到稳定状态时足够小,所以只需求解,直到 ODE 的右侧低于某个容差。
如果您从以下形式的 PDE 开始和在某个函数空间中取值,则稳态问题的解对应于在大多数情况下,包含非线性、微分算子、边界条件等,当离散化以形成一个 ODE 系统时,您可以使用 Runge-Kutta 或其他一些积分器。
除非你做了一些非常糟糕的事情,否则你的解决方案应该收敛到稳定的稳态解决方案,但这里是你可以检查的方法。如果你只是解决(在离散化设置中),您通常会使用牛顿法或一些变体。但是,这并不能保证解决方案的稳定性. 然而,牛顿方法有一个修改,它保证只收敛到系统的稳定解, 要么,取决于您在哪里阅读。
这种方法被称为伪瞬态延续(TC)。它的工作原理与另一个答案类似,因为它基本上运行时间积分器,直到解决方案更新处于某个低容差之下,但是这种方法将其与牛顿法相结合,一旦接近稳定的稳态解决方案,就会二次收敛。
以下是一些资源:
编辑:这相当于一种 Rosenbrock 积分器,用于其他答案的评论中提到的 Julia 工具中。