MathGroup Archive 2004

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

Search the Archive

Re: Exact real solutions of cubic equations

  • To: mathgroup at smc.vnet.net
  • Subject: [mg46967] Re: [mg46932] Exact real solutions of cubic equations
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Thu, 18 Mar 2004 01:24:51 -0500 (EST)
  • References: <200403170054.TAA11707@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On 17 Mar 2004, at 01:54, JonasB at iui.se wrote:

> Hello,
>
> I would like to find the _exact_ real roots of some cubic polynomials.
> Mathematica seems to have problems determining that a root is real
>
> Solve[1 + a s + b s^2 + s^3 == 0, s]
>
> results in three complex solutions for a = -4 and b = 3. FullSimplify 
> does
> not help, either it does nothing or it gets stuck, depending on the 
> values
> of a and b. I can of course evaluate the solution numerically, but 
> that is
> not what I want. Does anyone know of a package that can simplify 
> expressions
> with complex numbers?
>
> Jonas
>
>
>

The problem is that although at least one of the roots is real there is 
no way to tell which one unless your coefficients are numeric. 
Moreover, it is not always possible to express the real root in 
radicals without using complex numbers. This has nothing to do with 
Mathematica, it's just mathematics. If you are asking for an expression 
in radicals for the real root then the answer is that no such general 
expression exists.

With specific values of a and b the situation is somewhat different. 
For example:

a = -4; b = 3;


FullSimplify[ComplexExpand[
    s /. Solve[1 + a*s + b*s^2 + s^3 == 0, s],
    TargetFunctions -> {Re, Im}]]


{-1 + Sqrt[7/3]*Cos[(1/3)*ArcCot[3*Sqrt[3]]] +
    Sqrt[7]*Sin[(1/3)*ArcCot[3*Sqrt[3]]],
   -1 - 2*Sqrt[7/3]*Cos[(1/3)*ArcCot[3*Sqrt[3]]],
   -1 + Sqrt[7/3]*Cos[(1/3)*ArcCot[3*Sqrt[3]]] -
    Sqrt[7]*Sin[(1/3)*ArcCot[3*Sqrt[3]]]}

gives you three real roots expressed in terms of trigonometric 
functions and inverse trigonometric functions.
Moreover, Mathematica does have a way of referring to the "real root" 
even in the general case :

Root[#^3 + b*#^2 + a*# + 1 & , 1]

  will always give you a real root of your equation for every real value 
of a and b. That's the best answer that can be given in general.


Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/


  • Prev by Date: Re: doing things on a procedural way and doing them on a functional way
  • Next by Date: RE: Re: Physical Constants package
  • Previous by thread: Exact real solutions of cubic equations
  • Next by thread: Re: Exact real solutions of cubic equations