1. simulink仿真系统是模拟数字的、变步长(time step)的。这句话是什么意思
因为从你引用的这句话可以看出,对simulink仿真其实并不熟悉。
simulink仿真其实本质就是建立一个数学模型。这个数学模型假设为y=f(x),其中,x就是模拟的现实时间t,y就是结果输出。
simulink借用matlab的强大计算功能,对这个数学模型求解。这种求解通常是求数值解,而不是解析解。也就是说我们需要知道的是:0-t这段时间,y的数值结果,而不是y的式子。
对一个方程求解,看起来很容易,其实其中大部分都是很麻烦的,比如说微分方程,非线性方程,刚性的方程等等。数学家为了解决这些问题,发明了多种计算方程的方法,这些方法可以在solver里面找到。
定步长和变步长是各个算法自己的特性决定的。定步长是每隔固定的时间周期计算一次,变步长是自适应的决定计算时间点。两者谁的效果最好其实并不一定。谁收敛,离真实波形最接近,就用谁。
对于实际系统而言,采用的是实际的时间,计算周期通常是固定的,计算方法一般是:输入,数据处理,输出。
控制器的参数之所以需要修改,不是因为采样周期不同,而是因为仿真中的数学模型同现实中的实际模型存在差异。
simulink是在模拟某段时间内的系统,至于是一瞬间计算完成还是花上几个小时取决于系统复杂程度。其时间是模拟的时间,而不是运行所花费的时间。而控制系统则是实际的时间。
2. 用simulink仿真,采用变步长,算法ode45,最大和最小步长为auto,仿真时间10秒,但是仿真到1秒时停止不动
很简单,改变一下仿真算法就可以了。ode45不行,就ode23t等等,如果变步长的不行,那就换成固定步长的,直到试出一个你最满意的算法来。如果所有的都不行,那就是你的仿真有问题了。
3. matlab步长如何设置
1、打开MATLAB,file-new-script,进行程序编制,例如这里画一条曲线。”clear;clc;m=1365;a=-11825/m+5.01;x=0:0.1:1.6;b=a-log10(x);y=10.^(b);p=plot(x,y,'r');”
4. 版本matlab2014a,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(定步长)是不执行积分的定步长求解器.它适用于没有状态的模型,以及对过零点检测和误差控制不重要的模型。
5. 用simulink仿真控制系统 设置的步长不同仿真结果不同 为什么
这个主要是根据你设定的算法而决定的。在很多积分环节中,如果设定的步长越大,造成的误差就越大,所以一般来说步长设置的越小,计算结果越精确,但是这样会带来仿真时间增大的问题,因此一般在满足计算精度的前提下尽可能的采用较大的计算步长。另外可以推荐使用变步长计算来比较仿真结果。
6. Simulink仿真问题
stiff solver:刚性算法。
对于初学者来说,用不着分清算法的区别,只需要挨着试一下算法,看看谁的效果好就用谁的。
在菜单栏Simulation-Model Configuration Parameters-Solver对话框里面的Solver options
可以选择固定步长和变步长算法,后面的是算法类型,下面的是算法步长。
7. matlab simulink 系统仿真步长假如想设置为0.001s,该怎么设置
在模型的,,上面点Simulation标签,,,
然后点击Configuration Parameters...选项。。
就进入了Solver设置了:在Type种可以选择定步长算法和变步长算法
Fixed-step是定步长。。里面的Fixed-step size就是步长的设置。。
Variable-step是变步长,里面只有最大步长和最小步长设置。。
8. simulink中的缺省步长是什么它和定步长、变步长是什么关系请各位大神指点。。。
缺省步长是仿真时间间隔的1/50,它是步长被设为auto时使用的值。
定步长算法使用固定的步长大小,一种情况下直接指定具体的数值,另一种情况下,如果步长设为auto,就会用缺省步长。
变步长算法的启动步长为缺省步长,如果Max
step
size设为auto,也会使用缺省步长。
Simulink模型常见的警告“最大步长为0.2秒”,那就是因为,默认的算法为变步长算法,仿真时间间隔为10秒,其1/50为0.2秒,尽管多数情况下通过步长控制机制能够得到正确结果,但有些情况下可能会有问题(典型的例子是,模型只有一个简单的Sine
wave和Scope模块,而正弦的频率为100*pi),所以通过警告的方式提醒用户加以注意。
9. 为什么simulink仿真 定步长与变步长结果不一样
这个就是计算机算法的问题了。举个例子,比如说对一个曲线积分,在曲线变化率较大的地方,计算步长适当缩小,这样可以带来较精确的积分值,如果曲线变化率较大的地方,计算步长比较大,那么造成这段积分偏离真实值比较远。此外还有截断误差等等,具体的你可以参考书籍:数值分析。
如果不一样,你可以选择比较合适的结果作为你的最终结果,一般来说,只要不是计算发散了,两者结果都差不太多。