You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 03:45:49