在各种工程或科研场景中,经常会遇到需要模拟常微分方程的场景。 我们一般使用Matlab的Simulink函数模块来建立方程模型matlab定义全局变量,但是使用Matlab软件的成本还是比较高的。 本文将解答如何在IAuto中快速模拟常微分方程模型,并以如下微分方程为例进行说明:

上面是一个二阶常微分方程,其中初值y'(0)=0,y(0)=2;

IAuto中绘制常微分方程仿真曲线的方法有两种,第一种是数学曲线编辑器中的表达式脚本,第二种是在流程编辑器中通过仿真节点的关系构建(类似于构建一个类似 simulink 的过程)关系); 本文将教您使用第一种方法在IAuto中模拟数学模型;

第一步:打开IAuto软件后新建.iax文件,添加空白数学曲线编辑器,将.iax文件保存在桌面;

matlab定义变量_matlab定义变量整数_matlab定义全局变量

Step 2:将仿真模型的框架代码复制粘贴到表达式脚本输入框(注意此框架代码适用于所有常微分方程仿真):

let dx = 10/500;//定义图表中点的t轴间距,t轴范围值除以点数
let n = 10000;
let dxn = dx/n;//定义运算步长
if(x==0){//当时间为0时定义初始值
  IA.y = 2;
  IA.y1 = 0;
}else{
  for(let i=1;i<=n;i++){
     let t = x-dx+i*dxn;
    //核心方程代码
  }
}
IA.y;

第三步:在图例的更多设置中,设置变量x的取值范围为[0,10],设置点数为500;

matlab定义变量整数_matlab定义变量_matlab定义全局变量

第四步:完成以上三步后,就可以编写微分方程的表达式脚本了。 首先,将y的最高次项的系数改为1,得到:

然后在第二步的核心代码区添加微分方程,写成表达式脚本:

IA.y2 = 0.25*(3*IA.y - 2*IA.y*IA.y)*IA.y1-IA.y//其中IA.y2、IA.y1、IA.y为自定义全局变量

第五步:对第四步中的y''(对应表达式脚本中的全局变量IA.y2)进行积分,得到y'(对应全局变量IA.y1),如下:

IA.y1+= IA.y2*dxn;//表达式脚本积分很简单只需要累加其导数与运算增量的乘积

第六步:对第五步中的y'(对应表达式脚本中的全局变量IA.y)进行积分,得到y(对应全局变量IA.y),如下:

IA.y+= IA.y1*dxn;//表达式脚本积分很简单只需要累加其导数与运算增量的乘积

第七步:将这三行核心代码放入第二步的核心代码区后,点击“绘图”按钮;

let dx = 10/500;//定义图表中点的t轴间距,t轴范围值除以点数
let n = 10000;
let dxn = dx/n;//定义运算步长
if(x==0){//当时间为0时定义初始值
  IA.y = 2;
  IA.y1 = 0;
}else{
  for(let i=1;i<=n;i++){
     let t = x-dx+i*dxn;
    //核心方程代码
     IA.y2 = 0.25*(3*IA.y - 2*IA.y*IA.y)*IA.y1-IA.y//其中IA.y2、IA.y1、IA.y为自定义全局变量
     IA.y1+= IA.y2*dxn;//表达式脚本积分很简单只需要累加其导数与运算增量的乘积
     IA.y+= IA.y1*dxn;//表达式脚本积分很简单只需要累加其导数与运算增量的乘积
  }
}
IA.y;

如下图,得到这个常微分方程y=f(x)的数据关系模拟曲线;

matlab定义变量整数_matlab定义全局变量_matlab定义变量

是不是很简单,因为第二步是框架代码,它的核心代码只有三行。 如果我们要模拟三阶微分方程(y'''),也是如此。 注意,框架代码用于定义步长、初始值、输出值等; 用表达式脚本编辑输入三阶项,然后积分三次得到y;

IA.y3 = 表达式脚本;//
IA.y2 += IA.y3*dxn; //对三阶积分后得到二阶
IA.y1 += IA.y2*dxn; //对二阶积分后得到一阶
IA.y += IA.y1*dxn; //对一阶积分后得到y

这里需要注意的是,当x==0时,需要在初始值设置中加入IA.y2项;

以此类推,y''''的四阶常微分方程表达式如下:

IA.y4 = 表达式脚本;//
IA.y3 += IA.y4*dxn; //对四阶积分后得到二阶
IA.y2 += IA.y3*dxn; //对三阶积分后得到二阶
IA.y1 += IA.y2*dxn; //对二阶积分后得到一阶
IA.y += IA.y1*dxn; //对一阶积分后得到y

当然,iAuto多功能软件还包括其他三类编辑器(流程编辑器、思维导图编辑器、甘特图编辑器)matlab定义全局变量,同样可以广泛应用于办公基础绘图领域;