我有以下问题:
我必须使用 ode-solver 来求解化学反应方程。速率常数是时间的函数,可以突然变化(放电脉冲)。
解决这个问题的一种方法是保持步长非常小hmax < dt
。这导致高补偿。afort -> 耗时。我的问题是:有没有一种有效的方法来完成这项工作?我想过要def hmax(puls_ON)
与plus_ON=True
脉搏plus_ON=False
之间。然而,由于 dt 随时间增加,它甚至可能无法识别脉冲,因为时间间隔在增加 hmax=hmax(t)。
时间网格将是我瘦身的最佳选择,但我认为 odeint 不可能做到这一点?
或者是否有可能以某种方式强制求解器在特定时间点进行积分(例如 t0 ->(hmax=False)->tpuls_1_start->(hmax=dt)->tpuls_1_end->(hmax=False)->puls_2_start ......)?
谢谢