[Date Index]
[Thread Index]
[Author Index]
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**
| |