まず第一に,Mathematica にあなたが望むものを正確に出力させることは,黒魔術のようなものであり,多くの忍耐を必要とします.とはいえ、ベリサリウス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]
ます。
これをもう一度拡張すると、 12 の用語が得られます。これらの用語は、単独で得られるLogicalExpand
ものよりもはるかに単純です。Reduce
(最後の 6 項のみが実際に を含むことに注意してDelta
ください。そのため、変数条件が実際にそれらと一致することを確認します。) 最後の 6 項のみを選択すると、
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)
第 3 項はトートロジーですが、削除することSimplify
もできません。FullSimplify
とにかく、私たちは本当に中期にしか興味がありません。Omega > 0
式を で抽出できる場合%[[2,1,2]]
。
これをすべて 1 つの式にまとめると、次のようになります。
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]]&