首先,让 Mathematica 完全按照您的意愿输出东西是一种魔法,需要很大的耐心。也就是说,如果你Reduce
按照Belisarius的说法应用到你的原始表达,你会得到
In[1]:=Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]
Out[1]:= r < L - 2 x^3
但是,正如您所指出的,这不是完整的表达式,并且Reduce
在应用于它时会产生只能被描述为没有帮助的答案。正是在这一点上,需要耐心和大量额外的处理。我会从
In[2]:=Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify
虽然这并没有给您一个明确的答案,但它比以前更好,并揭示了您解决方案的更多结构。(我不会使用FullSimplify
,因为它与其他术语混合Delta
使用。)此时,我们需要更多地了解术语本身,并且输出In[2]
并没有我们想要的那么有用。
我会重新扩展它,LogicalExpand
它给你十二个比Reduce
单独给出的更简单的术语。(您会注意到实际上只有最后六个术语涉及Delta
,所以我会检查变量条件是否实际匹配。)仅选择最后六个术语,
In[3]:=%2[[-6;;]] // Simplify
Out[3]:= m != 0
&& ((Omega > 0 && Delta < something) || (Omega > 0 && Delta < something else)
&& (1 < e < 2 || e < 1 || e > 2)
第三个词是重言式的,但似乎Simplify
也FullSimplify
无法删除它。无论如何,我们真的只对中期感兴趣。如果Omega > 0
您的表达式可以通过%[[2,1,2]]
.
将所有这些放在一个表达式中:
In[4]:=Simplify[LogicalExpand[Reduce[<expression>, Delta, Reals]]][[-6;;]] //
Simplify // #[[2,1,2]]&
Out[4]:= Delta < something
写完之后,我意识到有一种更简单的方法可以解决这个问题。我将重做上面的第 2 行,如下所示:
In[5]:= Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify //
Cases[#, ___ && Delta < _ && ___, Infinity]&
Out[5]:= {Omega > 0 && Delta < something}
或者,只要你真的知道m != 0
并且Omega > 0
你能做到
In[6]:= Reduce[ <expr> && m!=0 && Omega > 0, Delta, Reals ] // LogicalExpand //
Simplify // #[[2]]&