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]

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!

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top