4

我是 Python 初学者。我正在尝试切换我在 matlab 中的一些程序。我需要求解一个僵硬的 ode 方程,其输入都是矩阵。在matlab中我使用

[ttT,uT] = ode23s('SST',t,fT);
4

2 回答 2

3

对于您在 Matlab 中所做的大多数事情,您可以使用 Python 中的 NumPy 模块来完成它们。可以在这里找到。

您可能还会发现相关模块SciPy也很有用。

PyDSTool也可能与您相关。它是 Radau 求解器的包装器。

那么您可能想尝试使用matplotlib进行绘图。它的工作原理很像 Matlab 的绘图。

以下链接也可能有所帮助:

于 2012-01-05T10:42:07.767 回答
0

如果您向我展示微分方程,我可以为您提供更多帮助,但总的来说,解决僵硬 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

于 2020-10-30T14:44:43.760 回答