modelica中的数值抖动

时间:2013-08-02 15:09:10

标签: modelica dymola

我在Dymola遇到了一个有趣的现象,我认为它的原因可能来自我的模型,但我不知道这会导致什么样的事情。非常感谢,如果有人能给我一点暗示。

我的问题是,当我绘制结果时,模拟将在某个时间“停止”(它正在运行但非常缓慢),如果误差在容差范围内,则测试的块以非常大的频率不断产生事件。

从“在容差”块中追溯,它是标准库中的“错误块”,它有3个信号

u1 - 传感器数据, u2 - 参考值, y - 输出信号[u1-u2 = y]

(很遗憾,由于声誉不佳,我无法上传我的情节)

这是我放大(很多次)这些信号的“尾部”(他们停止运行的地方)时发现的,

对于 error.y 信号: 我可以在我的errorTolerance目标周围看到非常小的(1e-10)但高频率的抖动,但仅在模拟开始运行的尾部非常慢。它的行为就像一个锯齿形信号。

对于 u1 (传感器数据)信号: 我放大到与信号error.y相同的比例,但我 NOT 看到任何喋喋不休。

对于 u2 (参考)信号: 一直不变

我想知道什么样的事情可能导致这种情况,因为错误块只是一个简单的减去计算,它怎么会引起这种喋喋不休。谢谢!

HY

1 个答案:

答案 0 :(得分:2)

你所描述的听起来就像是喋喋不休。您真正需要注意的情况是,事件一侧的系统动态将其推向事件。换句话说,如果x> c,der(x)<= 0并且如果x <= c,则der(x)> = 0.另一种情况是这样的事件是否发生在平衡点。

你说“什么样的事情可能导致这种情况”,但在我看来(至少从我能理解你的描述中),答案是显而易见的。这是你的错误块。你说它“只是一个简单的减去计算”,但如果块中有任何类型的条件表达式(我假设有),则会触发一个事件。

根据您的描述,我的猜测是,您的系统正好在条件语句从true转换为false的位置达到平衡点。因此,此时解决方案中的数字噪声会导致它在每次触发事件的过程中来回穿越。