5

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

4 回答 4

2

首先,让 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)

第三个词是重言式的,但似乎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 != 0并且Omega > 0你能做到

In[6]:= Reduce[ <expr> && m!=0 && Omega > 0, Delta, Reals ] // LogicalExpand // 
        Simplify // #[[2]]&
于 2010-10-29T18:33:43.330 回答
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]  

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

于 2010-10-29T16:19:22.043 回答
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, 

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

于 2010-10-29T22:54:08.123 回答
0

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

我得到了一些可以忍受的紧凑的东西

假设[{
  (L | m | e | Tau | Omega | Delta) \[元素] 实数
  },
 完全简化[
  逻辑展开[
   减少[{L - (m^2 ((-2 + e)^2 Delta + (5 +
               2 e (-7 + 4 e)) Tau) Omega)/(36 (2 - 3 e + e^2)^2) >
      0},三角洲,Reals]
   ]
  ]
 ]
Out[]:= (L > 0 && (1 < e < 2 || e < 1 || e > 2) && (m == 0 || Omega == 0)) ||
    (m != 0 && (
      (欧米茄 > 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 &&
       欧米茄 < 0)) &&
    (e > 2 || e < 1 || 1 < e < 2))

我没有花费任何精力用符号替换符号名称。

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

于 2010-11-04T02:31:04.960 回答