matlab simulink中积分器的积分区间下限t0是怎么设定的?

做了个实验,发现我对积分器的认识有问题。。。如图,被积函数是e^(-t),对积分器做了点设置,限制了输出上限为1,并设置了溢出提示,这个提示接到示波器上。当输出值大于设定... 做了个实验,发现我对积分器的认识有问题。。。如图,被积函数是e^(-t),对积分器做了点设置,限制了输出上限为1,并设置了溢出提示,这个提示接到示波器上。当输出值大于设定值时,示波器会输出1。按理说被积分后该是1-e^(-t),不能大于1,示波器该是一直为0。
但结果就像图里的一样,大于1了。
看了help,说积分器的积分区间是t0到t,并不是想象的从0到t。想问一下这t0是指什么,怎么设定?
展开
 我来答
tianxiawulang
推荐于2016-02-03 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2656万
展开全部

楼上的回答有点想当然了(说的比较直接,抱歉)。

  1. 这个问题是由浮点数的表示精度引起的。尽管理论上积分结果不会大于1,但会很接近1,由于浮点数的表示精度所限,在t较大时,就会等于1,而只要等于积分器的饱和值,Saturation port就会输出1。

  2. 积分器的积分区间t0的问题:是指模型仿真参数设置中,开始时间你设的不是0。

     

  3. 附加讨论:关于何时Saturation port会输出1:

    照理说,应该是exp(t)<=eps,这样算出来t大约为36秒,但从仿真结果看,在十几秒的时候就饱和了。我的理解,这可能受到仿真参数中误差限制的影响——默认绝对误差为1e-6,这样求出来-log(1e-6)大约是13.8秒。当然,结果还会受到相对误差的影响,更深入的分析您感兴趣的话可以继续,我只给提供一点思路,抛砖引玉。

更多追问追答
追问

字数不够。。

 

追问1-----------------------------------

谢谢帮助   其实它不是等于1,而是大于1。如果用1减去那个积分再在示波器中显示,会发现t大于一定值时输出了负数。

最核心的问题就怎么才能得出正确的数学上的答案。。

如果t0是指开始的时间,那应该是0。源的开始时间没改动。

 

如此看来,问题就出在积分器的算法上了。。。

追答
  1. 试了一下,你说的结果大于1的情况确实会出现。这是数值计算不能避免的事,可以使用我上面所说的误差控制将其控制在很小的范围(例如10^-14量级)。

  2. 如果关注的不是可以将误差控制到多么小,而是在意误差的极性,那就只能建议你采用更好的表达方式了——例如,对于现在研究的这个问题,你既然知道积分得到的结果是1-e^(-t),那么不妨直接用fcn模块实现这个表达式。

  3. 前面所说的开始时间t0,不是指Ramp模块的,而是整个模型的仿真时间中的Start time。尽管这个t0对解决你的问题没有什么作用,但既然你的提问是关于t0的,那就有必要再说明一下。

ruifengcao
2012-11-09 · TA获得超过9491个赞
知道大有可为答主
回答量:3579
采纳率:33%
帮助的人:2082万
展开全部
你想的有问题,e^(-t)是一个大于1的函数,那么积分时间越长,积分值将越大。大于1是肯定的。这个积分不是数学上的积分。
追问

不懂啊,数学上e^(-t)当t大于0时小于1吧。 ,t趋于无穷才等于1啊。

积分器help里说输出值是这个公式得到的。也就是t0指什么?

 

或者要算该怎么做? 求大神帮忙下   many thanks

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式