FullSimply неравенства, а затем переставить их в Mathematica 7 - PullRequest
5 голосов
/ 29 октября 2010

Я использую Mathematica 7 в интерфейсе ноутбука, и я хочу изменить неравенство, чтобы получить определенную переменную с одной стороны.Например,

FullSimplify[x^3+L+r>3x^3+2r]

Дает

L > r + 2 x^3

Тем не менее, я хочу:

r < L-2x^3

Есть ли в любом случае, мы можем дать FullSimplify команду упорядочивать переменные определенным образом?Я также использую Mathematica для презентации, поэтому для меня важно то, как я расположил переменные.

Спасибо

SR

Редактировать: я пытался уменьшить, хотя это работает для этого примера, оно не работает для фактического выражения, которое я имею, я получаю сообщение об ошибке,

 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* Спасибо!

Ответы [ 4 ]

2 голосов
/ 29 октября 2010

Прежде всего, заставить 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]]&
1 голос
/ 29 октября 2010
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]  

Где я исправил некоторые синтаксические ошибки.Но вы обнаружите, что полученное выражение довольно неприятно.Чтобы еще больше упростить его, вам нужно знать действительные диапазоны для ваших переменных.Пожалуйста, опубликуйте эту информацию, если она у вас есть.НТН!

0 голосов
/ 04 ноября 2010

Частично сложность сокращения выражений, возвращаемых 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))

, где я не тратил усилий на замену имен символов на символы.

(Зачем предполагать [...]? Потому что мне лень вспоминать, что на каждом этапе упрощения запутываются одни и те же предположения.)

0 голосов
/ 30 октября 2010

Проверьте вывод

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, 

потому что знак \ [Омега] в знаменателе выраж. Все это игнорирует другие условия для значений L, e, m и \ [Omega], которые изменят результат, и различные версии Mathematica могут изменить форму результата с Simplify [Reduce []], что сделает все это недействительным. .

...