simulink仿真参数设置学习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.变步长(Variable—Step)求解器
可以选择的变步长求解器有: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在检测到模型中没有连续状态时所选择的一种求解器.
2.定步长(Flxed— Step)求解器可以选择的定步长求解器有: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定步长)是不执行积分的定步长求解器.它适用于没有状态的模型,以及对过零点检测和误差控制不重要的模型.
3.诊断页( Diagnostics) 可以通过选择Simulation Parameters对话框的Diagnostics标签来指明在仿真期间遇到一些事件或者条件时希望执行的动作. 对于每一事件类型,可以选择是否需要提示消息,是警告消息还是错误消息. 警告消息不会终止仿真,而错误消息则会中止仿真的运行.
(1) 一致性检查一致性检查是一个调试工具.用它可以验证Simulink的ODE求解器所做的某些假设.它的主要用途是确保s函数遵循Simulink内建模块所遵循的规则.因为一致性检查会导致性能的大幅度下阵(高达40%),所以一般应将它设为关的状态.使用一致性检查可以验证s函数,并有助于确定导致意外仿真结果的原因.为了执行高效的积分运算,Simuli nk保存一些时间步的结果,并提供给下一时间步使用. 例如,某一时间步结束的导数通常可以放下一时间步开始时再使用.求解器利用这一点可以防止多余的导数运算. 一致性检查的另一个目的是保证当模块被以一个给定的t(时间)值调用时.它产生一常量输出.这对于刚性求解器(ode23s和odel5s)非常重要,因为当计算Jacobi行列式时.模块的输出函数可能会被以相同的t值调用多次.如果选择了一致性检查,Simulink置新计算某些值,并将它们与保存在内存中的值进行比较,如果这些值有不相同的,将会产生一致性错误. Simulink 比较下列量的计算值:1)输出;2)过零点3) 导数;4)状态.
( 2)关闭过零点检测可以关闭一个仿真的过零点检测. 对于一个有过零点的模型,关闭过零点检测会加快仿真的速度,但是可能影响仿真结果的精度. 这一选项关闭那些本来就有过零点检测的模块的过零点检测.它不能关闭Hir crossing模块的过零点检测.
(3)关闭优化I/O 存储
选择该选项,将导致Simulink为每个模块约I/()值分配单独的缓存,而不是重新
利用援存.这样可以充分增加大模型仿真所需内存的数量.只有需要调试模型时才选择该选项•在下列情况下,应当关闭缓存再利用;1)调试一个C-MEX S函数;2)使用浮点scope或display模块来察看调试模型中的信号. 如果缓存再利
用打开,并且试图使用浮点scope或display模块来显示缓存已被再利用的信号,
将会打开一个错误对话框.
(4)放松逻辑类型检验选择该选项,可使要求逻辑类型输入的模块接受双精度类型输入.这样可保证与Simulink 3版本之前的模型的兼容性.
4.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿
真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。
(1 )加快仿真速度仿真速度慢的原因有多种.下面列举其中的一些:
1)模型中包含有MATLAB的Fen模块.当模型包含有MATLAB的Fen模块时,在仿真的每一时间步都会调用MATLAB的解释器,这将大大地减慢仿真的速度.因此应尽可能地使用内建的Fen模块或者Elementary Math模块.
2)模型中包含有M文件形式的S函数.M文件形式的S函数也将导致在每一时间步调用MATLAB的解释器.可以考虑将s函数转换为子系统或者e-MEx文件形式的s函数.
3)模型中包含有Memory模块.使用Memory模块使得变阶求解器(odel5s和
odell3)在每一时间步将阶数设为1 阶.
4)最大的步长太小.如果改变了最大步长.可以试试重新使用缺省值(auto)运行仿真。
5)对精度要求太高. 缺省的相对容差(0.1 %)通常已经足够了. 对于状态值趋于0 的模型.如果绝对容差设得太小. 仿真时状态值在零点附近会花去太多的时间步. 6)时间尺度可能太长.减小时间间隔;
7)问题可能是刚性的.而使用的是非刚性求解器.这时可用odel5s 试一下;
8)模型使用的采样时间相互之间不成倍数关系.相互之间不成倍数的混合采样时间