FullSimply不等式,然后在Mathematica 7中重新排列它们

时间:2010-10-29 15:25:23

标签: wolfram-mathematica mathematical-expressions

我在笔记本界面使用Mathematica 7,我想重新排列不等式,这样我就可以得到一个特定的变量。例如。

FullSimplify[x^3+L+r>3x^3+2r]

给出

L > r + 2 x^3

但是,我想:

r < L-2x^3

我们是否可以指示FullSimplify以特定方式订购变量?我也在使用Mathematica进行演示,所以我安排变量的方式对我来说非常重要。

由于

SR

编辑:我尝试过Reduce,虽然这适用于这个例子,它不适用于我的实际表达式,我收到一个错误说,

 This system cannot be solved with the methods available to Reduce.

编辑:这是实际的表达式:

{L - (m^2 ((-2 + e)^2 \[Delta] + (5 + 
     2 e (-7 + 4 e)) \[Tau]) \[Omega])/(36 (2 - 3 e + e^2)^2)} > {0}

我希望以\[delta]< *something*的形式显示 谢谢!

4 个答案:

答案 0 :(得分:2)

首先,让Mathematica输出完全符合你想要的东西是一种黑色艺术,需要很多耐心。也就是说,如果您根据BelisariusReduce应用于原始表达式,那么您将获得

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

虽然这不能给你一个干净的答案,但它比以前更好,并揭示了你的解决方案的更多结构。 (我不会使用FullSimplifyDelta与其他术语混合在一起。)此时,我们需要了解更多有关术语本身的信息,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)

第三个词是同义词,但SimplifyFullSimplify似乎无法删除它。而且我们真的只对中期感兴趣。如果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 != 0Omega > 0可以做到

In[6]:= Reduce[ <expr> && m!=0 && Omega > 0, Delta, Reals ] // LogicalExpand // 
        Simplify // #[[2]]&

答案 1 :(得分:1)

Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]

会的。

由于我不使用Mathematica进行编辑或演示,也许其他人可能会提供一些额外的建议。

修改

根据您的评论,您可以尝试:

Reduce[{L - (m^2 ((-2 + e)^2 Delta + (5 + 
        2 e (-7 + 4 e)) Tau) Omega)/(36 (2 - 3 e + e^2)^2) > 0}, Delta, Reals]  

我纠正了一些语法错误。但是你会发现结果表达是相当不愉快的。为了进一步简化它,您需要知道变量的有效范围。如果有,请发布该信息。 HTH!

答案 2 :(得分:0)

检查

的输出
r=Simplify[Reduce[L-(m^2((-2+e)^2\\[Delta]+(5+2e(-7+4e))\\[Tau])\\[Omega])/(36(2-3e+e^2)^2)>0,\\[Delta],Reals]]  

看到那个

r[[2,1,1,1]] gives \\[Delta]>expr, 

但是

r[[2, 1, 2, 2]] gives \\[Delta]< expr, 

因为在expr的分母中符号为\Ω。所有这些都忽略了L,e,m和\Ω值的其他条件会改变结果,Mathematica的不同版本可能会改变Simplify [Reduce []]的结果形式,这将使所有这些无效

答案 3 :(得分:0)

减少Reduce []和LogicalExpand []返回的表达式的部分困难在于,当e = 1或= 2时,提供的表达式涉及除以零。

我得到的东西非常紧凑

Assuming[{
  (L | m | e | Tau | Omega | Delta) \[Element] Reals
  },
 FullSimplify[
  LogicalExpand[
   Reduce[{L - (m^2 ((-2 + e)^2 Delta + (5 + 
               2 e (-7 + 4 e)) Tau) Omega)/(36 (2 - 3 e + e^2)^2) > 
      0}, Delta, Reals]
   ]
  ]
 ]
Out[]:= (L > 0 && (1 < e < 2 || e < 1 || e > 2) && (m == 0 || Omega == 0)) || 
    (m != 0 && (
      (Omega > 0 && 
       Delta < (36 (-1 + e)^2 L)/(m^2 Omega) + ((-5 + 2 (7 - 4 e) e) Tau)/(-2 + e)^2) || 
      (Delta > (36 (-1 + e)^2 L)/(m^2 Omega) + ((-5 + 2 (7 - 4 e) e) Tau)/(-2 + e)^2 && 
       Omega < 0)) && 
    (e > 2 || e < 1 || 1 < e < 2))

我已经不遗余力地用符号替换符号名称。

(为什么假设[...]?因为我懒得记得在每个简化步骤中都有相同的假设。)