我在笔记本界面中使用 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*谢谢!

有帮助吗?

解决方案

首先,让数学输出的东西完全一样,你想它是一个黑色艺术,需要很大的耐心。这就是说,如果你申请Reduce你原来的表情,按的贝利萨留,你会得到

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 != 0Omega > 0你可以做

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

其他提示

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]  

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

检查的输出

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可以改变从简化结果的形式[缩小[]]这将无效所有的这

在减少由返回的表达式部分困难减少[]和LogicalExpand []是所提供的表达式由零涉及除法e = 1时或= 2。

我得到的东西与bearably紧凑

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))

在那里我已经付出任何努力用符号来代替符号名。

(为什么假设[...]因为我懒得记住要挤进每一步简化同样的假设。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top