質問

NotebookインターフェイスでMathematica 7を使用しています。片側に特定の変数を取得できるように、不平等を再配置したいと思います。例えば。

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

与えます

L > r + 2 x^3

しかし、私は欲しい:

r < L-2x^3

とにかく、特定の方法で変数を注文するようにFullSimplifyに指示することができますか?私はプレゼンテーションにもMathematicaを使用しているので、変数を配置する方法は私にとって重要です。

ありがとう

sr

編集:私は減らそうとしましたが、この例ではそれが機能しますが、私が持っている実際の表現では機能しません。エラーが発生します。

 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*ありがとう!

役に立ちましたか?

解決

まず第一に、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] 私たちが望むほど有用ではありません。

私はこれを再拡張します LogicalExpand これは、何よりも大幅に単純な12の用語を提供します 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 != 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]  

いくつかの構文エラーを修正しました。しかし、結果として生じる表現はかなり不快であることがわかります。さらに簡素化するには、VARの有効な範囲を知る必要があります。あなたがそれを持っているなら、その情報を投稿してください。 hth!

の出力を検査します

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の分母における [omega]の兆候があるため。これはすべて、結果を変更するl、e、m、 [omega]の値に関する他の条件を無視し、Mathematicaの異なるバージョンは、[削減]の結果の形を変更する可能性があります。 。

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

シンボル名をシンボルに置き換える努力をしませんでした。

(なぜ[...]と仮定しているのか?私は同じ仮定を各簡素化ステップに詰め込んだことを覚えていないからです。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top