【问题标题】:Generating function derivative as Python callable function生成函数导数作为 Python 可调用函数
【发布时间】:2018-05-28 18:44:28
【问题描述】:

我正在阅读此 question 并尝试做同样的事情,但我希望该函数具有单个参数,例如 x。该参数是要由优化求解器填充的“值”数组。例如:

def f(x):
   return x[0]**2 + 3*x[1]

该函数将引用:f(x)=x^2 + 3y,这意味着x 是一个变量数组。这些变量是否存在于当前函数中,因为它们是整个优化问题中的所有变量,这意味着它们可以存在于约束中。所以我想找到所有变量的偏导数。因此,在这种情况下,我将需要 2 个可调用函数,以便我可以使用它来形成一个新数组,即该函数的雅可比行列式。有没有办法做到这一点?怎么样?

【问题讨论】:

    标签: python function sympy mathematical-optimization nonlinear-optimization


    【解决方案1】:

    免责声明:我是pyneqsys的作者。

    如果您愿意使用库,pyneqsys 正是这样做的。如果没有,您可以查看pyneqsys/symbolic.py 的来源,它(大约)这样做是为了计算雅可比:

    f = sympy.Matrix(self.nf, 1, self.exprs)
    x = sympy.Matrix(self.nx, 1, self.x)
    J = f.jacobian(x)
    

    然后,您需要使用 sympy.lambdify 来获取具有特定求解器预期语法的可调用对象。

    【讨论】:

    • 我下载了 pyneqsys 但由于时间不够,无法试用,很快就会试用。我会让你知道进展如何
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2013-09-17
    • 2015-02-19
    • 2023-03-29
    • 2012-12-20
    • 1970-01-01
    • 2015-12-07
    • 2011-08-07
    相关资源
    最近更新 更多