Sysplorer 定步长算法,大步长失败,缩小步长成功,为什么?
技术分享
发布于 2025-08-06 16:56:19
查看 1过去300天
这个现象看起来是正常的,步长越大,越容易发散,不收敛,残差大于精度要求后,仿真失败,可以切换变步长算法进行计算。
原因解释:
变步长方法是根据用户指定的精度由算法自行选择合适的步长,因此变步长算法是有精度保证的,即可以保证误差不超过用户指定的精度值。由于积分方法的局部截断误差(与精度紧密相关)是与步长相关的,定步长算法是根据用户指定的步长推进积分计算,因不能自行改变步长故而无法有效控制截断误差,因此定步长算法需要用户选择合适的积分步长实现精度控制,算法本身是不提供精度保证的。
定步长算法是严格按照用户指定的步长推进积分计算,不能精确处理模型中的事件,而只能近似处理,其做法是将当前一步之内发生的事件均延迟到步长点时刻进行处理,这就导致可能存在误差,仿真越往后,误差越大,收敛不了,结果就发散了
例如:假设步长为0.1秒,那么从0至0.1秒的第一步内,若在0.04秒与0.05秒两个时刻均有事件发生,但由于步长的限定,第一步即需要计算至0.1秒,故只能将事件延迟到0.1秒进行处理。这种非精确的事件处理方式会导致仿真结果存在一定的误差。消除误差的有效方式是缩小积分步长,但步长缩小会增加计算量,降低仿真速度。
所以结论就是,一些模型不一定适合使用定步长去仿真,因为不能保证其精度可控。
所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境