检查表达式是否包含符号

Nic*_*mer 3 sympy

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

import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
a = 4 + x**2 + y
b = 4 + y**2
Run Code Online (Sandbox Code Playgroud)

a包含xy,b仅包含y.

Bjo*_*ren 7

>>> x in a.free_symbols, y in a.free_symbols
(True, True)
>>> x in b.free_symbols, y in b.free_symbols
(False, True)
Run Code Online (Sandbox Code Playgroud)


gxy*_*xyd 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([])
Run Code Online (Sandbox Code Playgroud)