• To: mathgroup at smc.vnet.net
• Subject: [mg130644] Re: Wrong Answer
• From: Bob Hanlon <hanlonr357 at gmail.com>
• Date: Sun, 28 Apr 2013 01:01:40 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• Delivered-to: l-mathgroup@wolfram.com
• Delivered-to: mathgroup-outx@smc.vnet.net
• Delivered-to: mathgroup-newsendx@smc.vnet.net
• References: <20130427030938.151746A1A@smc.vnet.net>

```\$Version

"9.0 for Mac OS X x86 (64-bit) (January 24, 2013)"

p = (px + t vx)^4 + (py + t vy)^4 == 1;
r = {px -> 0.5, py -> 0.5,
vx -> 0.5, vy -> 0.5} //
Rationalize;

sol1 = NSolve[p /. r, t]

{{t -> -2.68179}, {t -> -1. - 1.68179 I}, {t -> -1. + 1.68179 I}, {t ->
0.681793}}

Solve works if you use the replacement rules prior to solving

sol2 = Solve[p /. r, t]

{{t -> -1 - 2^(3/4)}, {t -> -1 - I*2^(3/4)},
{t -> -1 + I*2^(3/4)}, {t -> -1 + 2^(3/4)}}

These are the exact values of the approximate results

sol1[[All, 1, -1]] == sol2[[All, 1, -1]]

True

Solve does appear to have a problem if you substitute equal real values
into the general solution

sol3 = Solve[p, t] /. {px -> a, py -> a, vx -> a, vy -> a} //
Simplify[#, Element[a, Reals]] &

{{t -> -1}, {t -> -1}, {t -> -1}, {t -> -1}}

p /. r /. sol3

{False, False, False, False}

However, for unequal values

r = {px -> RandomReal[{0, 1}, WorkingPrecision -> 25],
py -> RandomReal[{0, 1}, WorkingPrecision -> 25],
vx -> RandomReal[{0, 1}, WorkingPrecision -> 25],
vy -> RandomReal[{0, 1}, WorkingPrecision -> 25]};

sol4 = NSolve[p /. r, t];

p /. r /. sol4

{True, True, True, True}

sol5 = Solve[p /. r, t];

p /. r /. sol5

{True, True, True, True}

sol6 = Solve[p, t] /. r // Sort;

p /. r /. sol6

{True, True, True, True}

sol4[[All, 1, -1]] == sol5[[All, 1, -1]] == sol6[[All, 1, -1]]

True

Bob Hanlon

On Fri, Apr 26, 2013 at 11:09 PM, christopher arthur <
chris.arthur1 at gmail.com> wrote:

> Hello,
>
> I've discovered that Solve[] gives me the wrong answer for some
> polynomial equations.  For example, consider the following equation,
> which should have exactly one positive, real answer for t.
>
> p:=(px + t vx)^4 + (py + t vy)^4==1
> r:={px->0.5,py->0.5,vx->0.5,vy->0.5}
> NSolve[p/.r,t]
>
> NSolve gives the right answers if I substitute for px,py,vx and vy
> before solving.  On the other hand, if I use Solve[] this way:
>
> Solve[p,t]/.r
>
> I get a different answer, and it's not correct.
> Does Solve[] just malfunction with quartic polynomials or is there
> something else happening?
>
> Chris
>
> mathematica 5.2
>
> Solve[p]
>
>

```

• References: