当前位置:首页 >> 电力/水利 >>

Simulink——求解器(Solver)相关理论


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 的 0DE 求解器所做的某些假设.它的 主要用途是确保 s 函数遵循 Simulink 内建模块所遵循的规则.因为一致性检查会导致性能 的大幅度下阵(高达 40%), 所以一般应将它设为关的状态. 使用一致性检查可以验证 s 函数, 并有助于确定导致意外仿真结果的原因. 为了执行高效的积分运算,Simulink 保存一些时间步的结果,并提供给下一时间步使用.例 如, 某一时间步结束的导数通常可以放下一时间步开始时再使用. 求解器利用这一点可以防 止多余的导数运算. 一致性检查的另一个目的是保证当模块被以一个给定的 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 的 Fcn 模块.当模型包含有 MATLAB 的 Fcn 模块时,在仿真的 每一时间步都会调用 MATLAB 的解释器,这将大大地减慢仿真的速度.因此应尽可能地使 用内建的 Fcn 模块或者 E1ementary Math 模块. 2)模型中包含有 M 文件形式的 S 函数.M 文件形式的 S 函数也将导致在每一时间步调用 MATLAB 的解释器.可以考虑将 s 函数转换为子系统或者 c-MEx 文件形式的 s 函数. 3)模型中包含有 Memory 模块. 使用 Memory 模块使得变阶求解器(odel5s 和 odell3)在每一时 间步将阶数设为 1 阶. 4)最大的步长太小.如果改变了最大步长.可以试试重新使用缺省值(auto)运行仿真。 5)对精度要求太高. 缺省的相对容差 (0.1%)通常已经足够了. 对于状态值趋于 0 的模型. 如 果绝对容差设得太小.仿真时状态值在零点附近会花去太多的时间步. 6)时间尺度可能太长.减小时间间隔;

7)问题可能是刚性的.而使用的是非刚性求解器.这时可用 odel5s 试一下; 8)模型使用的采样时间相互之间不成倍数关系. 相互之间不成倍数的混合采样时间会导致求 解器采用足够小的步长,以保证采样时间符合所有的采样时间要求. 9)模型包含有代数循环.在每一时间步都会反复计算代数循环,因此这会大大地降低仿真的 性能. 10) 模型中将 Random Number 模块的输出传给了 Intergrator 模块. 对于连续系统, 在 Sources 库中使用 Bond—limited Noise 模块. (2)改进仿真精度 要检查仿真的精度.仿真运行一段时间以后,减小相对容差到 1e-4 或者减小绝对容差,并 重新运行它.比较两次仿真的结果.如果它们之间没有很大的差别,可以确信结果收敛. 如果经过一段时间后,仿真结果变得不稳定,可能是如下原因: 1)系统可能不稳定. 2)如果使用的是 odel5s,可能需要将最大的阶数限制在 2 阶(求解器稳定的最大阶数),或者 试试用 ode23s 求解器. 如果仿真结果看起来不是很精确,可能是: 1)对于一个拥有趋于零的状态值的模型,如果绝对容差设得太大,仿真在零状态值附近花的 步数太少.减小绝对容差的大小或者在 Integrator 对话框中为每—个状态分别调整绝对容差 的设定. 2)如果减小绝对容差不能有效地提高精度,减少相对容差的大小,减小步长,增加步数. ====================================================================== ===================

5.处理复数信号
在缺省状态下,simulink 信号值是实数.尽管如此,模型可以产生相处理具有复数值的信 号.可以采取以下任何一种方法在模型中引入复数值信号. 1)由顶层瑞口从 MATLAB 工作空间向模型中装入复数值信号数据. 2)在模型中产生一个常数模块,并设置其值为复数. 3) 产生实数信号分别对应于复数信号的实部和虚部.然后用实 - 虚复数转换 (Real-Imag to Complex Conversion)模块将各部连成复数信号. 可以用接受复数的模块来处理复数信号,大多数 simulink 模块接受复数信导作为输入。


相关文章:
Simulink 使用
求解器的详细选择请看 Simulink/Using Simulink/...Solver 1.2 输出仿真数据 Simulink 允许你输入来自...由奈奎斯特理论,仿真 时采样速率必须至少是载波频率...
Isight与simulink联合优化设置流程(1)
问题描述: 绳长 40m, 围成一矩形, 如何选取矩形 Length 和 Width,使矩形面积最大。 2. 建立 simulink 模型,如图 1 3. 求解器设置 solver options:Fixed-...
Simulink使用宝典
求解器的详细选择请看 Simulink/Using Simulink/...Solver 1.2 输出仿真数据 Simulink 允许你输入来自...由奈奎斯特理论,仿真 时采样速率必须至少是载波频率...
simulink步长设置
simulink 仿真设置 一、算法设置 1.变步长(Variable—Step)求解器 可以选择的变...Runge—Kutta(4,5)公式,Dormand—Prince 对.它是—个单 步求解器(solver)。...
simulink仿真参数设置
Runge—Kutta(4,5)公式,Dormand—Prince 对.它是—个单步 求解器(solver)。 ...将 会产生一致性错误.Simulink 比较下列量的计算值: 1)输出; 2)过零点 3) ...
simulink术语
Runge—Kutta(4,5)公式,Dormand—Prince 对.它是—个单 步求解器(solver)。...被以相同的 t 值调用多次. 如果选择了一致性检查,Simulink 置新计算某些值,并...
Matlab求解微分方程(组)及偏微分方程(组)
第四讲 Matlab 求解微分方程(组)理论介绍:Matlab 求解微分方程(组)命令 求解...Matlab 提供 了多种求解器 solver,对于不同的 ODE 问题,采用不同 solver. ...
Simulink自定义函数
Simulink 调用 M 文件在 SIMULINK user-defined function 里面有各种可以调用的自...Runge—Kutta(4, 5)公式, Dormand—Prince 对. 它是—个单步求解器(solver)...
Simulink在自动控制原理中的应用
基于种群 生态学的理论,以 Matlab/Simulink 工具,...解:(1)选择 SUMULINK 浏览器窗口,开启新的仿真...设置仿真参数 将 stop time 改成 0.01 将 Solver ...
SIMULINK仿真的运行_图文
一、设置仿真参数和选择解 SIMULINK 仿真的运行 构建好一个系统的模型之后,接...Solver 页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器 参数及...
更多相关标签:
simulink solver | simulink中solver | excel solver规划求解 | simulink求解微分方程 | simulink求解器 | 理论弯沉系数求解公式 | 问题求解理论及应用 | 理论力学问题求解器 |