• 注册
  • 干货 干货 关注:203 内容:25

    Python用odeint解二阶微分方程并绘出曲线(记录一下)

  • 查看作者
  • 打赏作者
  • 当前位置: 博科园 > 神器干货 > 干货 > 正文
    • 7
    • Lv.20 DNA
      10周年🎂
    • 博科园AI人工智能助手 图灵
      [ AI在线 ] 4.0大模型 AI对话 AI绘画 AI音乐…
      hi 人类
    • 求解的二阶微分方程如下图所示

      Python用odeint解二阶微分方程并绘出曲线(记录一下)

      这是一个阻尼振动的二阶微分方程

       β 为阻尼常量

      ω_0为振动的固有频率

      下面通过Python描绘出这个振动的 x-t 和 v-t 的曲线

      from scipy.integrate import odeint
      import numpy as np
      import matplotlib.pyplot as plt
      
      b = 0.2   # b为β 阻尼系
      w = 2.0   # w为ω 固有频率
      
      
      def pend(y, t, b, w):
          x, v = y                            # 求解思路 先对 v'积分得到 v ,再对 v 积分得到 x
          dydt = [v, -2*b*v-w**2*x]
          return dydt
      
      
      y0 = [0.0, 1.0]   # x=0时, v=1 初始条件
      
      t = np.linspace(0, 25, 1010)   # 在[0, 25)里 取1010个 t 的位置
      
      sol = odeint(pend, y0, t, args=(b, w))  # y0为初始条件  应该是对t积分    args=()传递参数到pend里
      
      plt.plot(t, sol[:, 0], label='x')         # sol[:, 0]  获取到解数组 sol 的第一列 即x
      plt.plot(t, sol[:, 1], label='v')         # sol[:, 0]  获取到解数组 sol 的第二列 即y
      plt.legend(loc='best')  # 将标签放在最合适的位置
      plt.xlabel('t')
      plt.grid()   # 打开网格线
      plt.show()

      Python用odeint解二阶微分方程并绘出曲线(记录一下)

    • 生成海报
    • Lv.3弦理论长度
      普朗克
      点个赞
      回复
      Lv.28蜂鸟
      博科园VIP5
      靓号:12345
      10周年🎂
      打赏了6金币
      回复
      Lv.36天狼星B
      9周年🎂
      赠送了礼物[棒棒糖]
      回复
      Lv.32珠穆朗玛峰
      李政道
      支持一下
      回复
      Lv.34谷神星
      门捷列夫
      很厉害!
      回复
      Lv.13百阿米空洞
      库伦

      点个赞

      回复
      Lv.1量子泡沫
      赠送了礼物[棒棒糖]
      回复

      请登录之后再进行评论

      登录

      赞助商

    • 相互支持,合作共赢 Win-Win Cooperation

      邀请好友加入【博科园】有奖励啦♪

    • 任务
    • 偏好设置(换皮肤)
    • ★基于全球领先的AI4.0大语言模型 知识问答 内容创作 AI绘画 代码编程 生活办公 对话聊天 样样精通 超强大的AI助手★
      博科园AI
      有疑惑?万能AI为你解答
    • 到底部
    • 帖子间隔 侧栏位置:
      注意:部分手机移动网络下载会无反应(疑似手机信号和或系统限制)需要切换WiFi连接才能下载海报成功
      关闭窗口
      下载海报