我使用scipy.integrate.odeint
来解决空间和时间维度上的ODE(扩散方程)。我通过有限差异来表达空间导数,所以整个问题都是时间问题。`scipy.integrate.odeint`自动调整时间步骤
解算器的工作原理似乎是自动调整时间间隔和总次数(而步数保持不变)。当我将结果与不调整时间间隔的简单FCTS方案进行比较时,它总是看起来不同。
我意识到实际的时间步骤odeint
使用是通过infodict['tcur']
返回。这是否意味着我总是不得不根据这些时间绘制结果解决方案?为什么SciPy文档中的解释不同? (在该例子中它们暗算参数t
,即初始倍我传递给odeint
。)
编辑:
最终,这是在我的代码中的错误。我将时间步骤的索引传递给odeint
例程,而不是时间步骤本身。无论如何,感谢您的解释。
感谢您的回答。这听起来很合理。然而,我对它进行了多次检查,甚至给出了一个简单的扩散问题,与FTCS不同的结果,还有Crank-Nicolson方案。我还将采样时间步长改为较低值,但odeint不断给我提供了一个不同的结果,我可以通过在FTCS/CN方案中增加时间步长来重现这一结果。这是相当混乱的... – Guiste
问题解决了(请参阅我上面的编辑) – Guiste