变量的时间导数作为信号而不是函数

时间:2014-05-09 09:32:55

标签: modelica derivative dymola

在Modelica中,我有一个变量x,它取决于(a,b,c)。对于给定的模拟时间,其图(x,时间)看起来平滑且连续。我希望得到这条曲线的斜率而不必明确区分der(x),因为我得到关于a,b或c的偏导数的误差。这可能吗?换句话说,我想要最终输出的斜率,而不必区分它背后的内容。

2 个答案:

答案 0 :(得分:2)

您无法在Modelica中执行此类操作,因为您无法访问集成商,之前的时间或类似情况。您可以通过使用采样获得Modelica代码的近似值,但这会略微改变模拟结果并可能成为性能瓶颈:

model M Real signal = time; Real approx_der(start=0); discrete Real x(start=0); discrete Real t(start=0); equation when sample(0.1,0.1) then x = signal; t = time; approx_der = (x-pre(x)) / (t-pre(t)); end when; end M;

简单地使用后处理更容易。以八度,matlab或类似方式加载结果文件并绘制近似导数: plot(time(2:length(time)),diff(y) ./ diff(time))

答案 1 :(得分:2)

Modelica.Blocks.Continuous.Derivative x_dot(start = 1)这提供了导数的近似值。我给了x作为输入,得到了x_dot.y作为导数而没有任何问题。