为什么Modelica中的“ der”运算符仅适用于时间变量?

问题描述

我在Dymola中构建了一个简单的模型,但是我对der()运算符感到困惑,为什么der()运算符仅应用于时间变量?如果我想对其他变量使用导数怎么办

在以下代码中,如果要计算dy/dx(y到x的导数),应该怎么做?

model A
  Real x,y,z;
equation
  x=10;
  y=sin(x);
  z=der(y);
end A;

enter image description here

解决方法

偏导数通过函数来​​支持。请参阅Modelica Spec 3.4:函数的偏导数中的第12.7.2章。

您必须将感兴趣的方程式移至函数的算法部分。您的示例如下所示:

model A
  Real x,z;

  function f1
    input Real a;
    output Real b;
  algorithm 
    b :=sin(a);
  end f1;

  function der_f1 = der(f1,a);

equation 
  x = 10;
  z = der_f1(x);
end A;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...