求解firstorder ODE,其中包含另一个ODE(Python中的odeint/solve_ivp)

2024-05-29 03:01:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中为一个微分问题设置一个快速数值求解器:

Equations shown clearly as an image

其中r是某个常数。在

我想对一段时间内的,感兴趣的t积分。然而,由于dA/dt方程包含另一个变量B,这个变量本身用ODE dB/dt来描述,这就变得复杂了。B实际上是一个向量,但我已经简化了表达式,试图更清楚地突出我的问题。在

我目前有一个使用手动Euler方法的解决方案:即计算dB/dt(然后使用B = B_previous + dB/dt * dt),并使用固定的时间步长dt手动执行。然而,这是缓慢和不可靠的。我想在Numpy中使用内置的ODE解算器会好得多,但考虑到我试图解决的问题的耦合性质,我不确定这是否可行?在

这可以用Numpyodeintsolve_ivp来实现吗?如果是这样的话,有谁能给我一些建议吗!谢谢。在


Tags: 方法db表达式dt常数手动解决方案向量
1条回答
网友
1楼 · 发布于 2024-05-29 03:01:25

你得到的是一个耦合微分方程,它是使用龙格库塔、欧拉斯和许多其他方法求解的标准方程。您可以使用此示例来指导您编写python代码:

https://scipy-cookbook.readthedocs.io/items/CoupledSpringMassSystem.html

请记住,并不是所有的方程都可以用ODEINT求解。如果你的ODE是一个“僵硬”的ODE,那么你必须精确地选择你的算法。刚性常微分方程的定义并不是完全定义的,但是如果你的常微分方程中因变量的幂次较大或非整数次幂,则通常会出现这种情况。在

解决耦合ODE的第一步是使用标准方法。如果它们不起作用,那就去调查别的东西。在

相关问题 更多 >

    热门问题