Python—微分方程

结合Python中Scipy,专注创建可以解决问题的方程

目录

  1. 一阶常微分方程

  2. 二阶常微分方程

  3. 三阶常系数微分方程组

  4. 修正贝塞尔微分方程

  5. 伯努利方程

一阶常微分方程

加速度、速度、时间

计算物体速度的时候,若加速度不断变化,如何确定速度和时间的关系?假设加速度随速度和时间变化的关系是:

即:

我们利用Scipy求解该方程:

import numpy as np   import matplotlib.pyplot as plt      from scipy.integrate import odeint      # v是速度,t是时间   def dvdt(v, t):       return v + 6*t      v0 = 0   t = np.linspace(0, 2, 100)      # 结果res是 N行1列的二维数组(因为是一元方程)   res = odeint(dvdt, v0, t)      # 转置之后第一行就是各个时间点的速度   res_v = res.T[0]      # 绘制速度和时间的关系   plt.plot(t, res_v)   plt.show()   

由下图结果易得加速度随时间逐渐增大。

图1

二阶常微分方程

,,

# 二阶ODE的求解   import matplotlib.pyplot as plt   import numpy as np   from scipy.integrate import odeint         def dSdx(x, S):       x, v = S       return [v, -v ** 2 + np.sin(x)]         x_0 = 0   v_0 = 3   S_0 = (x_0, v_0)   t = np.linspace(0, 1, 100)   sol = odeint(dSdx, y0=S_0, t=t, tfirst=True)   x_sol = sol.T[0]   v_sol = sol.T[1]   l1, = plt.plot(t, x_sol)   l2, = plt.plot(t, v_sol)   plt.legend((l1, l2), ['x', 'v'])   plt.show()   

图2

这个二阶ODE描述了速度v相对于位置x的变化率。变量S是一个元组(x, v),它表示系统在给定点(x, v)的状态。通过使用龙格-库塔法或欧拉法等适当的方法对该系统进行数值求解,我们可以确定函数v(x),它表示速度作为位置的函数。</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值