我在笔记本界面使用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*
的形式显示
谢谢!
答案 0 :(得分:2)
首先,让Mathematica输出完全符合你想要的东西是一种黑色艺术,需要很多耐心。也就是说,如果您根据Belisarius将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 != 0
和Omega > 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))
我已经不遗余力地用符号替换符号名称。
(为什么假设[...]?因为我懒得记得在每个简化步骤中都有相同的假设。)