代码之家  ›  专栏  ›  技术社区  ›  Rastapopoulos

在symphy表达式中查找函数

  •  4
  • Rastapopoulos  · 技术社区  · 8 年前

    我正在寻找一种稳健的方法来寻找一个sympy表达式中的函数参数。例如,在下面的示例中,如何检索 f operator 是吗?

    import sympy
    
    x, y = sympy.symbols('x y')
    f = sympy.Function('f')
    operator = x*f(x, y).diff(x) + y*f(x, y)
    
    print(operator.free_symbols)
    # prints {x, y}
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   user6655984user6655984    8 年前

    方法 expr.atoms(class) 返回中所有对象的集合 expr 这就是那个类的实例。所以,

    operator.atoms(sympy.Function)
    

    会回来的 f(x, y) 是的。如果要忽略函数的参数,请使用

    [a.func for a in operator.atoms(sympy.Function)]
    

    (对于同一物体 a , a.func 是它的“功能”部分 a.args 是它的“参数”部分。)

    注意,如果 operator 包括,比如说, sin(x) ,这也将包含在上述代码中只返回 未定义 (非内置)函数,替换 sympy.Function 通过 sympy.function.AppliedUndef 作为中的类选择器 atoms .

    推荐文章