       Re: NSolve output

• To: mathgroup at smc.vnet.net
• Subject: [mg129444] Re: NSolve output
• From: Bob Hanlon <hanlonr357 at gmail.com>
• Date: Mon, 14 Jan 2013 23:28:24 -0500 (EST)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• Delivered-to: l-mathgroup@wolfram.com
• Delivered-to: mathgroup-newout@smc.vnet.net
• Delivered-to: mathgroup-newsend@smc.vnet.net
• References: <20130113025310.BFB386957@smc.vnet.net>

```Clear[s1, s2];

dpi1s1 = Rationalize[
0.3125 - 0.0645 s1^2 + 0.0083205 s1^3 + 0.125 s2^2 +
s1 (-0.26 + (-0.03225 + 0.0645 s2) s2), 0];

dpi2s2 = Rationalize[
0.3125 + s2 (-2.4375 + (-0.25 + 0.0645 s1) s1 +
(-0.375 + 0.5 s2) s2), 0];

The easiest way is to just add the constraints

soln1 = NSolve[
{dpi1s1 == 0, dpi2s2 == 0, 0 < s1 < 1, 0 < s2 < 1},
{s1, s2}][]

{s1 -> 0.986758, s2 -> 0.117545}

soln2 = Solve[
{dpi1s1 == 0, dpi2s2 == 0, 0 < s1 < 1, 0 < s2 < 1},
{s1, s2}][] // N

{s1 -> 0.986758, s2 -> 0.117545}

soln3 = Reduce[
{dpi1s1 == 0, dpi2s2 == 0, 0 < s1 < 1, 0 < s2 < 1},
{s1, s2},
Backsubstitution -> True] // N // ToRules

{s1 -> 0.986758, s2 -> 0.117545}

Alternatively,

soln4 = Select[NSolve[
{dpi1s1 == 0, dpi2s2 == 0}, {s1, s2}],
And @@ Thread[0 < {s1, s2} < 1] /. # &][]

{s1 -> 0.986758, s2 -> 0.117545}

soln5 = Cases[NSolve[
{dpi1s1 == 0, dpi2s2 == 0}, {s1, s2}],
_?(And @@ Thread[0 < {s1, s2} < 1] /. # &)][]

{s1 -> 0.986758, s2 -> 0.117545}

Bob Hanlon

On Mon, Jan 14, 2013 at 1:34 PM, Trichy V. Krishnan <biztvk at nus.edu.sg> wrote:
> Hi:
>
> I have a simultaneous set of equations in two variables, namely, s1 and s2.  See below.
>
> s1 =.; s2 =.; dpi1s1 =.; dpi2s2 =.;
> dpi1s1 = 0.3125 - 0.0645 s1^2 + 0.0083205 s1^3 + 0.125 s2^2 +
>    s1 (-0.26 + (-0.03225 + 0.0645 s2) s2);
> dpi2s2 = 0.3125 +
>    s2 (-2.4375 + (-0.25 + 0.0645 s1) s1 + (-0.375 + 0.5 s2) s2);
>
>
> NSolve yields 7 pairs but I want to pick the pair(s) where both s1 and s2 are in (0, 1) domain. I am using a laborious method as follow, but can I get this in one step? Thanks.
>
> trichy
>
> soln = NSolve[dpi1s1 == 0 && dpi2s2 == 0, {s1, s2}, Reals];
> list = {s1, s2} /. soln;
> list1 = {{0, 0}};
> Do[If[list[[i, 1]] > 0,
>    If[list[[i, 1]] < 1, If[list[[i, 2]] > 0, If[list[[i, 2]] < 1,
>       list1[[1, 1]] = list[[i, 1] ]]]]], {i, Length[list]}];
> Do[If[list[[i, 1]] > 0,
>    If[list[[i, 1]] < 1, If[list[[i, 2]] > 0, If[list[[i, 2]] < 1,
>       list1[[1, 2]] = list[[i, 2] ]]]]], {i, Length[list]}];
> s1 = list1[[1, 1]]; s2 = list1[[1, 2]];
> {s1, s2}
>
>
>
>
>
>
> -----Original Message-----
> From: Bob Hanlon [mailto:hanlonr357 at gmail.com]
> Sent: Monday, January 14, 2013 1:01 PM
> To: mathgroup at smc.vnet.net
> Subject: Re: NSolve output
>
> \$Version
>
> "9.0 for Mac OS X x86 (64-bit) (November 20, 2012)"
>
> a = x z + 2 x y + 2 y z;
> v = x y z;
>
> a2 = a /. x -> 2 z;
> v2 = v /. x -> 2 z;
>
> NSolve[{a2 == 60, v2 == 40, x == 2 z, x > 0},  {x, y, z}]
>
> {{x -> 5.1156, y -> 3.05701, z -> 2.5578}, {x -> 7.46083,
>   y -> 1.43719, z -> 3.73042}}
>
>
> Solve[{a2 == 60, v2 == 40, x == 2 z, x > 0},
>   {x, y, z}, Reals] // N
>
> {{x -> 5.1156, y -> 3.05701, z -> 2.5578}, {x -> 7.46083,
>   y -> 1.43719, z -> 3.73042}}
>
>
> {Reduce[{a2 == 60, v2 == 40, x == 2 z, x > 0},
>     {x, y, z},
>     Backsubstitution -> True] // N // ToRules}
>
> {{x -> 5.1156, y -> 3.05701, z -> 2.5578}, {x -> 7.46083,
>   y -> 1.43719, z -> 3.73042}}
>
>
> Bob Hanlon
>
>
> On Sat, Jan 12, 2013 at 9:53 PM, Berthold Hamburger <b-hamburger at artinso.com> wrote:
>> Hello,
>>
>> I want to solve two simple equations with NSOLVE to calculate the
>> dimensions of a rectangular box that is open on top. The length of the
>> box is twice the width and the volume and area of the box are
>> respectively 40 cubic feet and 60 square feet.
>>
>> I defined the area and volume:
>> a = xz + 2xy + 2yz
>> v = xyz
>>
>> then substituted x with 2z:
>>
>> a2 = a /. x->2z
>> v2 = v /. x->2z
>>
>>
>>
>> a2 = 6 y z + 2 z^2
>> v2 = 2 y z^2
>>
>> solved with NSolve:
>> step1 = NSolve[{a2 == 60, v2 == 40}, {y, z}, Reals] [[1,2]] //Column
>>
>> which returns the results
>> {y->3.05701,z->2.5578}
>>
>> I would like to get an output that returns values for all 3 variables
>> x,y,z  as in
>>
>> {x->5.1156,y->3.05701,z->2.5578}
>>
>> but somehow cannot find a way to do it
>>
>> What would be the correct way for doing that?
>>
>> Regards
>>
>> Berthold Hamburger
>>
>

```

• References:
• NSolve output
• From: Berthold Hamburger <b-hamburger@artinso.com>
• Prev by Date: Re: NSolve output
• Next by Date: Re: Ask for help: how to let mathematica output Fortran
• Previous by thread: Re: NSolve output
• Next by thread: Re: NSolve output