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}}
Help yourself!
cheers,
Peltio
invalid address in reply-to. Crafty demunging required to mail me.