Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to choose real positive solutions only?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg74346] Re: How to choose real positive solutions only?
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Mon, 19 Mar 2007 02:05:54 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <etije4$irj$1@smc.vnet.net>

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
> mdix at tulane.edu
> 
> 
You cannot. However, you case use Mathematica pattern matching
capabilities to extract whatever you want from the solutions returned by
NSolve. For instance,

In[1]:=
eqns = {x^5 + y^2 + z == 1, 2*x + y - z == 2, x - 3*y + z == 3};
sols = NSolve[eqns, {x, y, z}]

Out[2]=
{{x\[Rule]-1.69511, y\[Rule]-5.04267,z\[Rule]-10.4329},
{x\[Rule]0.24097 + 1.42038 I, y\[Rule] -2.13854 + 2.13058 I, z\[Rule]
-3.6566 + 4.97134 I},
{x\[Rule] 0.24097 - 1.42038 I, y\[Rule] -2.13854 - 2.13058 I, z\[Rule]
-3.6566 - 4.97134 I},
{x\[Rule] 1., y\[Rule] -1., z\[Rule] -1.},
{x\[Rule] 0.213171, y\[Rule] -2.18024, z\[Rule] -3.7539}}

In[3]:=
(* We want the three variables negative *)
Cases[sols, {x_ -> xval_Real /; xval < 0, y_ -> yval_Real /; yval < 0,
     z_ -> zval_Real /; zval < 0}]

Out[4]=
{{x\[Rule]-1.69511, y\[Rule]-5.04267, z\[Rule]-10.4329}}

In[5]:=
(* We want the first variable positive and the other two negative *)
Cases[sols, {x_ -> xval_Real /; xval > 0, y_ -> yval_Real /; yval < 0,
     z_ -> zval_Real /; zval < 0}]

Out[6]=
{{x\[Rule]1., y\[Rule]-1., z\[Rule]-1.},
{x\[Rule]0.213171, y\[Rule]-2.18024, z\[Rule]-3.7539}}

HTH,
Jean-Marc


  • Prev by Date: Re: Re: SphericalPlot3D doesn't work
  • Next by Date: Re: Possible bug in NSolve[equation, variable, precission]
  • Previous by thread: How to choose real positive solutions only?
  • Next by thread: Re: How to choose real positive solutions only?