Simulink的solver

合集下载

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

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.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。

Simulink求解器 - 算法说明

Simulink求解器 - 算法说明

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.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。

simulink仿真全参数设置

simulink仿真全参数设置

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.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。

Simulink自定义函数

Simulink自定义函数

Simulink调用M文件在SIMULINK user-defined function里面有各种可以调用的自定义函数,其中embedded MATLAB function、m-file s-function 、s-function等等又可以实现m文件被simulink所调用。

如果你是初学者,不妨使用embedded MATLAB function。

注意定义好输入输出的个数。

比如sin:function y = fcn(u)y = sin(u);函数输出可以直接接simulink其它各种信号器件。

simulink仿真设置一、算法设置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。

Simulink的solver教程文件

Simulink的solver教程文件

Simulink的solver1Solver简介Solver是Simulink的仿真算法,译为解算器;选择一个合适的solver对仿真的运算时间与结果准确性非常重要。

Simulink提供了如下几种solver类型:Discrete (离散)Continuous(连续)Variable-Order(变阶数)Fixed-StepExplicit不适用√不适用Implicit(刚性算法)不适用√不适用Variable-StepExplicit√√√Implicit(刚性算法)(原文中此栏为空)√√注1:“不适用”在原文中为“Not Applicable”;注2:Fixed-step、explicit、discrete三者对应的算法是不适用,但实际Simulink是具备这种算法的,其给出NOTE中注为:fixed-step的discrtet solver不解算离散态,而是靠每个元件独立在算法之外计算离散态(The fixed-step discrete solvers do not solve for discrete states; each block calculates its discrete states independent of the solver)注3:对注2进一步展开:在solver中设置的sample time必须小于元件的smaple time,且后者要求为前者的整数倍,否则系统报错;这时候simulink用的是哪一种算法help文件中未注明——建议最好不要这样用。

1.1Variable-step vs Fixed-stepVariable-step可以在仿真过程中改变步长,提供误差控制和过零检测;固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。

Variable-step的优点Variable-step在相同的误差允许条件下,可以降低计算次数、缩短仿真时间,故应用较多;故通常使用Variable-step算法。

simulink仿真参数设置讲解学习

simulink仿真参数设置讲解学习

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.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。

MATLAB-SIMULINK最常见问题

MATLAB-SIMULINK最常见问题

• 在变步长算法中,步长大小与信号变化快慢反向 相关。 • 容许误差限的作用是控制计算精度。当误差超过 容许误差限时会自动修正步长。在迭代的每一步 (不妨设是第i次迭代),程序都会将计算出来的值 与期望值相见得出一个误差e(i),若e(i)满足: e(i)<=max(相对容许误差限*|y(i)|, 绝对容许误差 限),则表明第i次迭代是正确的,否则,程序会自 动将步长减小,再来验证上述不等式是否成立。 重复上述过程,直到上述不等式成立为止。
一、Simulink的工作原理
• 我们在Simulink中连线的过程实际上是定义 微分(差分)方程(组)的过程。而仿真 则是求微分(差分)方程(组)数值解的 过程。
二、关于刚性问题(stiff)
什么是刚性问题? 在用微分方程描述的一个变化过程中,若往往又包含 着多个相互作用但变化速度相差十分悬殊的子过程, 这样一类过程就认为具有 “刚性”。描述这类过程的 微分方程初值问题称为“刚性问题”。


七、Scope背景色设置
• 在matlab命令窗口运行下面两条命令: • set(0,'ShowHiddenHandles','on'); set(gcf,'menubar','figure'); • 之后scope会出现相应的菜单,然后edit>figure property,即可修改scope背景色 • 需要点击axis,然后修改colors • 对于scope中输出曲线的颜色,直接在 scope相应的曲线,即会弹出其ontinuous和discrete两种状态的主要差别 在于他们取值的时间问题,既在continuous 中,理论是无间隔 时间,计算机的做法可 能是很短时间内更新一次值,而discrete则 是很长时间更新一次值,这个很短和很长 的概念是他两相对来说的。 • 离散系统采用差分方程表示,和前一时刻 的状态有关,所以必须知道先前状态连续 系统采用微分方程描述 。

simulinkg过零事件

simulinkg过零事件

simulink仿真时,默认如果遇到超过1000个连续的过零事件,就会报错,如果想继续仿真,那么第一种方法就是使用自适应过零检测算法,在Simulation->Configuration Parameters->Zero Crossing Options中,把Algorithm选项选成Adaptive。

第二种方法就是把提示中那个模块的过零检测关掉。

Simulation->Configuration Parameters->Zero Crossing Control,选择Disable All。

按照这两种方法中一种操作,应该不会再出现这样的错误。

但是有时会有新的问题,就是仿真非常慢,停在某个地方不向下进行,也不报错。

如果这样,那么应当试着换一下模型的求解器,在Simulation->Configuration Parameters->Solver Options->Solver中,尝试不同的求解器。

通常,将模型离散化,然后使用离散求解器(discrete)是解决问题的一个方法。

simulink中的solver各选项表示的意思

simulink中的solver各选项表示的意思

---------------------------------------------------------------最新资料推荐------------------------------------------------------ simulink中的solver各选项表示的意思构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。

运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。

一、设置仿真参数和选择解法器设置仿真参数和选择解法器,选择 Simulation 菜单下的 Parameters 命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。

Solver 页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。

Workspace I/O 页,作用是管理模型从 MATLAB 工作空间的输入和对它的输出。

Diagnostics 页,允许用户选择 Simulink 在仿真中显示的警告信息的等级。

1、Solver 页此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。

仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如 10 秒的仿真时间,如果采样步长定为 0.1,则需要执行 100 步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。

一般仿真开始时间设为 0,而结束时间视不同的因素而选择。

1/ 6总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。

仿真步长模式:用户在 Type 后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有 Variable-step(变步长)和Fixed-step (固定步长)方式。

变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。

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

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.提高仿真性能和精度仿值性能相精度由多种因素决定,包括模型的设计和仿真参数的选择.求解器使用它们的缺省参数值可以使大多数模型的仿真比较精确有效,然而,对于一些模型如果调整求解器相仿真参数将会产生更好的结果.而且,如果对模型的性能比较熟悉,并且将这些信息提供给求解器,得到的仿真效果将会提高。

SIMULINK基础(全)解析

SIMULINK基础(全)解析
6
2、离散模块(Discrete)
– Discrete-time Integrator:离散时间积分器 – Discrete Filter:离散滤波器 – Discrete State-Space:离散状态空间系统模型 – Discrete Transfer-Fcn:离散传递函数模型 – Discrete Zero-Pole:以零极点表示的离散传递函数模型 – First-Order Hold:一阶采样和保持器 – Zero-Order Hold:零阶采样和保持器 – Unit Delay:一个采样周期的延时
▪ 所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的 系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不 必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它 们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取), 进而进行仿真与分析。
3
主要内容
Simulink 建模的基础知识 Simulink 建模与仿真 线性/非线性系统分析与仿真 子系统与模块封装技术
22
仿真算法与控制参数选择
1、Solver页
▪ 仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步 长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固 定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差 控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提 供误差控制和过零检测。
过函数进行,格式如下
▪ [t,x,y]=sim(‘模型文件名’, [to tf], simset(‘参数1’,参数值1,‘参数 2’,参数值2, …))
▪ 其中to为仿真起始时间,tf为仿真终止时间。[t,x,y]为返回值,t 为返回的时间向量值,x为返回的状态值,y为返回的输出向量值 。 – simset定义了仿真参数,包括以下一些主要参数:

simulink求解复杂单变量方程

simulink求解复杂单变量方程

simulink求解复杂单变量方程摘要:1.Simulink简介2.求解复杂单变量方程的方法3.Simulink在求解复杂单变量方程中的应用实例4.如何创建和配置Simulink模型5.结论与建议正文:Simulink是一款由MathWorks公司开发的数学软件,广泛应用于科学计算、控制系统设计、信号处理等领域。

Simulink具有强大的仿真和计算能力,可以有效地解决复杂数学问题,其中包括求解复杂单变量方程。

求解复杂单变量方程通常有以下几种方法:1.数值方法:例如牛顿法、二分法、梯度下降法等;2.符号计算方法:利用符号计算工具,如Mathematica、Maple等,直接解出方程;3.图形方法:通过绘制函数图像,观察交点求解方程。

Simulink在求解复杂单变量方程中的应用实例:假设我们有一个复杂单变量方程:f(x) = x^3 - 6x^2 + 9x - 9。

我们可以利用Simulink中的符号计算功能来求解此方程。

步骤如下:1.创建一个新的Simulink模型,命名为“EquationSolver”;2.添加一个符号变量x,并将其作为模型的输入;3.添加一个符号函数,用于表示方程f(x);4.添加一个求解器,设置求解类型为“符号”,并将其方程参数设置为符号函数;5.运行仿真,观察求解器的结果。

如何创建和配置Simulink模型:1.打开Simulink软件,点击“新建模型”创建一个新的模型;2.在模型编辑器中,添加所需的元件,如符号变量、函数、求解器等;3.使用线连接元件,形成完整的电路;4.双击元件,配置其参数,如求解器的类型、精度等;5.运行仿真,观察结果。

结论与建议:Simulink作为一个强大的数学计算工具,在求解复杂单变量方程方面具有显著优势。

通过创建和配置Simulink模型,可以方便地实现各种求解方法,并得到精确的结果。

对于科研和工程人员来说,掌握Simulink的使用方法具有重要意义。

simulink解方程组代码

simulink解方程组代码

simulink解方程组代码Simulink是一种用于建模、仿真和分析动态系统的工具。

它通常用于解决微分方程组,下面是一个示例代码,演示如何在Simulink中解方程组。

首先,在Simulink中创建一个新的模型。

然后,按照以下步骤进行操作:1. 在模型中添加一个"Solver Configuration"块,用于配置求解器选项。

选择适合你问题的求解器类型,例如ode45。

2. 添加一个"State-Space"块,用于定义方程组的状态空间表示形式。

在该块的参数设置中,输入方程组的系数矩阵和常数向量。

3. 添加一个"Scope"块,用于可视化方程组的解。

将该块连接到"State-Space"块的输出端口。

4. 连接模型的输入和输出信号。

如果方程组有外部输入,可以添加一个"Input"块,并将其连接到"State-Space"块。

如果方程组有输出,将"Scope"块的输出连接到模型的输出端口。

5. 配置模型的参数,例如仿真时间范围、步长等。

6. 运行模型。

Simulink将使用所选的求解器来解方程组,并将解的结果显示在"Scope"块中。

需要注意的是,根据具体的方程组和求解需求,上述步骤可能需要进行适当的调整和修改。

此外,Simulink还提供了许多其他功能和工具,可用于更复杂的方程组求解和系统分析。

希望以上信息对你有所帮助!如果你还有其他问题,我将很乐意为你解答。

各solver的含义以及适用范围

各solver的含义以及适用范围

simulink里的各solver的含义以及适用范围
simulink里的各solver的含义以及适用范围:
总结:ode45绝对是第一选择,当你弄不清情况的时候都可以选它。

但是如果遇到刚性系统时,运算会很慢很慢,这时候你可以选择ode23tb算法(有关资料显示这个算法收敛速度较快)。

如果还不行,那你就可以考虑选择discrete方式了。

当然,这是万金油式选择,对我这种菜鸟来说这样足够了。

但如果对算法有研究的大湿们,当然可以具体情况具体分析了。

注:刚性系统是指描述系统的微分方程中包含有数个(大于等于2)相互作用的变量且各个变量变化速度十分悬殊的系统。

(感谢会员e080067。

simulink中的solver各选项表示的意思

simulink中的solver各选项表示的意思

构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。

运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。

一、设置仿真参数和选择解法器设置仿真参数和选择解法器,选择Simulation菜单下的Parameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。

Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。

Workspace I/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出。

Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。

1、Solver页此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。

仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。

一般仿真开始时间设为0,而结束时间视不同的因素而选择。

总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。

仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step (固定步长)方式。

变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。

固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。

用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法。

变步长模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。

ode45:缺省值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。

simulink步长设置

simulink步长设置

simulink仿真设置一、算法设置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不是很有效的刚性问题,可以用它解决。

Simulink的solver

Simulink的solver

Simulink的solver1Solver简介Solver是Simulink的仿真算法,译为解算器;选择一个合适的solver对仿真的运算时间与结果准确性非常重要。

Simulink提供了如下几种solver类型:Discrete (离散)Continuous(连续)Variable-Order(变阶数)Fixed-StepExplicit不适用√不适用Implicit(刚性算法)不适用√不适用Variable-StepExplicit√√√Implicit(刚性算法)(原文中此栏为空)√√注1:“不适用”在原文中为“Not Applicable”;注2:Fixed-step、explicit、discrete三者对应的算法是不适用,但实际Simulink是具备这种算法的,其给出NOTE中注为:fixed-step的discrtet solver不解算离散态,而是靠每个元件独立在算法之外计算离散态(The fixed-step discrete solvers do not solve for discrete states; each block calculates its discrete states independent of the solver)注3:对注2进一步展开:在solver中设置的sample time必须小于元件的smaple time,且后者要求为前者的整数倍,否则系统报错;这时候simulink用的是哪一种算法help文件中未注明——建议最好不要这样用。

1.1Variable-step vs Fixed-stepVariable-step可以在仿真过程中改变步长,提供误差控制和过零检测;固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。

Variable-step的优点Variable-step在相同的误差允许条件下,可以降低计算次数、缩短仿真时间,故应用较多;故通常使用Variable-step算法。

【转@总结】simulink常微分方程的数值求解~ode45

【转@总结】simulink常微分方程的数值求解~ode45

【转@总结】simulink常微分⽅程的数值求解~ode45ode45,常微分⽅程的数值求解。

MATLAB提供了求常微分⽅程数值解的函数。

当难以求得微分⽅程的解析解时,可以求其数值解,Matlab 中求微分⽅程数值解的函数有七个:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb在⽤odesolver(ode45, ode15s, …)来解微分⽅程的时候,最基本的⽤法是:[t, y] = odesolver(odefun, tspan, y0);这⾥的odefun是待求的微分⽅程。

那么odefun中⼀般会含有多个系统参数,通常要通过改变参数来观察系统动态的变化。

那么如何在调⽤odesolver的时候传递参数呢?以前,我都是⽤全局变量的写法,将参数在主函数和⼦函数中分别都定义为global,这样做有⼀个弱点:针对系统不同,参数的表达与数量有变化的时候,程序通常要做变化,通⽤性不强。

那么最好是在调⽤的时候进⾏传递,⽅法如下:实际上很简单,就是将⼀切其他的参数都写在括号中就可以了!但是要注意的是:odesolver的第四个参数⼀定是options,也就是对微分⽅程添加补充功能的参数(类型为structure,要⽤odeset来定义),那么其他系统参数就只能从第五个参数写起。

也就是说,第四个参数不可以为空,⼀定要定义某种option加进去,或者⽤使⽤空⽩矩阵(placeholder)。

这样调⽤的时候格式就是:[t, y] = odesolver(odefun, tspan, y0, options, parameter1, parameter2);或者[t, y] = odesolver(odefun, tspan, y0, [], parameter1, parameter2);然后定义微分⽅程的时候也要有参数的地⽅:function dydt = odefun(t, y, parameter1, parameter2)dydt = [ eqn-1; eqn-2; …];就OK了。

matlab simulink求解微分方程

matlab simulink求解微分方程

MATLAB Simulink是MATLAB的一个强大的图形用户界面,可用于设计和模拟动态系统。

在Simulink中,可以使用不同的工具和库来求解微分方程,包括但不限于:1. **Simulink Coder**:这是一个用于生成嵌入式代码的强大工具,可以用于解决微分方程。

2. **Simulink Solver**:这是Simulink自带的一个求解器,可以用于解决常微分方程。

3. **Simulink Simulation**:这是Simulink的基本求解器,可以用于解决各种动态系统问题,包括微分方程。

以下是一个简单的例子,说明如何在Simulink中解决微分方程:1. **打开Simulink**:在MATLAB中,点击“新建”->“Simulink 模型”。

2. **创建模型**:在Simulink编辑器中,你可以添加各种模块来构建你的模型。

在这个例子中,我们首先需要一个模块来表示我们的微分方程。

我们可以使用`Simulink.Continuous`模块来表示一个连续系统,然后在该模块的参数设置中输入我们的微分方程。

例如,如果你的微分方程是 `dy/dx = f(x, y)`,你可以在参数设置中输入这个方程。

3. **设置初始条件和边界条件**:你可能还需要设置初始条件和边界条件。

你可以通过添加`InitialCondition`和`BoundaryCondition`模块来实现这一点。

4. **设置求解器**:在Simulink编辑器的顶部菜单中,选择“模型配置参数”。

在弹出的窗口中,选择“求解器”选项卡,然后选择你需要的求解器。

例如,你可以选择“auto”让Simulink自动选择合适的求解器,或者你可以选择“ode45”来使用MATLAB内置的求解器。

5. **运行模拟**:一旦你设置了所有必要的参数和模块,你就可以运行模拟了。

在Simulink编辑器的顶部菜单中,选择“模拟”->“开始”。

dspace simulink模型设定

dspace simulink模型设定

1、Solver界面设定:
1、Start Time: 一般设定为0
2、Stop Time:如需程序一直运行,设定为inf;如果需程序运行特定的时间,如100s,则设定为100
3、Solver Type:一定为Fixed-step
4、Solver:无需特殊设定,一般ODE1最简单,会影响积分算法
5、Fixed Step Size:设定为固定值,不需要太小,代表程序运行步长,典型值为0.001或0.0001
2、优化界面设定:
1、Block reduction:勾选去掉
2、Conditional input branch execution:勾选去掉
3、信号参数界面设定:
1、Inline parameters:勾选去掉
2、Signal Storage reuse:勾选去掉
4、代码生成界面设定:
1、System Target file:选择相应硬件板卡的tlc文件,如硬件为DS1103,就选择RTI1103.TLC
5、仿真选项界面设定:
1、initial simulation state:程序下载后初始状态设定,可在RUN,PAUSE,STOP中选择
2、task configuration:任务配置设定,处理simulink模型中不同任务的优先级,overrun设定等细节
6、下载选项设定:
1、load application after build:模型编译后自动下载。

该选项需从matlab环境寻找注册的硬件信息,但大部分情况下编译时不会连接硬件。

不建议自动下载,勾选去掉。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Simulink的solver
1Solver简介
Solver是Simulink的仿真算法,译为解算器;选择一个合适的solver对仿真的运算时间与结果准确性非常重要。

Simulink提供了如下几种solver类型:
注1:“不适用”在原文中为“Not Applicable”;
注2:Fixed-step、explicit、discrete三者对应的算法是不适用,但实际Simulink是具备这种算法的,其给出NOTE中注为:fixed-step的discrtet solver不解算离散态,而是靠每个元件独立在算法之外计算离散态(The fixed-step discrete solvers do not solve for discrete states; each block calculates its discrete states independent of the solver)
注3:对注2进一步展开:在solver中设置的sample time必须小于元件的smaple time,且后者要求为前者的整数倍,否则系统报错;这时候simulink用的是哪一种算法help文件中未注明——建议最好不要这样用。

1.1Variable-step vs Fixed-step
Variable-step可以在仿真过程中改变步长,提供误差控制和过零检测;固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。

Variable-step的优点
Variable-step在相同的误差允许条件下,可以降低计算次数、缩短仿真时间,故应用较多;故通常使用Variable-step算法。

Fixed-step的应用场合
在一些步长不可变的条件下,必须使用Fixed-step。

Simulink的help中举例:当仿真模型来自于一个实时的计算机系统。

1.2Discrete vs Continuous
如何选择
这里讲的离散与连续系统,和控制理论中的离散、连续系统是两个概念。

这里的离散,是在计算过程中人为的降低了计算的步长,以增加误差为代价,换来计算时间的缩短。

实际严格地说,无论是什么模式,电脑计算始终是离散的。

在现在,计算机的速度已经很快了,而且我们做的仿真也不是特别复杂,一般在几分钟内能够得到仿真结果,通常使用连续的计算模式。

具体用法
当选择了系统是离散/连续后,需要设定仿真模型的状态。

离散态的仿真模型必须使用离散算法;对连续态的仿真模型亦然。

SimpowerSystems中的应用
在SimpowerSystems工具箱中,除了solver,在powergui也可以设定连续/离散;前者是设定算法,后者是设定仿真模型的状态,二者应该一致。

——当powergui设定为离散、solver设定为连续算法时,Simulink会将算法默认改为离散算法;但反之会报错。

一种特殊情况:solver、powergui均设定为连续,但在模型中的某个器件设定为离散态(SimpowerSystems中,只有一部分source可以设定连续/离散),此时是什么算法呢?——没有弄清楚,建议尽量不要这样用。

1.3Explicit vs Mplicit
即系统中的各变量是否具有相同的时间尺度;通常一个电力电子系统是刚性系统。

1.4Fixed/Variable-Order
通常,阶数越高,运算结果的精度越高;当然,运算速度越慢。

在计算误差要求严格的情况下,变阶数的算法在运算过程中可以改变阶数,故更有效,如ode113、ode15s——不要忽视由此造成的运算速度变慢。

2Fixed-step solver
概述
理论上,Fixed-step连续解算器能够处理不连续的模型,但需要增加不必要的计算量。

因此,即使你指定了一个连续解算器,Simulink仍将采用离散解算器处理不连续的模型;但如果你试图用fixed-step离散求解连续的模型,会报错。

Fixed-step在Simulink中默认的算法是3阶的;——中等计算精度,既能处理连续、又能处理离散模型。

如果不设定采样时间,默认是仿真时间/50。

Fixed-step没有误差、过零检测,故不能保证仿真结果的精度。

Fixed-step提供了一个刚性系统的算法:ode14x。

算法选择步骤
1.确定并设置系统的允许误差;
2.首先选择variable-step的ode45进行仿真;如果运行很慢,系统可能是刚性的,需
要更换一个刚性算法。

这次仿真可以估计出一个合适的fixed step size。

3.使用ode1、默认的步长进行仿真;与采用ode45的结果进行对比,如果精度相同,
说明ode1是合适的算法——在精度允许的情况下,ode1是最简单、仿真时间最短的。

4.如果ode1不适用,从ode2~ode8依次进行试验,直至找到精度允许、阶次最低的
算……
5.一个效率最高的做法是:折半查找——选择ode3。

如果ode3足够精确,试验一下
ode2与ode1,在ode2精度不满足要求时,ode3就是最好的算法。

反之,试验ode4~ode8。

3Variable-step solver
概述
变步长算法的size取决于局部的误差。

Explicit Continuous Variable-Step Solvers
⏹ode45在第一次仿真时,是最好的测试算法,故Simulink将其设定为默认算法——
davy:实际在多数情况下,ode45是最佳选择;
⏹ode45比ode23要更快、更精确;如果ode45仿真速度很慢,说明系统可能是一个
刚性系统;——davy:这是一个跑龙套的算法,通常用不着;在系统误差要求不严格、求解问题简单时,可能会更有效。

⏹当对计算误差要求更严格时,ode113更有效。

Implicit Continuous Variable-Step Solvers
Solver Reset Method
对于ode15s, ode23t, and ode23tb这三种算法,需要对Solver Reset Method 进行设置,有两种选择: Fast and Robust。

前者不对Jacobian矩阵进行验算,而后者反之。

前者计算速度快,但可能为了一个确定的结果使用一个很小的步长——为了测试这种可能性,使用Fast、Robust两种模式分别进行运算,如果结果没有区别,可以放心的使用Fast;如果有明显差异,试着降低fast模式的步长。

⏹o de15s是一个变阶数的多步解算器。

如果遇到刚性的问题,或使用ode45无法计算、
效率较低时,可以尝试ode15s;通常,先用2阶进行测试——如果精度不满足要求,增大阶数。

⏹ode23s是一个定阶的单步解算器,在允许误差较大的某些情况下,比ode15s更有
效率。

⏹ode23t是一种定阶的单步解算器,采用自由内插的梯形算法。

如果系统有一定的刚
性,又要求解没有数值衰减时,可以使用这种方法。

⏹ode23tb,类似于ode23t,在允许误差较大的某些情况下,比ode15s更有效率。

4Solver应用
通常,选择可变步长的算法:
非刚性系统首选ode45;
刚性系统首选ode23tb;。

相关文档
最新文档