【问题标题】:How to describe a derivative of dy/dx in Modelica?如何在 Modelica 中描述 dy/dx 的导数?
【发布时间】:2020-12-09 13:09:49
【问题描述】:

我正在研究一个包含 dy/dx 导数的简单模型,但在 Modelica 中,我不能直接写这个方程,我可以使用 x=timeder(y) 的组合,但我认为这个由于 Modelica 语言的限制,是一种妥协。

我的问题是: 有没有其他更好的方法来描述 Modelica 中的导数?

代码如下:

model HowToExpressDerivative "dy/dx=5, how to describe this equation in Modelica?"
  Real x,y;
equation 
  x = time;
  der(y) = 5;
end HowToExpressDerivative;

我也试过用der(y)/der(x)来表达dy/dx,但是当x等于time^2时出现错误。

model HowToExpressDerivative "dy/dx=5, how to describe this equation in Modelica?"
  Real x,y;
equation 
  x=time^2;
  der(y)/der(x)=5;
end HowToExpressDerivative;
Error: The following error was detected at time: 0

Model error - division by zero: (1.0) / (der(x)) = (1) / (0)

Error: Integrator failed to start model.
... "HowToExpressDerivative.mat" creating (simulation result file)

ERROR: The simulation of HowToExpressDerivative FAILED

【问题讨论】:

标签: modelica dymola


【解决方案1】:

给定焓 h 和曲柄角 phi 您可以将 dh/dphi=... 替换为:

  der(h)/der(phi)=...

但是,即使正确,该公式也会在引擎静止时失效 (der(phi)=0),因此并不理想。

另一种方法是重写公式。仔细观察,公式似乎是:

  dh/dphi=(\partial a/\partial T)*dT/dphi+...

这表明它们可以重写为:

  der(h)=(\partial a/\partial T)*der(T)+...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多