SymPy中如何获取整体定义符号表达式的正确自由符号?
问题解决方法
首先得明确问题根源:你用symbols("2*a**2")时,SymPy是把整个"2*a**2"当成单个独立符号的名称,而非解析成数学表达式。所以thing本质是一个名为2*a**2的单独符号,它的自由符号自然就是自身。
要实现你想要的效果,有两种可行方案:
直接用SymPy语法构造表达式,而非通过
symbols定义:a = symbols("a") thing = 2*a**2 # 直接编写表达式 thing.free_symbols # 结果为 {a}如果已经生成了这个
thing符号对象,可将其字符串表示解析为表达式:from sympy import sympify, symbols a = symbols("a") thing = symbols("2*a**2") # 将符号转为字符串后解析成表达式 expr = sympify(str(thing)) expr.free_symbols # 结果为 {a}也可以使用
parse_expr(功能和sympify类似,更专注于表达式解析):from sympy import parse_expr expr = parse_expr(str(thing))
内容的提问来源于stack exchange,提问作者Diego Olvera
相关产品推荐
相关产品推荐

