主要内容

模型微分代数方程

概述罗伯逊反应的例子

罗伯逊[1]创建了一个自催化化学反应系统测试和比较僵硬的系统解决数值。反应速率常数(k),反应速率(V)系统给出如下:

一个 k 1 B k 1 = 0.04 V 1 = k 1 ( 一个 ] B + B k 2 C + B k 2 = 3 10 7 V 2 = k 2 ( B ] ( B ] B + C k 3 一个 + C k 3 = 1 10 4 V 3 = k 3 ( B ] ( C ]

因为反应率之间存在巨大差异,解决数值见硬的微分方程。僵硬的微分方程,解决一些数值不能除非步长收敛在一个解决方案是非常小的。如果步长非常小,仿真时间可以长到不可接受的地步。在这种情况下,您需要使用一个数值解算器设计解的方程。

万博1manbetx从歌唱方程仿真软件模型

常微分方程(ODE)系统具有以下特点:

  • 所有的方程是常微分方程。

  • 每个方程的导数是一个因变量对自变量,通常时间。

  • 方程的数量等于系统中因变量的数量。

使用反应率,您可以创建一组微分方程描述为每个化学物种变化的速度。因为有三个物种,有三个微分方程的数学模型。

一个 = 0.04 一个 + 1 10 4 B C B = 0.04 一个 1 10 4 B C 3 10 7 B 2 C = 3 10 7 B 2

初始条件: 一个 = 1 , B = 0 , C = 0

构建模型

创建一个模型,或者打开模型ex_hb1ode

  1. 三个积分器块添加到您的模型。标签的输入一个“,B”,C ',输出一个,B,C分别。

  2. 增加金额、产品和获得解决每个微分变量的块。例如,模型的信号C ',

    1. 添加一个数学功能块和连接的输入信号B。设置函数参数广场

    2. 数学功能块的输出连接到一块。设置获得参数3 e7

    3. 继续添加剩下的微分方程计算模型。

  3. 模型的初始条件一个通过设置初始条件参数的一个集成块1

  4. 添加了块保存信号一个,B,CMATLAB变量

模拟模型

创建一个脚本,该脚本使用sim卡命令来模拟模型。这个脚本保存在MATLAB仿真结果变量。自模拟长时间间隔B最初的变化非常快,策划在对数刻度值有助于视觉比较结果。同时,因为的价值B相对于小的值一个C、乘B通过 1 10 4 在策划的值。

  1. 在MATLAB中输入以下语句®脚本。如果你建立自己的模型,取代ex_hblode与你的模型的名称。

    sim (ex_hb1ode)你(:,2)= 1 e4 *你(:,2);图;semilogx(吹捧你);包含(的时间);ylabel(浓度);标题(罗伯逊反应与常微分方程建模的)
  2. 从仿真软件万博1manbetx®编辑器,建模选项卡上,单击模型设置

    在解算器窗格中,设置停止时间4 e5解算器ode15s(硬/ NDF)

    ——在数据导入窗格中,选择时间输出复选框。

  3. 运行脚本。观察到所有的一个被转换为C

万博1manbetx从DAE仿真软件模型方程

微分代数方程组(DAE)具有以下特点:

  • 它包含两个常微分方程和代数方程。代数方程没有任何衍生品。

  • 只有一些方程是微分方程定义的衍生品的依赖变量。其他相关变量定义的代数方程。

  • 方程的数量等于系统中因变量的数量。

一些系统包含约束由于守恒定律,如质量和能量守恒。如果你设置初始浓度 一个 = 1 , B = 0 , C = 0 的总浓度三个物种总是等于 1 一个 + B + C = 1 。你可以替换的微分方程 C 用下面的代数方程创建一组微分代数方程(拓扑)。

C = 1 一个 B

微分变量一个B唯一地确定代数变量C

一个 = 0.04 一个 + 1 10 4 B C B = 0.04 一个 1 10 4 B C 3 10 7 B 2 C = 1 一个 B

初始条件: 一个 = 1 B = 0

构建模型

做出这些更改您的模型或模型ex_hb1ode,或打开模型ex_hb1dae

  1. 删除计算积分器的块C

  2. 添加一个块和设置符号列表+ - - - - - - -参数。

  3. 连接的信号一个B的-和块的输入。

  4. 模型的初始浓度一个与一个常数块连接到+和块的输入。设置恒定值参数1

  5. 和块的输出连接到分支线连接到产品和模块。

模拟模型

创建一个脚本,该脚本使用sim卡命令来模拟模型。

  1. 输入以下语句在MATLAB脚本。如果你建立自己的模型,取代ex_hbldae与你的模型的名称。

    sim (ex_hb1dae)你(:,2)= 1 e4 *你(:,2);图;semilogx(吹捧你);包含(的时间);ylabel(浓度);标题(“罗伯逊反应与拓扑建模”)
  2. 从模型编辑器,万博1manbetx建模选项卡上,单击模型设置

    在解算器窗格中,设置停止时间4 e5解算器ode15s(硬/ NDF)

    ——在数据导入窗格中,选择时间输出复选框。

  3. 运行脚本。仿真结果当你使用一个代数方程为模型是一样的模拟只使用微分方程。

万博1manbetx仿真软件模型从DAE使用代数方程约束块

一些系统包含约束由于守恒定律,如质量和能量守恒。如果你设置初始浓度 一个 = 1 , B = 0 , C = 0 的总浓度三个物种总是等于 1 一个 + B + C = 1

你可以替换的微分方程 C 一个代数方程建模使用一个代数约束块和一笔。代数约束块限制其输入信号F (z)为零和输出一个代数z。换句话说,块的输出是输入的值需要产生一个零。使用以下输入块的代数方程。

0 = 一个 + B + C 1

微分变量一个B唯一地确定代数变量C

一个 = 0.04 一个 + 1 10 4 B C B = 0.04 一个 1 10 4 B C 3 10 7 B 2 C = 1 一个 B

初始条件: 一个 = 1 , B = 0 , C = 1 10 3

构建模型

做出这些更改您的模型或模型ex_hb1ode,或打开模型ex_hb1dae_acb

  1. 删除计算积分器的块C

  2. 添加一个代数约束块。设置最初的猜测参数1 e - 3

  3. 添加一个块。设置符号列表参数- + + +。

  4. 连接的信号一个B+和块的输入。

  5. 模型的初始浓度一个与一个常数块连接到负输入块的数目。设置恒定值参数1

  6. 代数约束块的输出连接到分支线连接到产品和块的输入。

  7. 创建一个分支线从代数约束的输出块的最后加上输入块的数目。

模拟模型

创建一个脚本,该脚本使用sim卡命令来模拟模型。

  1. 输入以下语句在MATLAB脚本。如果你建立自己的模型,取代ex_hbl_acb与你的模型的名称。

    sim (ex_hb1dae_acb)你(:,2)= 1 e4 *你(:,2);图;semilogx(吹捧你);包含(的时间);ylabel(浓度);标题(“罗伯逊反应建模和拓扑代数约束块”)
  2. 从模型编辑器,万博1manbetx建模选项卡上,单击模型设置

    在解算器窗格中,设置停止时间4 e5解算器ode15s(硬/ NDF)

    ——在数据导入窗格中,选择时间输出复选框。

  3. 运行脚本。仿真结果当你使用一个代数约束块一样只使用微分方程模型模拟。

使用一个代数约束块创建一个代数循环模型中,如果你设置代数循环参数警告(在建模选项卡上,单击模型设置,然后选择诊断),将显示以下消息在诊断查看器模拟。

这个模型的代数循环仿真解算器能够找到一个解决方案,但是代数循环并不总是有一个解决方案,他们不支持代码生成。万博1manbetx关于代数循环仿真软件模型的更多信息以及如何删除它们,看到的万博1manbetx代数循环概念

引用

[1]Robertson h . h .“一组反应速率方程的解决方案。”数值分析:介绍(j·沃尔什ed)。英国伦敦:学术出版社,1966年,页178 - 182。

相关的例子

更多关于