【问题标题】:time derivative of a variable as a signal and not as a function变量作为信号而不是函数的时间导数
【发布时间】:2014-05-11 23:11:30
【问题描述】:

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

【问题讨论】:

  • 考虑添加一些换行符并使用编辑器的code 格式化选项以使其更具可读性。

标签: modelica derivative dymola


【解决方案1】:

您无法在 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))

【讨论】:

  • 谢谢你的回答,其实我需要实时的斜率值。我用Modelica.Blocks.Continuous.Derivative x_dot(start=1);。我给 x 作为输入,得到x_dot.y 作为导数没有问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多