专栏
标签
变步长算法计算结果存在偏差
技术分享
发布于 2025-08-06 16:43:34
查看 1过去300天

问题现象

在使用变步长算法进行仿真时,模型计算结果出现偏差,有可能是什么原因呢。

解决方法

原因:有可能是模型中使用NoTimeEvent参数,该参数表示在读取数据的时候不触发事件,加之选择的是变步长算法,变步长只有在检测到事件时候才会重启积分器,这之间的值通过插值算出,导致插的值不对,因此需要使用在读取数据触发事件的方法,才能使用变步长,或者使用定步长算法,步长和读取数据是一个步长。

解决方法:

将NoTimeEvent参数,修改为Always,该参数表示读表获取数据的时总是触发时间事件;这使得使用变步长算法时,每读一次数据都会触发时间事件,并使得积分器重启,从而不存在因步长过大插值导致仿真结果误差过大的情况。

仿真结果正常。

说明:

变步长算法下变量值错误的原因:变步长算法相比定步长算法会进行精确事件检测,当触发事件时重启积分器,而当未检测到模型发生事件时,会试图增加积分步长,并通过插值算出积分步中间越过的通讯时间点的值。

所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境
系统建模

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天