MathGroup Archive 1999

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

Search the Archive

Re: NSolve with conditions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg20086] Re: NSolve with conditions
  • From: "Allan Hayes" <hay at haystack.demon.co.uk>
  • Date: Thu, 30 Sep 1999 02:43:04 -0400
  • References: <7ssfgd$bkj@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Alphons,
The following examples may help.

sol = NSolve[{x^2 - ((y^2 + 1)y) == 0, x^2 == 1}, {x, y}]

{{x -> 1., y -> -0.34116390191400997 +
     1.1615413999972526*I}, {x -> -1.,
   y -> -0.34116390191400997 + 1.1615413999972526*I},
  {x -> 1., y -> -0.34116390191400997 -
     1.1615413999972526*I}, {x -> -1.,
   y -> -0.34116390191400997 - 1.1615413999972526*I},
  {x -> 1., y -> 0.6823278038280198},
  {x -> -1., y -> 0.6823278038280198}}

Cases[sol,
  sl_ /; (And[x > 0, y > 0] /. sl),
  {1}
  ]

{{x -> 1., y -> 0.6823278038280198}}

You will get some warning messages about inequalities with complex numbers;
these can be suppressed by first entering
Off[Greater::"nord"]
and turned back on with
On[Greater::"nord"]

In case symbolic solution is possible we can use InequalitySolve:

<< Algebra`InequalitySolve`

insol = InequalitySolve[{x^2 - ((y^2 + 1)y) == 0, x^2 == 1, x > 0, y > 0},
{x,
       y}]

x == 1 && y == Root[-1 + #1 + #1^3 & , 1]

N[insol]

x == 1. && y == 0.6823278038280193

ToRadicals[insol]

x == 1 && y == -(2/(3*(9 + Sqrt[93])))^(1/3) +
    (1/2*(9 + Sqrt[93]))^(1/3)/3^(2/3)

--
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565


Alphons Fakler <fakler at chemsens.pharma.ethz.ch> wrote in message
news:7ssfgd$bkj at smc.vnet.net...
> Hello,
>
> I'm trying to solve a system of linear equations by NSolve. How can I
> restrict the solutions, to a subset, that machtes given conditions.
>
> e.g.:
> GlgSys = {EDTAtot == 0.002,
>       EDTA1 == 10^10.26*EDTA*H,
>       EDTA2 == 10^6.61*EDTA1*H,
>       EDTA3 == 10^2.76*EDTA2*H,
>       EDTA + EDTA1 + EDTA2 + EDTA3 == EDTAtot,
>       H + 2*EDTAtot == 10^(-14)/H + 2*EDTA2 + 3*EDTA1 + EDTA3 + 4*EDTA};
>
> Following conditions should be kept:
> 0<= EDTA <= 0.002,
> 0<= EDTA1 <= 0.002,
> 0<= EDTA2 <= 0.002,
> 0<= EDTA3 <= 0.002,
> 0<= H <= 10^(-4)
>
> Thanks for your reply
>
>
> --
> Alphons Fakler
> Zentrum fur Chemische Sensoren
> ETH Technopark
> Technoparkstr. 1
> CH - 8005 Zurich
> Tel. (01) 445-1492
> Fax: (01) 445-1233
> EMail: fakler at chemsens.pharma.ethz.ch
>
>
>



  • Prev by Date: Re: checking for overlap
  • Next by Date: Mathematica programming language
  • Previous by thread: Is it possible to start a perl executable from mathematica?
  • Next by thread: Mathematica programming language