skr*_*skr 5 wolfram-mathematica mathematical-expressions
我在笔记本界面中使用Mathematica 7,我想重新排列不等式,以便我在一侧获得某个变量.例如.
FullSimplify[x^3+L+r>3x^3+2r]
Run Code Online (Sandbox Code Playgroud)
给
L > r + 2 x^3
Run Code Online (Sandbox Code Playgroud)
但是,我想:
r < L-2x^3
Run Code Online (Sandbox Code Playgroud)
无论如何我们可以指示FullSimplify以特定方式订购变量吗?我也在使用Mathematica进行演示,所以我安排变量的方式对我来说非常重要.
谢谢
SR
编辑:我尝试了Reduce,虽然这适用于这个例子,它不适用于我的实际表达式,我得到一个错误说,
This system cannot be solved with the methods available to Reduce.
Run Code Online (Sandbox Code Playgroud)
编辑:这是实际的表达式:
{L - (m^2 ((-2 + e)^2 \[Delta] + (5 +
2 e (-7 + 4 e)) \[Tau]) \[Omega])/(36 (2 - 3 e + e^2)^2)} > {0}
Run Code Online (Sandbox Code Playgroud)
我希望以\[delta]< *something*
谢谢的形式显示!
首先,让 Mathematica 准确地输出你想要的东西就像是一门黑魔法,需要很大的耐心。也就是说,如果你Reduce按照贝利撒留的说法应用到原来的表达式,你会得到
In[1]:=Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]
Out[1]:= r < L - 2 x^3
Run Code Online (Sandbox Code Playgroud)
然而,正如您所指出的,这不是完整的表达式,并且Reduce在应用时产生的结果只能被描述为不太有用的答案。此时需要耐心和大量额外的处理。我会开始
In[2]:=Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify
Run Code Online (Sandbox Code Playgroud)
虽然这并没有给您一个明确的答案,但它比以前更好,并且揭示了解决方案的更多结构。(我不会使用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)
Run Code Online (Sandbox Code Playgroud)
第三项是同义反复,但Simplify似乎也FullSimplify无法删除它。无论如何,我们实际上只对中期感兴趣。如果Omega > 0您的表达式可以通过提取%[[2,1,2]]。
将所有这些放在一个表达式中:
In[4]:=Simplify[LogicalExpand[Reduce[<expression>, Delta, Reals]]][[-6;;]] //
Simplify // #[[2,1,2]]&
Out[4]:= Delta < something
Run Code Online (Sandbox Code Playgroud)
写完之后,我意识到有一种更简单的方法可以解决这个问题。我将重做上面的第 2 行,如下所示:
In[5]:= Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify //
Cases[#, ___ && Delta < _ && ___, Infinity]&
Out[5]:= {Omega > 0 && Delta < something}
Run Code Online (Sandbox Code Playgroud)
或者,只要您确实知道m != 0并且Omega > 0可以做到
In[6]:= Reduce[ <expr> && m!=0 && Omega > 0, Delta, Reals ] // LogicalExpand //
Simplify // #[[2]]&
Run Code Online (Sandbox Code Playgroud)