【问题标题】:how to derivate with respect to someother variable other than time?如何对时间以外的其他变量进行导数?
【发布时间】:2017-07-14 17:44:33
【问题描述】:

我只是从 modelica 开始。我知道有一个内置的时间导数运算符 [der(expr)]。如果我必须用其他变量推导怎么办?例如:如果我必须导出 w.r.t 变量 'x' 这怎么形成?

【问题讨论】:

    标签: modelica


    【解决方案1】:

    如果您需要时间导数以外的其他东西,我想您必须明确声明导数,例如

    y = x^2;    
    der_y = 2x;
    

    变量 der_y 应该在模型的前面声明,y 和 x 也应该声明。如果你想要一个双导数,那么你可以做类似的事情

    dder_y = 2;
    

    变量 dder_y 像以前一样提前清除。

    在制作 Modelica 模型时,我经常觉得除了时间导数之外还需要其他导数。话虽这么说,我自己对 Modelica 还是很陌生,所以很可能会有一段时间我这样做。

    【讨论】:

    • 非常感谢您提出建议。
    • 乐于助人!可能(非常)有一个比我的建议更优雅的解决方案 - 如果您在其他地方找到任何解决方案,请告诉我。
    【解决方案2】:

    还有可能使用注解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 章中找到更多信息。也许这有帮助。

    【讨论】:

    • 非常感谢您的宝贵意见。我会尝试使用这些注释。
    【解决方案3】:

    如果两个变量都是连续的,则通过 x 导出 y 的简单解决方案使用 dy/dx = (dy/dt) / (dx/dt),即在 Modelica 中

    dydx = der(y)/der(x).

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

    【讨论】:

    • 当 der(x) 等于或接近零时出现问题。你知道有什么方法可以“处理”这个吗?
    • @Mimi 我想这是针对特定情况的。对于这种情况,可以使用固定值dydx,或者在分母上添加一个小的偏移量,即`der(y)/(der(x)+eps)。但肯定还有更多的可能性。
    • 好主意。我对此有一点评论,由于 der(x)=-eps 的情况,eps 应该以某种方式出现在“if”语句中。
    • 是的。 eps 的技巧可以无缝地工作,例如在 x 本质上具有某些下限的情况下。例如。一段长度。
    猜你喜欢
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2021-02-09
    • 2020-05-24
    • 2015-02-27
    相关资源
    最近更新 更多