2010-10-29 5 views
5

Ich benutze Mathematica 7 in der Notebook-Schnittstelle und ich möchte eine Ungleichung neu anordnen, so dass ich eine bestimmte Variable auf einer Seite bekommen. Für z.FullSimply Ungleichungen und dann neu anordnen in Mathematica 7

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

Gibt

L > r + 2 x^3 

aber ich will:

r < L-2x^3 

Gibt es trotzdem können wir Fullsimplify anweisen Variablen in einer bestimmten Weise zu bestellen? Ich verwende Mathematica auch für die Präsentation, also ist die Art, wie ich die Variablen anordne, für mich wichtig.

Dank

SR

Edit: Ich habe versucht, Reduce, während die für dieses Beispiel funktioniert, ist es nicht für den eigentlichen Ausdruck arbeiten ich habe, erhalte ich eine Fehlermeldung, dass,

This system cannot be solved with the methods available to Reduce. 

Edit: hier ist der eigentliche Ausdruck:

{L - (m^2 ((-2 + e)^2 \[Delta] + (5 + 
    2 e (-7 + 4 e)) \[Tau]) \[Omega])/(36 (2 - 3 e + e^2)^2)} > {0} 

ich diese displaye sein wollen d in Form von \[delta]< *something* Danke!

+1

Dies ist eine gültige Mathematica Frage. Bitte wählen Sie nicht, um zu schließen –

+0

Sah Ihre Bearbeitung nach dem Posten. Bitte poste deinen aktuellen Ausdruck –

Antwort

2

Zunächst ist es etwas wie eine schwarze Kunst, Mathematica etwas genau so auszugeben, wie Sie es möchten, und erfordert viel Geduld. Das heißt, wenn Sie Reduce zu Ihrem ursprünglichen Ausdruck anwenden, wie pro Belisarius Sie

In[1]:=Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals] 
Out[1]:= r < L - 2 x^3 

Allerdings bekommen würden, wie Sie sagten, ist dies nicht der volle Ausdruck und Reduce erzeugt, was nur beschrieben werden, als eine weniger als hilfreiche Antwort, wenn sie darauf angewendet wird. Es ist an diesem Punkt, wo Geduld und viel zusätzliche Verarbeitung erforderlich ist. Ich würde mit

In[2]:=Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify 

starten Während dies nicht, dass Sie eine saubere Antwort nicht geben, es ist besser als zuvor und mehr von der Struktur Ihrer Lösung zeigt. (Ich würde FullSimplify nicht als Delta mit den anderen Begriffen mischen.) An diesem Punkt müssen wir mehr über die Begriffe selbst wissen, und die Ausgabe von In[2] ist nicht ganz so nützlich wie wir wollen.

Ich würde dies mit LogicalExpand erweitern, die Ihnen zwölf Begriffe gibt, die wesentlich einfacher sind als das, was allein Reduce gibt. (Sie werden bemerken, dass nur die letzten sechs Begriffe Delta tatsächlich beinhalten, also würde ich prüfen, ob die variablen Bedingungen die tatsächlich übereinstimmen.) Nur die letzten sechs Begriffe auswählen,

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) 

Der dritte Term tautologisch ist, aber Simplify noch FullSimplify kann nicht scheinen, es zu entfernen. Und eigentlich interessieren wir uns eigentlich nur für die Mittelfrist. Wenn Omega > 0 Ihr Ausdruck kann dann über %[[2,1,2]] extrahiert werden.

Putting diese alle zusammen in einem Ausdruck:

In[4]:=Simplify[LogicalExpand[Reduce[<expression>, Delta, Reals]]][[-6;;]] // 
     Simplify // #[[2,1,2]]& 
Out[4]:= Delta < something 

Danach auszuschreiben, wurde mir klar, dass es eine viel einfachere Art und Weise, dies zu nähern. Ich würde Redo-Linie 2, oben, wie folgt:

In[5]:= Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify // 
     Cases[#, ___ && Delta < _ && ___, Infinity]& 
Out[5]:= {Omega > 0 && Delta < something} 

Oder, vorausgesetzt, Sie wirklich wissen, dass m != 0 und Omega > 0 Sie tun können,

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

+1 für "Es ist an diesem Punkt, wo Geduld und eine Menge zusätzlicher Verarbeitung erforderlich ist.". Wirklich wahr. –

+0

danke!wirklich hilfreich – skr

+0

@belisarius, Dieser war einfach; Ich kann einen ganzen Morgen damit verschwenden, einen Ausdruck neu zu formatieren, damit er so aussieht, wie ich es möchte. Mein persönlicher Favorit ist es, 'I' durch' q' ('Complex [a_, b _]:> a + q b') zu ersetzen, so dass ich' Collect' darauf verwenden kann. Manchmal ist es die einzige Möglichkeit, ein vernünftiges Ergebnis zu erzielen. – rcollyer

1
Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals] 

Wird tun.

Da ich Mathematica nicht für die Bearbeitung oder Präsentation verwende, kann jemand anderes mit einem zusätzlichen Ratschlag kommen.

bearbeiten

basierend auf Ihren Kommentar, können Sie versuchen:

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] 

Wo ich einige Syntaxfehler korrigiert. Aber Sie werden feststellen, dass der resultierende Ausdruck ziemlich unangenehm ist. Um es weiter zu vereinfachen, müssen Sie die gültigen Bereiche für Ihre Vars kennen. Bitte poste diese Information, wenn du sie hast. HTH!

+0

Edit: hier ist der eigentliche Ausdruck: {L - (m^2 ((-2 + e) ​​^ 2 \ Delta + (5 + 2 e (-7 + 4 e)) \ [Tau]) \ [omega])/(36 (2 - 3 e + e^2)^2)}> {0} Ich möchte, dass dies in Form von \ * angezeigt wird * Vielen Dank! – skr

+0

@ user491410 Kennen Sie die Zeichen von L, e, Delta, Tau, Omega? –

0

die Ausgabe von

Inspizieren
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]] 

zu sehen, dass

r[[2,1,1,1]] gives \\[Delta]>expr, 

aber

r[[2, 1, 2, 2]] gives \\[Delta]< expr, 

weil das Zeichen \ [Omega] im Nenner von ausdr. All dies ignoriert die anderen Bedingungen für die Werte von L, e, m und \ [Omega], die das Ergebnis verändern, und verschiedene Versionen von Mathematica können die Form des Ergebnisses von Simplify [Reduce []] ändern, was all dies ungültig macht .

0

Ein Teil der Schwierigkeit beim Reduzieren der von Reduce [] und LogicalExpand [] zurückgegebenen Ausdrücke besteht darin, dass der angegebene Ausdruck eine Division durch Null beinhaltet, wenn e = 1 oder = 2 ist.

ich etwas bearably kompakt mit

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

, wo ich keine Mühe aufgewandt haben Symbolnamen mit Symbolen zu ersetzen.

(Warum Unter der Annahme, [...]? Weil ich bin zu faul, um zu erinnern, die gleichen Annahmen in jeden Vereinfachungsschritt verklemmt zu erhalten.)