FullSimply Inégalités puis les réarranger dans Mathematica 7
-
27-09-2019 - |
Question
J'utilise Mathematica 7 dans l'interface bloc-notes et je veux réorganiser une inégalité de sorte que je reçois une certaine variable d'un côté. Pour exemple.
FullSimplify[x^3+L+r>3x^3+2r]
donne
L > r + 2 x^3
Cependant, je veux:
r < L-2x^3
Y at-il de toute façon, nous pouvons demander FullSimplify à des variables de commande d'une manière particulière? J'utilise Mathematica pour la présentation et ainsi, la façon dont j'arrangerai les variables est important pour moi.
Merci
SR
Edit: J'ai essayé Réduire, tout cela fonctionne pour cet exemple, il ne fonctionne pas pour l'expression réelle que je l'ai, je reçois une erreur disant:
This system cannot be solved with the methods available to Reduce.
Edit: voici l'expression réelle:
{L - (m^2 ((-2 + e)^2 \[Delta] + (5 +
2 e (-7 + 4 e)) \[Tau]) \[Omega])/(36 (2 - 3 e + e^2)^2)} > {0}
Je veux que ce soit affiché sous forme de \[delta]< *something*
Merci!
La solution
Tout d'abord, se Mathematica à quelque chose de sortie exactement comme vous le feriez comme il est quelque chose d'un art noir, et nécessite beaucoup de patience. Cela dit, si vous appliquez Reduce
à l'expression originale, comme par Bélisaire , vous obtiendrez
In[1]:=Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]
Out[1]:= r < L - 2 x^3
Cependant, comme vous l'avez dit, ce n'est pas la pleine expression, et Reduce
produit ce qui ne peut être décrit comme moins de réponse utile lorsqu'il est appliqué. Il est à ce point où la patience et beaucoup de traitement supplémentaire est nécessaire. Je commence par
In[2]:=Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify
Bien que cela ne vous donne pas une réponse propre, il vaut mieux qu'avant et révèle plus de la structure de votre solution. (Je ne voudrais pas utiliser FullSimplify
comme mélanges que Delta
avec les autres termes.) À ce stade, nous devons en savoir plus sur les termes eux-mêmes, et la sortie de In[2]
est pas tout à fait aussi utile que nous voulons.
Je re-développer avec ce LogicalExpand
qui vous donne douze termes qui sont nettement plus simple que la seule donne ce que Reduce
. (Vous remarquerez que seuls les six derniers termes impliquent effectivement Delta
, donc je vérifier que les conditions variables correspondent effectivement celles-ci.) La sélection de ces six derniers termes seulement,
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)
Le troisième terme est tautologique, mais ne Simplify
FullSimplify
peut ne pas sembler l'enlever. Et nous sommes vraiment seulement intéressé à moyen terme de toute façon. Si Omega > 0
votre expression peut ensuite être extrait par %[[2,1,2]]
.
Mettre tout cela ensemble dans une seule expression:
In[4]:=Simplify[LogicalExpand[Reduce[<expression>, Delta, Reals]]][[-6;;]] //
Simplify // #[[2,1,2]]&
Out[4]:= Delta < something
Après avoir écrit, je réalise qu'il ya une manière beaucoup plus simple d'aborder ce sujet. Je refais la ligne 2, ci-dessus, comme suit:
In[5]:= Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify //
Cases[#, ___ && Delta < _ && ___, Infinity]&
Out[5]:= {Omega > 0 && Delta < something}
Ou bien, vous ne fassiez vraiment savoir que m != 0
et Omega > 0
vous pouvez faire
In[6]:= Reduce[ <expr> && m!=0 && Omega > 0, Delta, Reals ] // LogicalExpand //
Simplify // #[[2]]&
Autres conseils
Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]
Fera.
Comme je ne l'utilise Mathematica pour l'édition ou de la présentation, peut-être quelqu'un d'autre peut venir avec quelques conseils supplémentaires.
Modifier
en fonction de votre commentaire, vous pouvez essayer:
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]
Là où je corrige quelques erreurs de syntaxe. Mais vous constaterez que l'expression résultante est plutôt désagréable. Pour simplifier encore vous devez connaître les plages valides pour votre vars. S'il vous plaît poster cette information si vous l'avez. HTH!
Vérifier la sortie du
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]]
voir que
r[[2,1,1,1]] gives \\[Delta]>expr,
r[[2, 1, 2, 2]] gives \\[Delta]< expr,
parce que le signe de \ [Omega] dans le dénominateur de expr. Tout cela ne tient pas compte des autres conditions sur les valeurs de L, e, m et \ [Omega] qui va changer le résultat et les différentes versions de Mathematica peuvent changer la forme du résultat de simplifier [Réduire []] qui annule tout cela .
Une partie de la difficulté à réduire les expressions renvoyées par plus [] et LogicalExpand [] est que l'expression fournie implique une division par zéro lorsque e = 1 ou 2 =.
Je reçois quelque chose bearably compact avec
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))
où je l'ai dépensé aucun effort pour remplacer les noms de symboles avec des symboles.
(Pourquoi l'hypothèse [...]? Parce que je suis trop paresseux pour se rappeler d'obtenir les mêmes hypothèses coincées dans chaque étape de simplification.)