python求根表达式_用SymPy表达式和SciPy s求解一阶常微分方程组

我正在学习如何将python SymPy与SciPy相结合来数值求解常微分方程。然而,对于如何将一阶ODEs系统的SymPy形式转换成可以用scipy.integrate.odeint()处理的格式,我有点不知所措

因此,另一篇文章是一个更复杂的例子,用户希望使用Theano或其他一些库来加速对ODE的计算。我只是想了解SymPy和SciPy之间的基本接口,所以这篇文章一点也没有帮助。在

作为一个有趣的例子,我使用Lotka-Volterra方程来测试SymPy的使用。公式如下:

我可以用Scipy的传统方法来解决这个问题,它很有效。这是工作代码。在import numpy as np

import scipy

from scipy.integrate import odeint, ode, solve_ivp

import sympy

import matplotlib.pyplot as plt

sympy.init_printing()

def F_direct(X, t, args):

F = np.zeros(2)

a, b, c, d = args

x,y = X

F[0] = a*x - b*x*y

F[1] = c*x*y- d*y

return F

argst = [0.4,0.002,0.001,0.7]

xy0 = [600, 400]

t = np.linspace(0, 50, 250)

xy_t, infodict = odeint(F_direct, xy0, t, args=(argst,), full_output=True)

plt.plot(t, xy_t[:,1], 'o', t, xy_t[:,0])

plt.grid(True)

plt.xlabel('x'); plt.ylabel('y')

plt.legend(('Numerical', 'Exact'), loc=0)

plt.show()

现在我有点迷惘了,不知道该怎么做。我知道该做什么,但不知道该怎么做。我发现的唯一一个例子就是太复杂了,无法学习。这是我所拥有的。在

^{pr2}$

我应该把这些方程放入某种系统形式,然后使用sympy.lambdify函数来返回一个新函数,我可以传递给odeint

所以,有人能填补我如何设置这个ode1,ode2系统来处理SymPy的空白吗。在

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值