区分

(函数来自 pyomo.core.expr.calculus.derivatives)

pyomo.core.expr.calculus.derivatives.differentiate(expr, wrt=None, wrt_list=None, mode=Modes.reverse_numeric)[source]

返回表达式的导数。

此函数返回表达式expr相对于一个或多个变量的导数。返回值的类型取决于参数wrt、wrt_list和mode。详情见下文。

Parameters:
  • expr (pyomo.core.expr.numeric_expr.NumericExpression) – 要微分的表达式

  • wrt (pyomo.core.base.var.VarData) – 如果指定,此函数将返回关于wrt的导数。wrt通常是一个VarData,但也可能是一个ParamData。wrt和wrt_list不能同时指定。

  • wrt_list (list of pyomo.core.base.var.VarData) – 如果指定,此函数将返回相对于wrt_list中每个元素的导数。将返回一个列表,其中的值是相对于wrt_list中相应条目的导数。

  • mode (pyomo.core.expr.calculus.derivatives.Modes) –

    指定用于微分的方法。应该是Modes枚举的成员之一:

    Modes.sympy:

    pyomo表达式将被转换为sympy表达式。然后使用sympy进行微分,结果将转换回pyomo表达式。sympy模式仅进行符号微分。sympy模式要求必须指定wrt或wrt_list中的一个。

    Modes.reverse_symbolic:

    将直接在pyomo表达式中以反向模式执行符号微分。如果未指定wrt或wrt_list,则返回一个ComponentMap,其中将为表达式树中的每个节点提供一个键,值将是符号导数。

    Modes.reverse_numeric:

    将直接在pyomo表达式中以反向模式执行数值微分。如果未指定wrt或wrt_list,则返回一个ComponentMap,其中将为表达式树中的每个节点提供一个键,值将是变量当前值下的导数的浮点值。

Returns:

res – 导数的值或表达式

Return type:

浮点数, NumericExpression, ComponentMap, 或列表