Полностью простые неравенства и последующая их перестановка в Mathematica 7

StackOverflow https://stackoverflow.com/questions/4053315

Вопрос

Я использую 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))

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top