Re: Extracting solutions from Solve[]
- To: mathgroup at smc.vnet.net
- Subject: [mg82581] Re: Extracting solutions from Solve[]
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Thu, 25 Oct 2007 06:09:08 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <ffn0bv$5o0$1@smc.vnet.net>
Isaac Martinez G. wrote:
> Hello group:
> New guy to Mathematica and I am using the Solve function to find all the roots of a non linear set of equations.
> My question is once I have all the solution I am getting rid of all the complex ones and then I need to keep the ones that are within the interval [0,1].
> I have the following nested list after removing complex values:
> {{}, {}, {}, {}, {}, {}, {}, {}, {
> 1., -0.357968, -0.0366376}, {1., -0.357968, -0.0366376}, {}, {}, {}, {}, \
> {0.326026, -0.812319, 0.0112833}, {-0.791102,
> 0.283189, 0.0113524}, {}, {}, {0.454731, 0.840435, 0.0318799}, {}, {}, \
> {0.999998,
> 1.8482, 1.63961}, {0.999997, 1.8482, 1.63962}, {0.998429, -2.49158,
> 3.06313}, {0.999101, -2.49158, 3.06323}}
>
> I need to take the solution/group that is within [0,1].
> How do you do this??
> Any help is appreciated....no luck so far...
One possible way, using *Cases* and interval arithmetic:
In[1]:= sols = {{}, {}, {}, {}, {}, {}, {}, {}, {1., -0.357968, \
-0.0366376}, {1., -0.357968, -0.0366376}, {}, {}, {}, {}, {0.326026, \
-0.812319, 0.0112833}, {-0.791102, 0.283189,
0.0113524}, {}, {}, {0.454731, 0.840435,
0.0318799}, {}, {}, {0.999998, 1.8482, 1.63961}, {0.999997,
1.8482, 1.63962}, {0.998429, -2.49158,
3.06313}, {0.999101, -2.49158, 3.06323}};
In[2]:= Cases[sols, {a_, b_, c_} /;
IntervalMemberQ[Interval[{0, 1}], a] &&
IntervalMemberQ[Interval[{0, 1}], b] &&
IntervalMemberQ[Interval[{0, 1}], c]]
Out[2]= {{0.454731, 0.840435, 0.0318799}}
--
Jean-Marc