为什么 sympy.solve 对于某些不等式会生成空数组

问题描述 投票:0回答:1

sympy 的解决方案似乎通常适用于解决不等式。例如:

from sympy import symbols, solve;

x = symbols('x');

print(solve('x^2 > 4', x)); # ((-oo < x) & (x < -2)) | ((2 < x) & (x < oo))

在某些情况下,所有 x 值或没有 x 值都是有效解,

solve()
返回
True
False
来表明这一点。

print(solve('x^2 > 4 + x^2', x)); # False
print(solve('x^2 >= x^2', x)); # True

但是,在其他情况下,我期望结果为 True 或 False,但结果却是

[]
:

print(solve('x - x > 0', x)); # []
print(solve('x - x >= 0', x)); # []

为什么会发生这种情况/我做错了什么?

python python-3.x sympy inequality
1个回答
0
投票

请记住,表达式不是所见即所得:您的表达式中没有

x

print(solve('x - x > 0', x)); # []  <-- solve(0>0, x) => solve(False, x)
print(solve('x - x >= 0', x)); # []  <-- solve(0>=0, x) => solve(True, x)

由于

x
没有出现在这两个表达式中,因此在第一种情况下没有需要报告的
x
值可以使 False 变为 True;在第二种情况下,无法表示通用集合(因为任何 x 值都不能将 True 值更改为其他值)。因此,在这两种情况下,都没有要报告的解决方案(尽管对于第二种情况可能会报告错误或至少可以报告
x<=oo
),但一般来说:如果所请求的符号没有出现在方程中(在开始时或简化后) )然后返回
[]
(并且
x
不会出现在 True 中)。

© www.soinside.com 2019 - 2024. All rights reserved.