*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.
