1

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

4

2 回答 2

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;

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

于 2014-05-10T08:26:07.593 回答
2

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

于 2014-05-11T15:11:30.973 回答