FullSimply disuguaglianze e poi riorganizzare in Mathematica 7
-
27-09-2019 - |
Domanda
Sto utilizzando Mathematica 7 nell'interfaccia notebook e voglio riorganizzare una disuguaglianza in modo che ho una certa variabile su un lato. Per per esempio.
FullSimplify[x^3+L+r>3x^3+2r]
Dà
L > r + 2 x^3
Tuttavia, voglio:
r < L-2x^3
Esiste un modo siamo in grado di istruire FullSimplify alle variabili di ordine in modo particolare? Sto usando Mathematica per la presentazione e così, il mio modo di organizzare le variabili è importante per me.
Grazie
SR
Edit: Ho provato Ridurre, mentre che le opere di questo esempio, non funziona per l'espressione reale che ho, ottengo un errore che dice,
This system cannot be solved with the methods available to Reduce.
Edit: qui è l'espressione reale:
{L - (m^2 ((-2 + e)^2 \[Delta] + (5 +
2 e (-7 + 4 e)) \[Tau]) \[Omega])/(36 (2 - 3 e + e^2)^2)} > {0}
Voglio che questo per essere visualizzato sotto forma di \[delta]< *something*
Grazie!
Soluzione
Prima di tutto, ottenendo Mathematica per emettere qualcosa esattamente come si vorrebbe che è una sorta di magia nera, e richiede molta pazienza. Detto questo, se si applica Reduce
alla vostra espressione originale, come da Belisario , si otterrebbe
In[1]:=Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]
Out[1]:= r < L - 2 x^3
Tuttavia, come lei ha sottolineato, questo non è l'espressione piena e Reduce
produce ciò che può solo essere descritto come un meno di risposta utile se applicato ad esso. E 'a questo punto in cui è richiesta la pazienza e un sacco di elaborazione aggiuntiva. Mi piacerebbe iniziare con
In[2]:=Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify
Anche se questo non ti dà una risposta pulita, è meglio di prima e rivela più della struttura della soluzione. (Non vorrei usare FullSimplify
come che mescola Delta
con gli altri termini.) A questo punto, abbiamo bisogno di sapere di più circa i termini stessi, e l'uscita dal In[2]
non è così utile come vogliamo.
mi piacerebbe ri-espandere questo con LogicalExpand
che vi dà dodici termini che sono significativamente più semplice di quello che Reduce
solo dà. (Noterete che solo le ultime sei termini in realtà coinvolgono Delta
, quindi mi piacerebbe verificare che le condizioni variabili effettivamente corrispondano a quelle.) Selezionando solo quegli ultimi sei termini,
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)
Il terzo termine è tautologico, ma Simplify
nè FullSimplify
non riesco a rimuoverlo. E siamo davvero interessati solo nel medio termine comunque. Se Omega > 0
l'espressione può quindi essere estratto tramite %[[2,1,2]]
.
Mettendo tutto insieme in una sola espressione:
In[4]:=Simplify[LogicalExpand[Reduce[<expression>, Delta, Reals]]][[-6;;]] //
Simplify // #[[2,1,2]]&
Out[4]:= Delta < something
Dopo aver scritto che fuori, ho capito che c'è un modo molto più semplice per avvicinarsi a questo. Mi piacerebbe rifare la linea 2, al di sopra, come segue:
In[5]:= Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify //
Cases[#, ___ && Delta < _ && ___, Infinity]&
Out[5]:= {Omega > 0 && Delta < something}
In alternativa, a condizione che davvero non sa che m != 0
e Omega > 0
si può fare
In[6]:= Reduce[ <expr> && m!=0 && Omega > 0, Delta, Reals ] // LogicalExpand //
Simplify // #[[2]]&
Altri suggerimenti
Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]
Lo farò.
Non faccio uso di Mathematica per la modifica o la presentazione, forse qualcun altro può venire con qualche consiglio in più.
Modifica
, sulla base di commento, si può provare:
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]
Dove ho corretto alcuni errori di sintassi. Ma troverete che l'espressione risultante è piuttosto sgradevole. Per semplificare ulteriormente è necessario conoscere gli intervalli validi per le vostre Vars. Si prega di inviare queste informazioni se lo avete. HTH!
Controllare l'output di
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]]
di vedere che
r[[2,1,1,1]] gives \\[Delta]>expr,
ma
r[[2, 1, 2, 2]] gives \\[Delta]< expr,
perché il segno di \ [Omega] nel denominatore di expr. Tutto questo ignora le altre condizioni sui valori di L, e, m e \ [Omega] che cambierà il risultato e diverse versioni di Mathematica può cambiare la forma del risultato da Semplifica [Riduci []], che invaliderà tutto questo .
Parte della difficoltà nel ridurre le espressioni restituite da Diminuire [] e LogicalExpand [] è che l'espressione fornito coinvolge la divisione per zero quando e = 1 o = 2.
ho qualcosa bearably compatta con
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))
dove ho speso alcuno sforzo per sostituire i nomi dei simboli con i simboli.
(Perché Supponendo [...]? Perché io sono troppo pigro per ricordare per ottenere gli stessi presupposti inceppati in ogni fase di semplificazione.)