检查表达式是否包含符号

时间:2015-06-24 14:40:35

标签: sympy

如果SymPy表达式包含符号,我想以编程方式找出。例如,

import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
a = 4 + x**2 + y
b = 4 + y**2

a包含xyb仅包含y

2 个答案:

答案 0 :(得分:5)

您也可以使用.atoms(Symbol)进行检查。在某些情况下,atoms(Symbol).free_symbols不同。 free_symbols不会返回dummy符号,例如积分变量。 它通常是你想要的,因为表达式在数学上不依赖于虚拟符号 例如:

>>> Integral(f(x), (x, 0, 1)).atoms(Symbol)
set([x])
>>> Integral(f(x), (x, 0, 1)).free_symbols
set([])

答案 1 :(得分:4)

>>> x in a.free_symbols, y in a.free_symbols
(True, True)
>>> x in b.free_symbols, y in b.free_symbols
(False, True)