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

能否使用SymPy库化简数学表达式 例如将sqrt(x²)化简为abs(x)?

SymPy实现sqrt(x²)化简为abs(x)的解决方案

SymPy默认将未指定定义域的符号视为复数域变量,复数域下sqrt(x²)不存在等价于abs(x)的通用规则,因此直接调用simplify()方法不会触发该化简操作,可通过以下两种方式实现需求:

  • 方式1:为符号变量指定实数域属性
    代码示例:
    from sympy import symbols, sqrt, simplify
    # 定义x为实数类型
    x = symbols('x', real=True)
    res = simplify(sqrt(x**2))
    print(res) # 输出为Abs(x)
    
    若额外指定x为非负实数,还可直接化简为x:
    x = symbols('x', nonnegative=True)
    res = simplify(sqrt(x**2))
    print(res) # 输出为x
    
  • 方式2:使用refine函数临时指定约束条件
    如果不想全局修改符号变量的定义域属性,可以通过refine()函数临时传入约束规则实现化简:
    from sympy import symbols, sqrt, refine, Q
    x = symbols('x') # 未指定定义域
    res = refine(sqrt(x**2), Q.real(x))
    print(res) # 输出为Abs(x)
    

内容的提问来源于stack exchange,提问作者danil4ik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:12:04