Wolfram mathematica Mathematica:寻找复数实部为正的条件,Reduce的意外/冗余输出

Wolfram mathematica Mathematica:寻找复数实部为正的条件,Reduce的意外/冗余输出,wolfram-mathematica,reduce,complex-numbers,inequality,Wolfram Mathematica,Reduce,Complex Numbers,Inequality,我需要找到复数实部为负的条件。我认为Reduce非常适合于此,但它提供了冗余输出(即使在简化之后)。例如: In[543]: Reduce[{Re[-1 - Sqrt[a - b] ] < 0, a > 0, b > 0}, {a, b}, Complexes] Out[543]: a > 0 && (0 < b < a || b >= a) 有没有一个很好的理由来解释为什么没有得到? (在我看来)对于更复杂的表达式,多余的结果会累

我需要找到复数实部为负的条件。我认为Reduce非常适合于此,但它提供了冗余输出(即使在简化之后)。例如:

In[543]: Reduce[{Re[-1 - Sqrt[a - b] ] < 0, a > 0, b > 0}, {a, b}, Complexes]
Out[543]: a > 0 && (0 < b < a || b >= a)  
有没有一个很好的理由来解释为什么没有得到?
(在我看来)对于更复杂的表达式,多余的结果会累积起来,我需要减少其中相当多的结果。有什么诀窍可以达到预期的效果吗?我选择Reals作为域名,而不选择任何域名,但没有什么能真正满足我的需求。顺便说一句,我通过检查特征值来分析不动点的稳定性……这是一项非常常见的任务

我不知道为什么Mathematica不会在一步中返回您期望的结果,但下面介绍如何在两步中获得它:

一般来说,可以以一般方式处理不等式的两个函数是
Reduce
LogicalExpand
。(但我在这方面的知识非常有限!)我相信
(Full)Simplify
只会使用后者


关于在
Reduce
中设置域的注释:


请注意,文档中说:“如果dom是Reals,或者是整数或有理数之类的子集,那么所有常量和函数值也被限制为real。”因此,如果要像@belisarius的答案那样将域指定为
Reals
Reduce
将返回
0Re[…]
使用
ComplexExpand
表达式,您将获得预期结果
a>0&&b>0

,但前提是域被明确指定为
ComplexExpand
Reals
。否则它将返回
a>0&&0Reduce
中存在错误。我将把链接放在这里以供参考:
Out[543]: a > 0 && b > 0