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