我是 Python 初学者。我正在尝试切换我在 matlab 中的一些程序。我需要求解一个僵硬的 ode 方程,其输入都是矩阵。在matlab中我使用
[ttT,uT] = ode23s('SST',t,fT);
对于您在 Matlab 中所做的大多数事情,您可以使用 Python 中的 NumPy 模块来完成它们。可以在这里找到。
您可能还会发现相关模块SciPy也很有用。
PyDSTool也可能与您相关。它是 Radau 求解器的包装器。
那么您可能想尝试使用matplotlib进行绘图。它的工作原理很像 Matlab 的绘图。
以下链接也可能有所帮助:
如果您向我展示微分方程,我可以为您提供更多帮助,但总的来说,解决僵硬 ODE 系统的一个好方法是通过下一句话:
solution = scipy.integrate.solve_ivp(function, [t_0, t_f], y0, method='BDF', first_step =0.0001, dense_output=True)
您的函数必须以这种方式预先定义:function(t,variable,parameters)
t_0 = initial value for time
t_f = final value for time
y0 = value of your variables at t_0
对于刚性 ODE 系统,我建议使用“BDF”方法(通常用于求解反应器中的微动力学系统,其中时间的重要性可能会发生很大变化)
有关代码选项的更多信息:https ://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html