Полностью простые неравенства и последующая их перестановка в Mathematica 7
-
27-09-2019 - |
Вопрос
Я использую Mathematica 7 в интерфейсе ноутбука, и я хочу изменить неравенство так, чтобы я получил определенную переменную с одной стороны.Например.
FullSimplify[x^3+L+r>3x^3+2r]
Дает
L > r + 2 x^3
Тем не менее, я хочу :
r < L-2x^3
Можем ли мы в любом случае поручить FullSimplify упорядочить переменные определенным образом?Я также использую Mathematica для презентации, поэтому для меня важно, как я упорядочиваю переменные.
Спасибо
СР
Редактировать:Я попробовал Уменьшить, хотя это работает для этого примера, это не работает для фактического выражения, которое у меня есть, я получаю сообщение об ошибке,
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
к вашему первоначальному выражению, согласно Belisarius., Вы получите
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
что дает вам двенадцать терминов, которые значительно проще, чем то, что Reduce
один дает. (Вы отметите, что только последние шесть терминов на самом деле включают Delta
, поэтому я бы проверил, что условия переменной на самом деле совпадают на тех.) Выбор только в последних шести условиях,
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)
Третий член таутологический, но Simplify
ни FullSimplify
казалось, не может его удалить. И мы действительно заинтересованы только в среднем сроке в любом случае. Если Omega > 0
Затем ваше выражение может быть извлечено через %[[2,1,2]]
.
Сделать это все вместе в одно выражение:
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 != 0
и Omega > 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]
Где я исправил некоторые синтаксические ошибки. Но вы обнаружите, что полученное выражение довольно неприятно. Чтобы упростить его дальше, вам нужно знать действительные диапазоны для ваших вариантов. Пожалуйста, опубликуйте эту информацию, если у вас есть. 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. Все это игнорирует другие условия на значениях 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))
где я не тратил никаких усилий на замену названий символов символами.
(Почему предполагать[...]?Потому что я слишком ленив, чтобы помнить, что на каждом шаге упрощения нужно использовать одни и те же предположения.)