检查表达式是否包含符号

check if expression contains symbol

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

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

a 包含 xyb 仅包含 y.

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

您也可以使用 .atoms(Symbol) 来检查。 atoms(Symbol) 在某些情况下与 .free_symbols 不同。 free_symbols 没有 return dummy 符号,比如积分变量。 这通常是你想要的,因为表达式在数学上不依赖于虚拟符号 示例:

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