Modelica 如何对时间以外的其他变量进行求导?

Modelica 如何对时间以外的其他变量进行求导?,modelica,Modelica,我只是从莫代利卡开始。我知道有一个内置的时间导数运算符[der(expr)]。如果我必须用其他变量进行求导,那怎么做呢?例如:如果我必须对w.r.t进行求导,变量“x”是如何形成的?例如,如果你需要时间导数以外的东西,我想你必须显式地声明导数 y = x^2; der_y = 2x; 变量deruy应该在模型的前面声明,y和x也应该声明。如果你想要一个双导数,比如说,那么你可以这样做 dder_y = 2; 使用变量dder_y,如前所述,提前清除 在制作Modelica模型时,我并

我只是从莫代利卡开始。我知道有一个内置的时间导数运算符[der(expr)]。如果我必须用其他变量进行求导,那怎么做呢?例如:如果我必须对w.r.t进行求导,变量“x”是如何形成的?

例如,如果你需要时间导数以外的东西,我想你必须显式地声明导数

y = x^2;    
der_y = 2x;
变量deruy应该在模型的前面声明,y和x也应该声明。如果你想要一个双导数,比如说,那么你可以这样做

dder_y = 2;
使用变量dder_y,如前所述,提前清除


在制作Modelica模型时,我并不经常觉得需要时间导数以外的其他导数。话虽如此,我本人对Modelica还是很陌生的,所以很可能有一天我会这么做

还可以使用注释
导数=
告诉工具使用哪个函数来获取函数的导数:

示例来自:


您可以在第12.7.1章中找到更多信息。这可能会有所帮助。

如果两个变量都是连续的,那么一个简单的解决方案就是利用dy/dx=(dy/dt)/(dx/dt),即在Modelica中

dydx=der(y)/der(x)


例如,我们将其用于曲线笛卡尔坐标在其弧长上的导数。

非常感谢您的建议。很高兴提供帮助!可能(很可能)有一个比我的建议更优雅的解决方案-如果你在其他地方找到任何解决方案,请告诉我。非常感谢你的宝贵意见。我将尝试使用这些注释。
function foo0 annotation(derivative=foo1); end foo0;
function foo1 annotation(derivative(order=2)=foo2); end foo1;
function foo2 end foo2;