一、sympy.dsolve

首先,感觉最科学的是用sympy的dsolve解常微分方程,直接贴代码

import sympy as sydef differential_equation(x,f):return sy.diff(f(x),x,2)+f(x)#f(x)''+f(x)=0 二阶常系数齐次微分方程
x=sy.symbols('x')#约定变量
f=sy.Function('f')#约定函数
print(sy.dsolve(differential_equation(x,f),f(x)))#打印
sy.pprint(sy.dsolve(differential_equation(x,f),f(x)))#漂亮的打印

输出:

Eq(f(x), C1*sin(x) + C2*cos(x))
f(x) = C₁⋅sin(x) + C₂⋅cos(x)

如果学过二阶常系数齐次解法的话,很容易知道这是对的,你也可以试下更简单的微分方程验证。

二、scipy.integrate.odeint

这个用起来就比较麻烦了,不过用于画图还是很棒的。先看一个一阶微分方程的例子。

import numpy as np
from scipy.integrate import odeint
#一阶微分方程的例子
def diff_equation(y,x):#dy/dx=y,其实手工解的话,很容易知道,y=Cexp(x)return np.array(y)#微分方程格式,左边一定是dy/dx,返回右边
x=np.linspace(0,1,num=100)#初始点是0
result=odeint(diff_equation,1,x)#中间那个是y0初值,即x=0时y=1
plt.plot(x,result[:,0])#result整个矩阵的第一列
plt.grid()#网格
plt.show()#这是y=exp(x)的图像

输出:

然而二阶的话,就有点麻烦了。

import numpy as np
from scipy.integrate import odeint
#二阶微分方程
def diff_equation(y_list,x):#y''+y=0 二阶的话,要换成两个一阶微分方程的方程组#设y'=z#那么z'=y''=-y#手工解也很容易知道是 y=C1sin(x)+C2cos(x)y,z=y_listreturn np.array([z,-y])
x=np.linspace(0,np.pi*2,num=100)
y0=[1,1]#y(0)=1,y'(0)=1
result=odeint(diff_equation,y0,x)
plt.plot(x,result[:,0],label='y')#y的图像,y=cos(x)+sin(x)
plt.plot(x,result[:,1],label='z')#z的图像,也就是y'的图像,z=-sin(x)+cos(x)
plt.legend()
plt.grid()
plt.show()

输出:

对了,想知道更详细的参数就看官网吧:

1、http://docs.sympy.org/dev/modules/solvers/ode.html

2、https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html

python解常微分方程相关推荐

  1. python解常微分方程龙格库_数值常微分方程-欧拉法与龙格-库塔法

    大三时候在跳蚤市场闲逛,从一位数学院的学长那里买了一些闲书,最近翻出来刚好有李荣华.刘播老师的<微分方程数值解法>和王仁宏老师的<数值逼近>,结合周善贵老师的<计算物理& ...

  2. python解常微分方程(组)

    本人目前初三,能力所限,如有不足之处,还望多多指教. 一周前看到了一个视频,于是我便想用python来求解这个问题. 〇.分析 假设在平面内有一带电粒子q,质量为m.空间内存在匀强磁场B,方向垂直于平 ...

  3. python解常微分方程_Python-sympy.dsolve求解常微分方程(组)

    这里分别介绍怎么利用sympy.dsolve求解常微分方程和常微分方程组. #首先利用sympy.dsolve求解单个的常微分方程: #代码 from sympy import Function, d ...

  4. python解常微分方程龙格库_求解二阶常微分方程的RungeKutta四阶方法

    我试着做一个简谐振子的例子,它将用龙格-库塔四阶法求解.要求解的二阶常微分方程(ODE)和初始条件为: y''+y=0 y(0)=0和y'(0)=1/pi 范围在0到1之间,共有100步.我用u作为辅 ...

  5. python解常微分方程龙格库_excel实现四阶龙格库塔法runge-kutta解二阶常微分方程范例.xls...

    excel实现四阶龙格库塔法runge-kutta解二阶常微分方程范例,rungekutta,四阶rungekutta法,rungekuttamatlab,四阶rungekutta,rungekutt ...

  6. python解常微分方程龙格库_求解常微分方程组初值问题的龙格库塔法分析及其C代码...

    求解常微分方程组初值问题的 龙格库塔法分析及其 C 代码 1 .概 述 由高等数学的知识可知,一些特殊类型的常微分方程(组)能够求出给定初 始值的解析解, 而在科学与工程问题中遇到的常微分方程 (组) ...

  7. 用python的scipy中的odeint来解常微分方程中的一些细节问题(适用于小白)

    用python的scipy中的odeint来解常微分方程中的一些细节问题(适用于小白) 写在前面 最近有些需要解决常微分方程的问题,网上查了很多教程都不是很明晰,便自己研究了一段时间,写一点小白初次接 ...

  8. 用python实现解常微分方程组的简单示例以及用odeint解常微分方程的范例

    背景: 包括两个部分,一个是演示怎么自己写代码解常微分方程,另一部分就是示范python怎么调用解常微分方程的函数. 下面的方程组给出洛仑兹引子在三个方向上的速度,求解运动轨迹 软件: python3 ...

  9. Adams隐式4阶方法解常微分方程,python实现

    Adams隐式4阶方法解常微分方程,由4阶Runge-Kutta方法提供初值,隐式方法比显式复杂一些,主要是因为需要解方程.这里使用弦截法解微分方程. import math import numpy ...

最新文章

  1. 北京“十四五”高精尖产业规划:到2025年集成电路产业实现营业收入3千亿元...
  2. swoole redis mysql_教你使用swoole监听redis数据
  3. ITK:创建Image
  4. Python3函数和代码复用
  5. visio对象放入word显示不全_办公人士必学visio技能 手把手教你使用visio绘制项目全景图!...
  6. [ECMAScript] 说说你对class的理解
  7. 苹果X可以升级5G吗_苹果x可以用5g网络吗
  8. JSR 299 建议草案第二版已提交
  9. centos8 安装geany
  10. 这二十个问题,可能是你技术人生中已经或即将遭遇的痛点,怎么解?
  11. TCP长连接和短连接-深入浅出(还在总说http长连接吗)
  12. 阿里大鱼短信接口PHP版,精简版阿里大鱼短信SMS发送接口PHP实例
  13. UnityC# MD5验证
  14. 学习日志-勉励自己-自律
  15. RL(Chapter 3): Finite Markov Decision Processes (有限马尔可夫决策过程)
  16. Matlab关于画数据网格图
  17. jdk17下载详细步骤
  18. 60岁代码匠的几篇小作文,解决了大多数程序的迷茫(上)
  19. 【树莓派】关于树莓派2代,更新最新内核后,DS18B20温度传感器无法找到对应文件的问题的解决
  20. 1455 B - Jumps

热门文章

  1. SQL2008R2x64无人值守一键安装
  2. 如何提取网页中的blob加密视频
  3. (五)算法与数据结构 | BFS和DFS
  4. c语言邮递员问题算法,用贪婪算法解决邮差问题
  5. 方兴未艾的计算广告学——微软亚洲研究院高级研究员 刘铁岩
  6. xarray官方文档 学习笔记(序章)
  7. 基于C#的WinForm打印程序附带源代码
  8. 如何规避期货套利交易的陷阱
  9. 2021Pycharm学生免费使用
  10. 小程序图片缓存策略(不改代码更换OSS图片)