国产IAuto软件如何替代Matlab的simulink快速对常微分方程仿真

上述为一个二阶常微分方程,其中初始值y'(0)=0,y(0)=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;

第四步:在完成上面三步后就可以编写微分方程的表达式脚本,首先将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)的数据关系仿真曲线;

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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月21日
下一篇 2022年2月21日

相关推荐