【发布时间】:2017-07-14 17:44:33
【问题描述】:
我只是从 modelica 开始。我知道有一个内置的时间导数运算符 [der(expr)]。如果我必须用其他变量推导怎么办?例如:如果我必须导出 w.r.t 变量 'x' 这怎么形成?
【问题讨论】:
标签: modelica
我只是从 modelica 开始。我知道有一个内置的时间导数运算符 [der(expr)]。如果我必须用其他变量推导怎么办?例如:如果我必须导出 w.r.t 变量 'x' 这怎么形成?
【问题讨论】:
标签: modelica
如果您需要时间导数以外的其他东西,我想您必须明确声明导数,例如
y = x^2;
der_y = 2x;
变量 der_y 应该在模型的前面声明,y 和 x 也应该声明。如果你想要一个双导数,那么你可以做类似的事情
dder_y = 2;
变量 dder_y 像以前一样提前清除。
在制作 Modelica 模型时,我经常觉得除了时间导数之外还需要其他导数。话虽这么说,我自己对 Modelica 还是很陌生,所以很可能会有一段时间我这样做。
【讨论】:
还有可能使用注解derivative=<NameOfDerivativeFunction> 告诉工具使用哪个函数来获取函数的导数:
来自Modelica Specification, chapter 12.7.1的示例:
function foo0 annotation(derivative=foo1); end foo0;
function foo1 annotation(derivative(order=2)=foo2); end foo1;
function foo2 end foo2;
您可以在第 12.7.1 章中找到更多信息。也许这有帮助。
【讨论】:
如果两个变量都是连续的,则通过 x 导出 y 的简单解决方案使用 dy/dx = (dy/dt) / (dx/dt),即在 Modelica 中
dydx = der(y)/der(x).
我们使用它,例如求曲线在其弧长上的笛卡尔坐标的导数。
【讨论】:
dydx,或者在分母上添加一个小的偏移量,即`der(y)/(der(x)+eps)。但肯定还有更多的可能性。