我试图使用梯形规则在 Simulink 中设计我自己的离散时间积分器的简单实现。这是我努力的结果(考虑我使用 1 作为时间积分间隔):
然后,为了仔细检查我是否做对了所有事情,我将结果与标准 Simulink 离散时间积分器模块(配置为使用梯形规则当然):

当我让步长在时间 1 上升时,一切运行良好(自定义和默认积分器块都以 0 作为初始条件):
而随着时间 0 的步长上升,我得到了两个积分器块响应之间的差异:
- 自定义块:@Integral(t=0)=0.5; @积分(t=1)=1.5
- 默认块:@Integral(t=0)=0; @t=1 积分(t=1)=1
我认为这取决于我的自定义块在 t=0 和初始条件 = 0 之间积分(即在 0 和 1 之间应用梯形规则,因此得到 0.5)。
解决此问题并使我的自定义块在零时间也显示与默认块相同的行为的最佳方法是什么?我缺少任何参数/设置吗?
谢谢!


