参考自John Hedengren的一门课,网址是apmonitor.com

考虑这样一个反应:

要求画出物质A和B的浓度时间曲线。其中A的反应速率如下:

k=2.0,B的反应速率为 :

代码:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as pltdef rxt(C,t):Ca=C[0]Cb=C[1]k=2.0dAdt = -k*CadBdt = k*Careturn [dAdt,dBdt]t=np.linspace(0,5,100)
C0=[1,0]
C=odeint(rxt,C0,t)plt.plot(t,C[:,0],'r--',linewidth=2.0)
plt.plot(t,C[:,1],'b-',linewidth=2.0)
plt.xlabel('Time (s)')plt.ylabel('Concentration')
plt.legend(['Ca','Cb'])plt.show()

结果:

考虑反应2:

A,B,C,D代表不同物质的浓度,单位 ,mol/L 。它们的初值分为:A0=1,B0=1,C0=0,D0=0

k1=1 L/mol*s,k2=1.5L/mol*s。定义反应活性S=C/(C+D),求ABCD和S的浓度-时间曲线

列微分方程组:

代码:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as pltdef rxt(Z,t):k1=1.0k2=1.5r1 = k1 * Z[0] * Z[1]r2 = k2 * Z[1] * Z[2]dAdt = -r1dBdt = -r1 - r2dCdt = r1-r2dDdt = r2return [dAdt, dBdt, dCdt, dDdt]t=np.arange(0,3.01,0.2)
Z0=[1,1,0,0]
Conc = odeint(rxt,Z0,t)cA=Conc[:,0]
cB=Conc[:,1]
cC=Conc[:,2]
cD=Conc[:,3]
S=np.empty(len(cC))
for i in range(len(cC)):if(abs(cC[i]+cD[i])>1e-10):S[i] = cC[i] / (cC[i]+cD[i])else:S[i] = 1
plt.plot(t,cA,'r--')
plt.plot(t,cB,'o-')
plt.plot(t,cC,'b--')
plt.plot(t,cD,'y-')
plt.plot(t,S)plt.xlabel('Time (s)')plt.ylabel('Concentration')
plt.legend(['cA','cB','cC','cD','S'])
plt.show()

结果:

化学反应的常微分方程求解(Python)相关推荐

  1. 视频教程-三课时精通matlab常微分方程求解-Matlab

    三课时精通matlab常微分方程求解 图像和算法等领域有多年研究和项目经验:指导发表科技核心期刊经验丰富:多次指导数学建模爱好者参赛. 宋星星 ¥12.00 立即订阅 扫码下载「CSDN程序员学院AP ...

  2. SciPy 非线性方程求解 | Python技能树征题

    SciPy 非线性方程求解 | Python技能树征题 0. 前言 1. 第 1 题:一元非线性方程求解 2. 第 2 题:非线性方程组求解 试题代码地址 0. 前言 在自然科学和工程学科中,许多系统 ...

  3. Simulink基础【1】-弹簧-阻尼模型的常微分方程求解

    Simulink基础[1]-弹簧-阻尼模型的常微分方程求解 0. Simulink模块是什么?能干什么? 1. 弹簧阻尼模型简介 1.1 受常力的弹簧阻尼模型 1.2 动力学方程 2. simulin ...

  4. 2.0.高等数学3-一阶常微分方程求解

    一阶常微分方程求解 问题引入 一阶微分方程的几种情形 可分离变量方程 齐次微分方程 解齐次微分方程例3 例4 一阶线性微分方程标准形式 一阶非齐次线性微分方程 通解公式 伯努利方程 三级目录 问题引入 ...

  5. 微分方程求解 matlab,4MATLAB常微分方程求解.ppt

    4MATLAB常微分方程求解 MATLAB微分方程 1 求简单微分方程的解析解 2 求微分方程的数值解 3 建模实例 1 求简单微分方程的解析解 求微分方程(组)的解析解命令: dsolve('方程1 ...

  6. Matlab:Matlab编程语言应用之数学计算(求极限/渐近线求导数常微分方程求解求微分方程组的解求临界阻尼系数的解)的简介、案例实现之详细攻略

    Matlab:Matlab编程语言应用之数学计算(求极限/渐近线&求导数&常微分方程求解&求微分方程组的解&求临界阻尼系数的解)的简介.案例实现之详细攻略 目录 三.极 ...

  7. 四阶龙格库塔法求解一次常微分方程组(python实现)

    四阶龙格库塔法求解一次常微分方程组 一.前言 二.RK4求解方程组的要点 1. 将方程组转化为RK4求解要求的标准形式 2. 注意区分每个方程的独立性 三.python实现RK4求解一次常微分方程组 ...

  8. 常微分方程(ode)一步法的求解(python) (龙格库塔法(Runge-Kutta))

    第四十六篇 常微分方程的一步法 之所以称为一步方法,是因为只需要有关前一步的信息就可以在下一步生成解.这使得一步法在计算机程序中相对容易实现.正如许多数值方法的典型,每一步做的工作越多,通常获得的精度 ...

  9. python求解非线性多元方程_求解python中的colebrook(非线性)方程

    我想在MATLAB中的python what this guy did中做 . 我已经安装了anaconda,所以我有numpy和sympy库 . 到目前为止,我已尝试使用numpy nsolve,但 ...

  10. MATLAB 数学应用 微分方程 常微分方程 求解非刚性ODE

    本文介绍两个使用 ode45 来求解非刚性常微分方程的示例.MATLAB拥有三个非刚性 ODE 求解器. ode45 ode23 ode113 对于大多数非刚性问题,ode45 的性能最佳.但对于允许 ...

最新文章

  1. 集群概述及原理笔记(1)
  2. MPB:中国地大侯卫国组-​ 针对热泉原位培养矿物的低质量DNA提取方法
  3. 用户数从 0 到亿,我的 K8s 踩坑血泪史
  4. android系统功耗优化(2)---Android最佳实践之性能 - 电池续航时间优化
  5. 95-10-200-启动-结尾
  6. iis 在站点中新建虚拟目录站点之后,虚拟目录中的 web.config 与 主站点中的 web.config冲突解决方案...
  7. 设计模式(一)——设计模式的七大原则
  8. dvi线支持多少分辨率_DVI接口最大支持的分辨率是多少?VGA呢?
  9. 中国历史上5个谣言,单是第1条就骗了不少人!
  10. 输入一字符串,内有数字和非数字字符,例如:A123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]……统计有
  11. centos7.X版本如何下载网络流量实时监控工具iftop
  12. 使用TIMESTAMPDIFF计算两个时间戳之间的时间间隔
  13. 异常统一处理[ExceptionAdvice](SpringMVC)
  14. 如何破解excel打开密码
  15. 帝国 loginjs.php,帝国cms JS调用登陆模板制作教程
  16. Shell 变量嵌套
  17. IPX/SPX协议概要
  18. 仓库管理软件改善库存管理水平不小!
  19. layui时间选择器选择周和季度
  20. 链锯:基于链接的自动化工作流漏洞生成

热门文章

  1. JavaFX.控件讲解
  2. 华为云centOS8部署
  3. 单数据库,多数据库,单实例,多实例不同情况下的数据访问效率测试
  4. Win10经常断开网络连接的原因
  5. N1完美刷入Armbian系统
  6. AnaConda下载安装完了只有anaconda prompt问题
  7. 教你Word一键自动生成目录步骤
  8. unity 彩带粒子_unity游戏缤纷五彩纸屑粒子特效Confetti FX 1.0
  9. 【线性规划】基本概念
  10. ATR-CKN算法的研究与实现