pick solutions



On 6/11/07, Thomas Widlar <twidlar at yahoo.com> wrote:

>  A beginner's question. Say I obtain a list a of solutions for x., e.g.
>
>  (%i19) a : solve(x^4-1);
>  (%o19) [x=%i,x=-1,x=-%i,x=1]
>
>  How do I process a into a list b : [%i,-1,-%i,1] so I can say
>
>    for x in b do something(x);

Something that I find useful with stuff like [x = foo, y = bar] etc.
is to pass that list or an element of it to ev in order to evaluate
some expression with those values of x and y or whatever.

e.g.

solve ([x^2 + y^2 = 1, x = y], [x, y]);
map (lambda ([e], ev (foo (x, y), e)), %);
 => [foo (-1/sqrt(2), -1/sqrt(2)), foo (1/sqrt(2), 1/sqrt(2))]

In the lambda expression above, subst(e, foo(x, y)) would probably also work.
Also sublis(e, foo(x, y)).

FWIW
Robert Dodier