MathGroup Archive 2013

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

Search the Archive

Re: Wrong Answer

  • 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:
    • Wrong Answer
      • From: christopher arthur <chris.arthur1@gmail.com>
  • Prev by Date: Re: Turning a Sequence into a List?
  • Next by Date: Re: Wrong Answer
  • Previous by thread: Re: Wrong Answer
  • Next by thread: Re: Wrong Answer