check if expression contains symbol

4.5k Views Asked by At

I would like to find out programatically if a SymPy expression contains a symbol. E.g., for

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

a contains both x and y, b contains only y.

2

There are 2 best solutions below

0
On BEST ANSWER
>>> x in a.free_symbols, y in a.free_symbols
(True, True)
>>> x in b.free_symbols, y in b.free_symbols
(False, True)
0
On

You can also use .atoms(Symbol) to check that. atoms(Symbol) differs from .free_symbols in some cases. free_symbols doesn't return dummy symbols, like integration variables. it's usually what you want, since expressions don't mathematically depend on dummy symbols example:

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