我正在尝试解决 2D 中的 CDR 方程:
边界条件(正方形的长度为):
.
1.) 为什么这个方程是僵硬的?它是否取决于反应项?
2.) 我可以用 Crank-Nicholson 方法求解方程吗?误差很大吗?如果是,最好的方法是什么?
我正在尝试解决 2D 中的 CDR 方程:
1.) 为什么这个方程是僵硬的?它是否取决于反应项?
2.) 我可以用 Crank-Nicholson 方法求解方程吗?误差很大吗?如果是,最好的方法是什么?
从数学上讲,刚度对于单个微分方程没有意义,而是归因于一组具有不同时间尺度的微分方程(例如,当试图求解两个时间尺度分别为 1 秒和 1 天的耦合方程时) . 但是,如果某些数值积分方法在数值上不稳定,则单个方程也可以称为刚性方程。源/汇项可以引起刚度,例如: 是一个很好的例子,其中汇项引起了刚度。话虽如此,可能会导致您的 PDE 出现刚度。
理论上,您可以使用 Crank-Nicolson 方法求解任何与时间相关的 PDE。但是,在求解刚性方程时应该使用自适应时间步长,否则计算成本会很大。朴素的 Crank-Nicolson 公式基于固定时间步长,但是,您可以使用自适应时间步长推导出您的自定义版本。但是,我不推荐,因为它很麻烦。在我看来,你最好的选择是使用线条法。您可以在此处找到有关此方法的有用信息. 给你一个粗略的想法,在线条的方法中,你将你的 PDE 离散化为空间变量(而不是时间)。这最终会为您提供一组关于时间的一阶 ODE(常微分方程)。现在您可以简单地使用刚性 ODE 求解器(例如 Adam 的 Bashforth 方法)来集成 ODE 集。