我是 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