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

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——求解器(Solver)相关理论
Simulink——求解器(Solver)相关理论_电力/水利_工程科技_专业资料。Simulink——求解器(Solver)相关理论1.变步长(Variable—Step)求解器可以选择的变步长求解器有:...
Simulink的solver
2 Fixed-step solver 概述理论上,Fixed-step 连续解算器能够处理不连续模型,但需要增加不必要的计算 量。因此,即使你指定了一个连续解算器,Simulink 仍将采用...
simulink中的solver各选项表示的意思
simulink的solver各选项表示的意思_信息与通信_工程科技_专业资料。构建好一个...这种解法器适用于求解适度 stiff 的问题而用户又需要一个无数字振荡的解法器的...
Simulink 使用
求解器的详细选择请看 Simulink/Using Simulink/...Solver 1.2 输出仿真数据 Simulink 允许你输入来自...由奈奎斯特理论,仿真 时采样速率必须至少是载波频率...
几种仿真实例浅析
求解器采用多刚体系统动力学理论拉格朗 日方程...对应数学模型,在 ADAMS/SOLVER[2]中定义相应 ...Simulink 具有适应面广、结 构和流程清晰及仿真精细...
Simulink使用宝典
求解器的详细选择请看 Simulink/Using Simulink/...Solver 1.2 输出仿真数据 Simulink 允许你输入来自...由奈奎斯特理论,仿真 时采样速率必须至少是载波频率...
关于警告信息的解决措施
hence Simulink is using the solver 'FixedStepDiscrete' instead of solver 'ode...仿真参中设置仿 真步长,设置仿真步长后警告信息将消失,或者采用自动求解器参数...
fluent求解器资料
两种格式求解器的主要不同点在于对于耦合方程 线性...具体情况可 以查看 Fluent 理论手册。 特点:对于...the default setting is choosing for solver: FLUENT...
实验1 电力系统实验
熟悉 MATLAB/SIMULINK 及 PSB,会用他们建立电力系统...算法和精度选择的不适合,将使仿真结果偏离理论与实际...Solver options/Type 一般选取 Variable-step , ...
基于matlab和simulink的系统仿真
基于matlab和simulink的系统仿真_工学_高等教育_教育...同时也运用理论知识与实际电路设计相结合了起来,通...{ Simulink.SolverCC { MaxOrder ExtrapolationOrder ...
更多相关标签:
simulink solver | 规划求解 solver | excel solver求解方法 | simulink求解微分方程 | simulink求解器 | 利用simulink求解 | simulink求解方程组 | 理论力学问题求解器 |