MathGroup Archive 2009

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

Search the Archive

Re: Bug in Solve?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg102950] Re: Bug in Solve?
  • From: Mariano Suárez-Alvarez <mariano.suarezalvarez at gmail.com>
  • Date: Thu, 3 Sep 2009 05:37:23 -0400 (EDT)
  • References: <h7l8rh$35s$1@smc.vnet.net>

On Sep 2, 5:02 am, tonysin <a2mg... at yahoo.com> wrote:
> I am just trying to learn Mathematica. What am I doing wrong here?
>
> I have a very simple equation:
>
> x^3 - 15 x + 2 = 0
>
> When I plot it in Mathematica 7,
>
> ClearAll[*]
> f[x_] := x^3 - 15 x + 2
> Plot[f[x], {x, -5, 5}]
>
> it gives the expected graph of a cubic, with three real roots near -4,
> 0, and 4.
>
> When I NSolve it,
>
> NSolve[f[x] == 0, x]
>
> it gives
>
> {{x -> -3.938}, {x -> 0.133492}, {x -> 3.80451}}
>
> which is exactly what you would expect from the graph.
>
> But when I Solve it
>
> Solve[f[x] == 0, x]
>
> it gives this mess
>
> {{x -> 5/(-1 + 2 I Sqrt[31])^(1/3) + (-1 + 2 I Sqrt[31])^(
>     1/3)}, {x -> -((5 (1 + I Sqrt[3]))/(
>      2 (-1 + 2 I Sqrt[31])^(1/3))) -
>     1/2 (1 - I Sqrt[3]) (-1 + 2 I Sqrt[31])^(1/3)}, {x -> -((
>      5 (1 - I Sqrt[3]))/(2 (-1 + 2 I Sqrt[31])^(1/3))) -
>     1/2 (1 + I Sqrt[3]) (-1 + 2 I Sqrt[31])^(1/3)}}
>
> I don't know how it looks in your font, but that "I" in each solution
> is the imaginary i.  Solve is saying this equation has no real roots,
> even though the graph clearly shows that all three roots are real.
>
> Can someone tell me if I am doing something wrong, or am I expecting
> something wrong, or if I just can't trust Mathematica?  Thanks for any
> help.

Those three numbers are real, even if this fact is
disguised by the expressions given by Mathematica,
who is probably just using the Cardan formulas to
find the roots.

It is a known characteristic of those formulas
of Cardan that they may involve complex numbers
eben when the end result is a real number, and
this was observed even at the time (ie, circa 1540)

You can ask Mathematica if the numbers are real,
as follows:

  FullSimplify[Element[x, Reals] /. Solve[f == 0, x]]

and that results in the expected

  {True, True, True}

-- m

-- m


  • Prev by Date: Re: Importing previously exported irregular lists
  • Next by Date: Re: Bug in Solve?
  • Previous by thread: Re: Bug in Solve?
  • Next by thread: Re: Bug in Solve?