Прежде всего, заставить Mathematica выводить что-то в точности так, как вам хотелось бы, это что-то вроде черного искусства и требует большого терпения.Тем не менее, если вы примените Reduce
к своему исходному выражению, согласно Велисарию , вы получите
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]]&