MathGroup Archive 1994

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

Search the Archive

Re: Solve--Solutions

  • To: mathgroup at yoda.physics.unc.edu
  • Subject: Re: Solve--Solutions
  • From: danl (Daniel Lichtblau)
  • Date: Thu, 3 Mar 1994 09:44:34 -0600

  I've explained this to several individuals. Here we (sob) go again,  
this time on MathGroup. Below is the bulk of the original post, with  
InputForm added for readability.


>I found following not satisafying behavior  of Mma:
>        (1) Find the zeroes of a third order polynomial:
>In[1]:= Solve[ 11x^3 - 20 x^2 - 10x + 22 == 0, x]  //N // InputForm
>Out[1]//InputForm= 

>  {{x -> -1.01566588029248938 + 3.19189119579732505*10^-16*I}, 

>   {x -> 1.22065442639653776 + 0.*I}, 

>   {x -> 1.61319327207776979 - 4.44089209850062616*10^-16*I}}
>This solution is wrong. 

>It does not exist a complex solution. 

>(...)
>Ok, you can get rid of the imaginary numbers by  using Chop. But
>anyway, you are interested in an analytic expression. (Without //N).
>Can you trust it? Appearently no!

  Okay, let's put this goblin to rest for another few months. It is a  
classical result from algebra that a cubic polynomial with (real)  
integer coefficients can have roots that cannot be expressed in terms  
of radicals without using I==Sqrt[-1]. This is indeed the case for  
almost all such polynomials, in the sense of measure. For a  
reference, see Algebra, Vol 1, by Van der Waerden (p. 189 in my  
edition; I have a bookmark there, I've been asked about this so  
much). We at WRI have no intention of "disproving" this result (we  
also do not square circles, though we may indeed slay the occasional  
dragon). Once you get a mix of I inside radicals, N[] will not be  
able to discern that the imaginary part is in fact zero.


>Everybody can construct polynomials with small imaginary parts
>and therefore you are not sure if there are really complex
>solutions.

  Not so. You have a cubic with all real coeffs, and N[] tells you  
that no pair of roots are complex conjugates. Hence you know for a  
certainty that all the roots are real.


>What to do?
>Forget about the analytic solution and use "brutal force": 

>In[2]:= NSolve[ 11x^3 - 20 x^2 - 10x + 22 == 0, x] // InputForm
>Out[2]//InputForm= 

>  {{x -> -1.0156658802924896}, {x -> 1.22065442639653753}, 

>   {x -> 1.61319327207777041}}

  This is not a bad idea. What happens here is the equation is sent  
to NRoots (you could even call it directly, and save a bit of time).  
NRoots uses the Jenkins-Traub algorithm, and apparently can discern  
that all roots lie on the real axis.


>But the worse thing is 

>(...)
>that the Option VerifySolutions does  not realize the wrong
>solution.

  The solution in terms of radicals that is passed in to the verifier  
is correct. After verification, you hit it (the soln set) with N, and  
small complex quantities arise in the course of numerically  
approximating these radicals that involve I. Both the verifier and  
N[] are working as they should in this case.

  I hope this clears up a bit of the confusion about radical  
solutions to cubic and quartic polynomials.

  --Dan'L
  Daniel Lichtblau, WRI








  • Prev by Date: Transferring notebooks from the Mac to the NeXT
  • Next by Date: Re: Nonlinear Discrete
  • Previous by thread: Re: Transferring notebooks from the Mac to the NeXT
  • Next by thread: Re: Solve--Solutions