定步长与变步长仿真出现差异一般问题
发布于 2026-08-14 16:22:10
查看 7过去4天
在对模型进行仿真的时候,先是用变步长进行了仿真,里面是数据都能正常的跑出来。而用定步长进行仿真后,数据基本可以忽略不计,仿真动画中的模型也可以说是没动。这是为什么呢?耦合模型在Excavator(挖掘机耦合模型)处
所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境
在对模型进行仿真的时候,先是用变步长进行了仿真,里面是数据都能正常的跑出来。而用定步长进行仿真后,数据基本可以忽略不计,仿真动画中的模型也可以说是没动。这是为什么呢?耦合模型在Excavator(挖掘机耦合模型)处
您好,变步长正常、定步长几乎无输出,常见原因是:定步长积分步长设置过大,导致模型中的事件或快速动态没有被准确捕获。
在 Sysplorer 中:
变步长算法(如 Dassl)会根据精度自动调整步长,并且能精确检测事件,事件发生时重启积分器,因此能比较准确地反映模型动态。
定步长算法(如 Euler)严格按固定步长推进,不能自动缩小步长,也无法精确处理事件。当前积分步内发生的事件会被延迟到步长点处理,甚至可能被漏掉,从而产生误差。如果步长过大,模型的变化发生在两个积分步之间,就可能出现输出数据很小、模型看起来“没动”的结果。
您可以尝试缩小定步长算法的步长,修改不同算法来尝试,如下图所示
