Pergunta

Estou usando o Mathematica 7 na interface do notebook e quero reorganizar uma inequação para obter uma determinada variável de um lado.Por exemplo.

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

L > r + 2 x^3

No entanto, eu quero:

r < L-2x^3

Existe alguma maneira de instruir o FullSimplify a ordenar as variáveis ​​de uma maneira específica?Também estou usando o Mathematica para apresentação, então a maneira como organizo as variáveis ​​é importante para mim.

Obrigado

RS

Editar:Eu tentei Reduzir, embora funcione para este exemplo, não funciona para a expressão real que tenho, recebo um erro dizendo:

 This system cannot be solved with the methods available to Reduce.

Editar:aqui está a expressão real:

{L - (m^2 ((-2 + e)^2 \[Delta] + (5 + 
     2 e (-7 + 4 e)) \[Tau]) \[Omega])/(36 (2 - 3 e + e^2)^2)} > {0}

Eu quero que isso seja exibido na forma de \[delta]< *something*Obrigado!

Foi útil?

Solução

Primeiro de tudo, fazer com que o Mathematica produza algo exatamente como você gostaria é uma espécie de arte negra e requer muita paciência.Dito isto, se você se inscrever Reduce à sua expressão original, conforme Belisário, você conseguiria

In[1]:=Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]
Out[1]:= r < L - 2 x^3

No entanto, como você apontou, esta não é a expressão completa e Reduce produz o que só pode ser descrito como uma resposta pouco útil quando aplicado a ela.É neste ponto que é necessária paciência e muito processamento extra.eu começaria com

In[2]:=Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify

Embora isso não forneça uma resposta clara, é melhor do que antes e revela mais da estrutura da sua solução.(eu não usaria FullSimplify como isso mistura Delta com os outros termos.) Neste ponto, precisamos saber mais sobre os próprios termos e o resultado de In[2] não é tão útil quanto desejamos.

Eu re-expandiria isso com LogicalExpand o que lhe dá doze termos que são significativamente mais simples do que o que Reduce sozinho dá.(Você notará que apenas os últimos seis termos realmente envolvem Delta, então eu verificaria se as condições das variáveis ​​realmente correspondem a elas.) Selecionando apenas os últimos seis termos,

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)

O terceiro termo é tautológico, mas Simplify nem FullSimplify não consigo removê-lo.E, de qualquer forma, só estamos interessados ​​no médio prazo.Se Omega > 0 sua expressão pode então ser extraída via %[[2,1,2]].

Juntando tudo isso em uma expressão:

In[4]:=Simplify[LogicalExpand[Reduce[<expression>, Delta, Reals]]][[-6;;]] //
       Simplify // #[[2,1,2]]&
Out[4]:= Delta < something

Depois de escrever isso, percebi que existe uma maneira muito mais simples de abordar isso.Eu refazeria a linha 2 acima, da seguinte maneira:

In[5]:= Reduce[ <full expression>, Delta, Reals] // LogicalExpand // Simplify //
       Cases[#, ___ && Delta < _ && ___, Infinity]&
Out[5]:= {Omega > 0 && Delta < something}

Ou, desde que você realmente saiba disso m != 0 e Omega > 0 você pode fazer

In[6]:= Reduce[ <expr> && m!=0 && Omega > 0, Delta, Reals ] // LogicalExpand // 
        Simplify // #[[2]]&

Outras dicas

Reduce[x^3 + L + r > 3 x^3 + 2 r, r, Reals]

Vai fazer.

Como não uso o Mathematica para edição ou apresentação, talvez alguém possa me dar algum conselho extra.

Editar

com base no seu comentário, você pode tentar:

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]  

Onde corrigi alguns erros de sintaxe.Mas você descobrirá que a expressão resultante é bastante desagradável.Para simplificar ainda mais, você precisa conhecer os intervalos válidos para seus vars.Por favor, poste essa informação se você tiver.AH!

Inspecione a saída de

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]]  

para ver isso

r[[2,1,1,1]] gives \\[Delta]>expr, 

mas

r[[2, 1, 2, 2]] gives \\[Delta]< expr, 

porque o sinal de \[Omega] no denominador de expr.Tudo isso ignora as outras condições nos valores de L, e, m e \[Omega] que irão alterar o resultado e diferentes versões do Mathematica podem alterar a forma do resultado de Simplify[Reduce[]] o que invalidará tudo isso .

Parte da dificuldade em reduzir as expressões retornadas por Reduce[] e LogicalExpand[] é que a expressão fornecida envolve divisão por zero quando e=1 ou =2.

Eu consigo algo suportável compacto com

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))

onde não fiz nenhum esforço para substituir nomes de símbolos por símbolos.

(Por que presumir[...]?Porque tenho preguiça de lembrar de colocar as mesmas suposições em cada etapa de simplificação.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top