可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45;没有状态的系统用的是discrete.

1)ode45基于显式Runge—Kutta(4,5)公式,Dormand—Prince对.它是—个单步求解器(solver)。也就是说它在计算y(tn)时,仅仅利用前一步的计算结果y(tn-1).对于大多数问题.在第一次仿真时、可用ode45试一下.

2)ode23是基于显式Runge—Kutta(2,3).Bogackt和Shampine对.对于宽误差容限和存在轻微刚性的系统、它比ode45更有效一些.ode23也是单步求解器.

3)odell3是变阶Adams-Bashforth—Moulton
PECE求解器.在误差容限比较严时,它比ode45更有效.odell3是一个多步求解器,即为了计算当前的结果y(tn),不仅要知道前一步结果y(tn-1),还要知道前几步的结果y(tn-2),y(tn-3),…;

4)odel5s是基于数值微分公式(NDFs)的变阶求解器.它与后向微分公式BDFs(也叫Gear方法)有联系.但比它更有效.ode15s是一个多步求解器,如果认为一个问题是刚性的,或者在用ode45s时仿真失败或不够有效时,可以试试odel5s。

odel5s是基于一到五阶的NDF公式的求解器.尽管公式的阶数越高结果越精确,但稳定性会差一些.如果模型是刚性的,并且要求有比较好的稳定性,应将最大的阶数减小到2.选择odel5s求解器时,对话框中会显示这一参数.
可以用ode23求解器代替。del5s,ode23是定步长、低阶求解器.

5)ode23s是基于一个2阶改进的Rosenbrock公式.因为它是一个单步求解器,所以对于宽误差容限,它比odel5s更有效.对于一些用odel5s不是很有效的刚性问题,可以用它解决.

6)ode23t是使用“自由”内插式梯形规则来实现的.如果问题是适度刚性,而且需要没有数字阻尼的结果,可采用该求解器.

7)ode23tb是使用TR—BDF2来实现的,即基于隐式Runge—Kutta公式,其第一级是梯形规则步长和第二级是二阶反向微分公式.两级计算使用相同的迭代矩阵.与ode23s相似,对于宽误差容限,它比odtl5s更有效.

8)discrete(变步长)是simulink在检测到模型中没有连续状态时所选择的一种求解器.可以选择的定步长求解器有:ode5,ode4,ode3,ode2,ode1和discrete.1)ode5是ode45的一个定步长版本,基于Dormand—Prince公式.

2)ode4是RK4,基于四阶Runge—Kutta公式.

3) ode3是ode23的定步长版本,基于Bogacki-Sbampine公式.

4) ode2是Heun方法,也叫作改进Euler公式.

5) odel是Euler方法.

6) discrete(定步长)是不执行积分的定步长求解器.它适用于没有状态的模型,以及对 过零点检测和误差控制不重要的模型.

补充:关于固定步长的情况:

1、solver选择了discrete时:试图更新或者仿真一个有连续状态的模型,会报错。不过,可以据此判断模型中是否有连续状态。

2、固定步长的连续求解器适合求解同时具有离散和连续状态的模型。理论上也可以计算没有连续状态的模型,但是这加重了仿真负担。这时,即使你指定了其中一个连续求解器,simulink还是会自动选择离散的求解器。

关于变步长的情况:

1、如果模型没有定义状态或者只定义了离散状态,应该选择其中的discrete(即图2中的discrete);即使你指定了其中一个连续求解器,simulink还是会自动选择离散的求解器。

2、如果模型有连续状态,连续求解器使用数值积分来计算下一时间步长的连续状态值。

补充说明:

       系统的动态特性通常是用高阶微分方程或一阶微分方程组来描述的。一般讲只有极少微分方程能用初等方法求得其解析解,多数只能用近似数值求解。利用计算机求解微分方程主要使用数值积分法,它是系统仿真的最基本解法。

       在系统仿真中,常用的微分方程的数值积分发有欧拉法、龙格-库塔法和线性等分法等。数值积分法的分类方式很多,常见的有:单步法和多步法,显式和隐式的分法。使用这些解法时,要注意其特点。

参考链接:

https://www.ilovematlab.cn/thread-286379-1-1.html

最新文章

  1. Linux 伙伴算法简介
  2. 只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果
  3. 15第十五章UDF用户自定义函数(转载)
  4. ORA-01810格式代码出现两次 的解决方案
  5. JS代码混淆 支持PHP .NET PERL
  6. Android ScrollView用法
  7. 1分钟搞定超慢SQL
  8. [PHP]利用MetaWeblog API实现XMLRPC功能
  9. 简单使用JSON,通过JSON 字符串来创建对象(二)
  10. 【Unity3D与23种设计模式】工厂方法模式(Factory Method)
  11. NVisionXRFBXConverter(Beta版)实践课程
  12. 章节十、5-CSS---用CSS 通配符定位元素
  13. Graphics Class
  14. 移动端的dl
  15. 2.4 利用FTP服务器下载和上传目录
  16. 教程] 《开源框架-Afinal》之FinalHttp 01一步一脚
  17. 字节、字、bit、byte的关系【转】
  18. 模拟页面获取的php数据(四)
  19. mysql 创建和删除用户
  20. Hadoop学习之路(七)Hadoop集群shell常用命令

热门文章

  1. Windows 干净启动
  2. [NepCTF2022]signin
  3. mybatis动态标签——trim
  4. 前端有关请求的相关内容axios
  5. llinux防火墙设置远程连接
  6. C++ MFC学习 (四)
  7. RabbitMQ的安装与基本使用(windows版)
  8. JavaSE——String
  9. PHP 执行系统命令解压7z格式压缩包
  10. Pytest之生成allure报告