2009-10-23 7 views
8

Supposons que je les résultats suivants:Mathematica: Se débarrasser du « x -> » dans FindInstance résultats

a=FindInstance[2*b^2 + b^3 == b^4 + t && t < 10 && t > -1, {b, t}, 
    Integers, 20] 
{{b -> -1, t -> 0}, {b -> 0, t -> 0}, {b -> 1, t -> 2}, {b -> 2, 
    t -> 0}} 

Comment puis-je me débarrasser de la « b-> » et juste obtenir le tableau de b réponses? Je peux obtenir à mi-chemin avec:

a[[All,1]] 
{b -> -1, b -> 0, b -> 1, b -> 2} 

mais comment puis-je juste:

{-1, 0, 1, 2} 

Merci

Répondre

12

je pourrais manquer quelque chose de la réponse de dreeves, mais la façon dont j'ai toujours cru vous l'avez fait simplement en écrivant:

b /. a 

Il existe un exemple de cela dans la section "Exemples de base" de the documentation for the Solve function, qui utilise le même style de sortie.

+0

Wow, c'est embarrassant. J'ai juste supposé que vous deviez explicitement mapper sur la liste des règles pour obtenir chaque valeur de 'b'. Mais, tu as raison, juste 'b /. a' sait donner une liste des b pour chaque règle de la liste. Vous gagnez ce tour, Will Robertson! – dreeves

3

Bien que la réponse de Will soit la façon canonique de le faire, je vais vous fournir quelques alternatives juste pour le plaisir.

In[37]:= ans={{b -> -1, t -> 0},{b -> 0, t -> 0},{b -> 1, t -> 2},{b -> 2, t -> 0}}; 

In[38]:= Cases[ans, (b -> a_) :> a, Infinity] 

Out[38]= {-1, 0, 1, 2} 

In[39]:= ans[[All, 1]][[All, 2]] 

Out[39]= {-1, 0, 1, 2} 

In[40]:= ans /. {b -> a_, _} :> a 

Out[40]= {-1, 0, 1, 2} 

In[41]:= (ans /. Rule -> List)[[All, 1, 2]] 

Out[41]= {-1, 0, 1, 2}