Re: here's one driving me mad!

• To: mathgroup at smc.vnet.net
• Subject: [mg44816] Re: here's one driving me mad!
• From: "Peltio" <peltio at twilight.zone>
• Date: Thu, 27 Nov 2003 11:39:16 -0500 (EST)
• References: <bpuqlc\$o6f\$1@smc.vnet.net>
• Reply-to: "Peltio" <peltioNOSP at Miname.com.invalid>
• Sender: owner-wri-mathgroup at wolfram.com

```Glenn Roberts wrote

>i have used the FindRoot function and it returns an output:
>{sd -> 10} say
>how do i get the output to return it without the sd -> bit ?

The most obvious answer is : apply the rule

sd /. {sd->10}
10

You can also suppress the sd-> bit with a rule Rule[_, v_] -> v

{sd->10} /. Rule[_,v_]->v
{10}

A more general approach could be the following procedure that uses
Dimensions to understand how many solutions and how many variables are
passed to it:

toValues[li_] := Module[
{newli, vars, sols},
sols = First[Dimensions[li]]; vars = Last[Dimensions[li]];
newli = li /. Rule[_, v_] -> v;
If[vars == 1, newli = Flatten[newli]];
If[sols == 1, First[newli], newli]
]

This procedure gives
- the value if there is only one solution in one variable
{{x->10}}//toValues
10
{x->10}//toValues
10
(as an aside: the latter works because First and Last give
the same single value (1) to sols and vars)
- a list of values if there are multiple solution in one variable
{{x->2},{x->-2}}//toValues
{2,-2}
or one solution in multiple variables
{{x->1,y->2}}//toValues
{1,2}
- and a list of lists when there are multiple solutions in multiple
variables
{{x->1,y->2},{x->0,y->-1}}//toValues
{{1,2},{0,-1}}