Re: How to choose real positive solutions only?
- To: mathgroup at smc.vnet.net
- Subject: [mg74563] Re: How to choose real positive solutions only?
- From: siewsk at bp.com
- Date: Mon, 26 Mar 2007 02:08:02 -0500 (EST)
- References: <eu1pip$evs$1@smc.vnet.net>
On Mar 24, 9:58 am, bsyeh... at gmail.com wrote:
> let sol={{x->3},{x->4+I},{x->4-I}} be such solution then
> Cases[sol,{x->y_}/;Positive[y]] does the filtering
>
> On 3/22/07, Terry <thar... at attglobal.net> wrote:
>
>
>
> > Manfred,
>
> > Let's say that your complex answers are in a variable called 'ans'
> > that is a list of the form a-> x + iy
> > Then do something like
>
> > realAns := ans a/. Select[ans,(FreeQ[#,Complex])&]
>
> > HTH
> > .....Terry
>
> > Dix, Manfredo A wrote:
>
> > >Hello,
> > >this question probably came up before, but anyway:
>
> > >suppose I have a system of 3 equations and 3 unknowns,
> > >which I want to solve numerically with NSolve.
> > >They are polynomial of degree "n" so that I get n solutions.
>
> > >Is there a way to tell Mathematica to just return the
> > >real positive solutions, and dismiss the imaginary and negative
> > >ones?
>
> > >thank you so much for any help,
> > >cordially,
>
> > >Manfred
> > >m... at tulane.edu
SelectPositive[soln_] := Select[soln, And @@ (Abs[#1[[2]]] == #1[[2]]
& ) /@ #1 & ]
eqns = {x^5 - y^2 + 3*z == 1, 7*x + y - 7*z == -2, x - 1*y + z ==
-3};
NSolve[eqns, {x, y, z}] // SelectPositive
Out[67]= {{x -> 2.38598, y -> 9.40062, z -> 4.01464}}