在sympy表达式中查找函数

时间:2018-07-22 18:16:37

标签: python sympy

我正在寻找一种在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 个答案:

答案 0 :(得分:3)

方法expr.atoms(class)返回expr中作为该类实例的所有对象的集合。所以,

operator.atoms(sympy.Function)

将返回f(x, y)。如果您想忽略该函数的参数,请使用

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

(对于SymPy对象aa.func是其“功能”部分,而a.args是其“参数”部分。)

请注意,如果包含operator,例如sin(x),那么上面的代码也将包含它。要仅返回未定义的 函数,请用sympy.Function替换sympy.function.AppliedUndef作为atoms中的类选择器。