2009-10-23 9 views
8

Załóżmy, że mam następujące wyniki:Mathematica: pozbycie się „x ->” w FindInstance wyniki

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

Jak mogę pozbyć się „b->” i po prostu tablicę b odpowiedzi? Mogę dostać w połowie drogi z:

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

ale jak mogę dostać się po prostu:

{-1, 0, 1, 2} 

Dzięki

Odpowiedz

12

I może być brakuje czegoś od odpowiedzi dreeves', ale tak jak ja zawsze wierzyłem w tym celu wystarczy napisać:

b /. a 

Istnieje przykład tego w sekcji "Podstawowe przykłady" z the documentation for the Solve function, która używa tego samego stylu wyjściowego.

+0

Wow, to żenujące. Po prostu założyłem, że musicie jawnie odwzorować listę reguł, aby uzyskać każdą wartość "b". Ale masz rację, tylko 'b /. a' wie, aby podać listę b dla każdej reguły z listy. Wygrywasz w tej rundzie, Will Robertson! – dreeves

3

Chociaż odpowiedź Willa jest kanonicznym sposobem na zrobienie tego, przedstawię kilka alternatywnych rozwiązań tylko dla zabawy.

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} 
Powiązane problemy