在计算简单的一维反应扩散方程的解时,我做了一个奇怪的观察:
b的初始值是一个常数(),我只对从到1的积分感兴趣()。的目的和式只是评估这个积分。
我使用了Strang分裂方案进行扩散和反应之间的偶联(半步反应,然后进行全步扩散,然后再次进行半步反应),对扩散进行了Crank Nicholson方案,并对反应进行了分析(包括等式)。
因为分析溶液的一个步骤比Crank Nicholson方案的一个步骤慢3倍以上,所以我尝试为每个反应步骤制造一个以上的Crank Nicholson步骤。我希望能以更少的Strang拆分方案来解决问题,以便总体上更快。
但是,可以观察到相反的效果,即如果使用了多于一个的Crank Nicholson步骤,则需要更多的Strang拆分方案步骤。(我只关心整体上的准确性,这似乎收敛速度比本身)。想了一段时间后,我注意到,同样的效果也发生了,我什至理解为什么会出现这种情况。关键是,如果我精确地执行了一个Crank Nicholson步骤,那么整个方案将变成梯形规则(如果)。
因此,如果我将视为扩散步骤的一部分,那么增加Crank Nicholson步骤的数量(可能)不会导致整体准确性降低(如观察到的那样)。但这似乎违反了为系统的(非线性和可能非常刚性的)反应部分使用解析解决方案的目的。
所以这是我的问题:在Strang分裂的情况下,有没有更好的方法来处理,而不是将其视为反应步骤的一部分或作为扩散步骤的一部分。我想避免被“强制”使用恰好一个Crank Nicholson步骤进行扩散。(例如,在3D中,我宁愿通过FFT而不是使用Crank Nicholson来解析解析扩散。当然,我也可以将FFT与Crank Nicholson结合使用,所以没什么大不了的。)