*This discussion is for implementation of a method to solve in radicals, 
solvable quintics. This feature, if implemented, would provide exact 
solutions for the same.*
*
*
Before we begin, please see this issue: 
#3548<http://code.google.com/p/sympy/issues/detail?id=3548>

As mentioned in the issue, we are going to try to use DS Dummit's theorems 
for:
1. Finding out whether a quintic is solvable.
2. If yes, then finding out exact solutions in radicals.

Now, without trying to understand too much about the proof of the theorems, 
I've been able to isolate the following points.

Let *f(x) = x^5 + px^3 + qx^2 + rx + s* be a polynomial over the field *Q*

The corresponding equation to be solved is:
 x^5 + px^3 + qx^2 + rx + s = 0 .............. (*1)


(There is no 4th degree term. We can reduce any 5th degree equation to such 
a form. [1] <http://en.wikipedia.org/wiki/Quintic_function> )

The first thing to do is to determine whether this is irreducible. This can 
be done using Eisenstein's 
criterion<http://en.wikipedia.org/wiki/Eisenstein's_criterion>. 
Or we can also use a method provided 
here<http://shreevatsa.wordpress.com/2009/09/05/testing-irreducibility-using-prime-numbers/>
.
(Note that these methods are only sufficient conditions)

Once we have determined the irreducibility of (*1), then we need to find 
need to find out whether this quintic is solvable or not. For this, we let:

f20(x) be a sixth degree polynomial defined in terms of coefficients of 
powers of x in (*1). For the definition of f20(x), please see the paper 
mentioned in original issue ( 
#3548<http://code.google.com/p/sympy/issues/detail?id=3548>
 ).
(This is not so relevant to the matter at hand though, so all you need to 
know is that f20(x) can be constructed once we know the quintic to solve. 
Also, the reason for calling it f20 is also mentioned in the paper.)

Now, (*1) is solvable if and only if f20(x) has a rational root.
To determine whether there is a rational root or not, we can use rational 
root test <http://en.wikipedia.org/wiki/Rational_root_test>, or we can just 
use solve() in sympy (Note that our goal here is not to just solve (*1); 
sympy can do that already. Our goal is to solve the quintic exactly and 
thus it may require more computation than finding the solution numerically.)

Now, let this rational root be 'q'.

Now, if (*1) has roots (x1, x2, ..., x5), then these roots are expressed in 
terms products of fifth roots of unity and some factors (r1,...,r4). As an 
example:
x1 = (r1 + r2 + r3 + r4 )/5

x2 = (ζ^4*r1 + ζ^3*r2 + ζ^2*r3 + ζ*r4 )/5

(where ζ is a fifth root of unity.)

and so on for all xi's. So, if we can find various ri's, ie r1, r2, r3, r4, 
then we can find the roots. See the paper for more information (though it 
isn't too relevant right now to know everything in too great a detail).

Now, let R1 = r1^5, and so on for all ri's. So, if we can find R1, R2, R3, 
R4, we can find ri's and thus we can find the roots.

R1 = r1^5 = l0 + l1 ζ + l2 ζ^2 + l3 ζ^3 + l4 ζ^4, ( here coefficients are 
small 'L' s)

Similarly, rest R2, R3, R4 can also be expressed as such. See paper's 
equations (4.1) to (4.4) more details.

So basically, here's the map:

x -> r -> R -> l

Now, the problem remains to find the various l's. (l1, l2, l3, l4)

Now, further in, the paper defines two equations:

x^2 + (T1 + T2*d )x + (T3 + T4*d ) = 0  ..............(*2)

x^2 + (T1 + T2*d )x + (T3 + T4*d ) = 0 ...............(*3)

(here d = sqrt(D) where D is the discriminant of the original quintic)

Roots of (*2) are l1 and l4
Roots of (*3) are l2 and l3

These T's can be calculated in terms of coefficients of the original 
quintic.

Using these, we can find l's.

The only problem that remains is this: Which root is l1 and which root is 
l4 (for *2, similarlt for *3) since order of there roots matters.
For that there's an extra condition on various l's:

(l1 - l4 )(l2 - l3 ) = O*d

Here O can also be calculated in terms of coefficients of the original 
quintic.
Now, we can go like this:
l -> R -> r -> x
And we'll have the exact roots.

-----------------------------------------------------------------

[1] http://en.wikipedia.org/wiki/Quintic_function

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
Visit this group at http://groups.google.com/group/sympy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to