python求解微分方程组_用python求解耦合微分方程组有什么方法吗?

除了前面提到的SciPy方法odeint和ode之外,它现在还有^{}这是更新的,而且通常更方便。一个完整的示例,将[v11, v22, v12]编码为数组v:from scipy.integrate import solve_ivp

def rhs(s, v):

return [-12*v[2]**2, 12*v[2]**2, 6*v[0]*v[2] - 6*v[2]*v[1] - 36*v[2]]

res = solve_ivp(rhs, (0, 0.1), [2, 3, 4])

这就解决了系统在初始值为[2, 3, 4]的区间(0, 0.1)上的问题。结果的自变量(在您的符号中)为res.t:array([ 0. , 0.01410735, 0.03114023, 0.04650042, 0.06204205,

0.07758368, 0.0931253 , 0.1 ])

这些值是自动选择的。我们可以提供t_eval来在所需的点计算解决方案:例如,t_eval=np.linspace(0, 0.1)。

因变量(我们正在寻找的函数)位于res.y:array([[ 2. , 0.54560138, 0.2400736 , 0.20555144, 0.2006393 ,

0.19995753, 0.1998629 , 0.1998538 ],

[ 3. , 4.45439862, 4.7599264 , 4.79444856, 4.7993607 ,

4.80004247, 4.8001371 , 4.8001462 ],

[ 4. , 1.89500744, 0.65818761, 0.24868116, 0.09268216,

0.0345318 , 0.01286543, 0.00830872]])

使用Matplotlib,这个解决方案被绘制为plt.plot(res.t, res.y.T)(如果我提供了t_eval如前所述,那么绘制会更平滑)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值