如果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包含x和y,b仅包含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)
Run Code Online (Sandbox Code Playgroud)
你也可以用它.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)