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

Sympy solve()处理复数问题:求解|sqrt(x)|<1遗漏负区间

解决Sympy求解复数模不等式遗漏负区间的问题

问题原因

默认创建的Symbol("x")属于实数域,Sympy会自动排除x<0的情况——因为实数域内负数的平方根无意义,所以solve仅返回非负区间的解0≤x<1,遗漏了复数域中x∈(-1,0)的有效解。

解决方案

方案1:将x定义为复数变量

创建符号时指定complex=True,让Sympy在复数域内处理问题:

from sympy import *

x = Symbol("x", complex=True)
expr = sqrt(x)
print(solve(abs(expr) < 1, x))

运行结果:(-1 < x) & (x < 1),包含了负区间的解。

方案2:手动拆分实数/复数场景求解

针对x的正负区间分别推导模的条件,再合并结果:

from sympy import *

x = Symbol("x")
# 非负区间:直接求解|sqrt(x)| < 1
sol_pos = solve((abs(sqrt(x)) < 1) & (x >= 0), x)
# 负区间:sqrt(x)是纯虚数,模为sqrt(-x),求解sqrt(-x) < 1且x<0
sol_neg = solve((sqrt(-x) < 1) & (x < 0), x)
# 合并两个区间的解
total_sol = sol_pos | sol_neg
print(total_sol)

运行结果同样为(-1 < x) & (x < 1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:40:28