首页 > 解决方案 > Modelica中时间变量的平均值

问题描述

我有一个简单的模型如下,我打算计算 x 导数 wrt time(der(x)) 的平均值。

model Average
  Real x;
initial equation 
  x = 2.0;
equation 
  der(x) = x + 5;
  annotation (experiment(StopTime=10, __Dymola_Algorithm="Dassl"));
end Average;

关键是它是原始代码的简化代码,其中“x”由 CombiTimeTable 给出。我需要执行几个模拟(通过几个文本文件作为 CombiTimeTable 的输入),它们没有相同的行数(不同的持续时间)。换句话说,StopTime 因情况而异,例如在此特定情况下,StopTime 为 10 秒。有没有办法使用一般方程来计算 der(x) 的平均值。如果有人可以提供帮助,我将不胜感激。

标签: variablesaveragemeanmodelica

解决方案


假设你想要 der(X) 的平均值,你就不能将平均值计算为 (x2-x1)/(time2-time1) 吗?

如果您想要数值解而不是解析,请使用 Modelica.Blocks.Math.Mean。请注意,它对信号进行采样,因此会出现一些数字错误。为了提高准确性,您需要减少采样周期,但这样做会增加模拟系统所需的时间。如果您不需要在模拟期间使用平均值,也可以使用结果文件的后处理。


推荐阅读