2010-09-22 4 views
1

La sortie de ma cellule mathematica est juste une longue équation algébrique produite à partir de Solve[%, Subscript[u, i, j + 1]].Comment extraire la sortie mathematica

{{Subscript[u, i, 1 + j] -> (1/(
    2 h^2))(-2 h^2 k Subscript[f, i, j] + 2 h^2 Subscript[u, i, j] + 
    2 b h^2 k Subscript[u, i, j] - 
    h k Subscript[u, -1 + i, j] Subscript[\[Mu], i, j] + 
    h k Subscript[u, 1 + i, j] Subscript[\[Mu], i, j] + 
    2 k Subscript[u, -1 + i, j] Subscript[\[Sigma], i, j] - 
    4 k Subscript[u, i, j] Subscript[\[Sigma], i, j] + 
    2 k Subscript[u, 1 + i, j] Subscript[\[Sigma], i, j])}} 

Je veux recueillir les termes $ u_ {i, j} $ sur le côté droit de cette expression, mais je ne sais pas comment obtenir une poignée sur la sortie de résoudre []. je veux faire quelque chose comme

Collect[%, {Subscript[u, i, j - 1], Subscript[u, i, j], Subscript[u, 
    i, j + 1]}] 

Mais ici,% ne fait pas très bien l'affaire. Des idées sur la façon dont je pourrais y parvenir?

+0

Cas [% [[1 , 1, 2]], Indice [u, _, _], Infini] –

Répondre

3

Mathematica renvoie la liste imbriquée, car en général il y aura plusieurs solutions avec plusieurs variables

La manière la plus robuste d'extraire le RHS d'une règle de remplacement est de l'utiliser réellement, par ex.

In[1]:= x/.Solve[x - m b - m c == 0,x] 
     Collect[First[%],m] 
Out[1]= {b m + c m} 
Out[2]= (b + c) m 

Cela dit, la commande partie [] (ou [[]]) peut prendre plus d'un argument, donc il n'a pas besoin d'être répété:

In[3]:= Solve[x-m b-m c==0,x] 
     Collect[%[[1,1,2]],m] 
Out[3]= {{x->b m+c m}} 
Out[4]= (b + c) m 
1

Si figured it out, Mathematica renvoie les listes imbriquées, qui peut être consulté par% [[1]] [[1]]