我注意到在 Modelica 中集成延迟固定时间的脉冲输入的数值问题(使用 Wolfram System Modeler 4.3):
model PulseTest "Test FixedDelay with Pulse Input";
Modelica.Blocks.Sources.Pulse pulse(
startTime = 1,
width = 100,
period = 1/32,
amplitude = 32,
nperiod = 1
);
Modelica.Blocks.Nonlinear.FixedDelay fixedDelay( delayTime = 5 );
Modelica.Blocks.Continuous.Integrator x; // integrator for the undelayed pulse
Modelica.Blocks.Continuous.Integrator y; // integrator for the delayed pulse
equation
connect( pulse.y, fixedDelay.u );
connect( fixedDelay.y, y.u );
connect( pulse.y, x.u );
end PulseTest;
对周期 = 1/a、幅度 = a、宽度 = 100 % 的脉冲进行积分应该得到 1.0。但从图中可以看出,这不是我得到的延迟脉冲:
只有未延迟的信号才能使用 DASSL 给出正确的值。数值积分误差已经出现在period = 1/a = 1/8并且(自然地)随着a 的增长而增长。
什么是最好的补救措施?