如何在 Modelica 中描述 dy/dx 的导数?
How to describe a derivative of dy/dx in Modelica?
我正在研究一个包含 dy/dx 的导数的简单模型,但是在 Modelica 中,我不能直接写出这个方程,我可以使用 x=time
和 [= 的组合15=],但我认为这是一种妥协,因为 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
给定焓 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)+...
我正在研究一个包含 dy/dx 的导数的简单模型,但是在 Modelica 中,我不能直接写出这个方程,我可以使用 x=time
和 [= 的组合15=],但我认为这是一种妥协,因为 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
给定焓 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)+...