Simulink解方程不收敛,Inf or NaN
在使用Simulink解方程组的时候,总是出现仿真停止,错误如下:Derivative input 1 of '.../Integrator1' at time 6.045339917519453 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances).
尝试过:
1、提高错误公差,使用更小的步长,效果不明显!
2、对积分模块的初值设为1e-10时,可以延长一定的积分时间,但是效果不明显!
疑问:
提示错误是否因为,有分母为零的除法。模型中使用了除法、积分模块、switch模块和一些常用模块,没有使用微分模块。如果把积分状态输出来,从积分前,变量的状态变化上能说明什么问题?
期待您的回复!谢谢 回复 1 # 雨人 的帖子
我不是很熟悉这个Simulink模块,但从你描述的问题结合我自己编程中遇到的问题,感觉可能是:
1. 看你报错是在时间6.045左右,可能是你的求解的方程可能本身就是不稳定的。
2. 你可以看下相邻几步积分时间,看积分是不是急剧的变化,如果是的话可能是积分中有些间断点吧,造成不连续也很有可能导致发散不收敛。以前自己在求解N-S方程时就出现过某些边界点因施加边界条件不对而导致这个系统发散不收敛!
仅是一点意见,不见得对你有用,你可以参考下。
1.版块不适当!? 但那边没版主, 情有可原
2."Derivative input 1" vs "没有使用微分模块" !? why?
3.贴下block图, 或许好判断
有几位高手, 静待他们出现
再次感谢两位前辈的指导!
meiyongyuandeze推断的有道理,我的方程确实是不太稳定,我建立的是一个冲击副模型,在运动副达到接触时,要产生很大的冲击力,运动副分离时,冲击力为零。由于几个动力学方程之间存在耦合,考虑到代数环比较难处理,就手动完成了二阶导数的解耦工作。但是方程仍然有运动副接触和分离两个状态,所以系统在某个时间下确实是不稳定的。还希望meiyongyuandeze的进一步指导!
ChaChing前辈好!
这里的"Derivative input 1" vs "没有使用微分模块" !? why?
"Derivative input 1" 是指积分模块的输入状态,也即用于积分运算的加速度状态,模型中确实没有使用微分模块。由于simlink的方块图太复杂,我做了三层子系统,不方便贴出来,我就把经常提示出错的一个子系统拿出来,不过感觉用于判断错误原因可能远远不够!
感觉simulink出错的问题,让大家找错实在是有点过分,因为错误的原因可能过于广泛,发帖在这里,只是想让各位路过的前辈,给出在遇到类似问题时,自己的处理方法,或者给一个解决的建议,再次感谢ChaChing的关注! 回复 4 # 雨人 的帖子
sorry, 看快了些, 没注意到Derivative input 1 of '.../Integrator1' 后面的字眼!
几十年没碰simulink了, LZ这个的确满复杂
猜测可能分母为零(除法)或累加成大数(积分)
增加几个图, 看看可能是何情况 回复 5 # ChaChing 的帖子
ChaChing工作到这么晚啊!多谢您的持续关注。
感觉这个问题,好像影响因素很多,找原因有点困难。考虑到只能我自己才能调试模型,大家只能推测出错的原因。我想还是等遇到类似错误的人,路过,指导吧 雨人 发表于 2011-4-10 12:17 static/image/common/back.gif
回复 5 # ChaChing 的帖子
ChaChing工作到这么晚啊!多谢您的持续关注。
我也出现类似的问题 搞不懂为什么晕呼呼 还是要从方程本身入手,看看自己的方程是否有问题,多检查几次。另外求解器的设置,方面比较多,你多试试了 雨人 发表于 2011-4-12 18:57 static/image/common/back.gif
还是要从方程本身入手,看看自己的方程是否有问题,多检查几次。另外求解器的设置,方面比较多,你多试试了
你解决问题了吗? 回复 9 # wlovemfw8668 的帖子
我的解决了,但是也没有找到问题的原因。我是从方程本身入手,是方程本身出错了。
希望高手路过,给出该问题的一般解决思路!
页:
[1]