On Klein’s icosahedral solution of the quintic
February 5, 2012 Leave a comment

Icosahedral tiling of the sphere (click to view PDF)
On Klein’s icosahedral solution of the quintic
Background
Yonks ago, when I was at high school, I spent a while delving into E.T. Bell’s “Men of Mathematics” books. I was warned that they were somewhat biased and not all that accurate historically but I still enjoyed them. At the time I could not appreciate much of the mathematics that Bell mentioned but I did understand bits here and there. In particular I always remembered that he mentioned that Klein had established a connection between the rotations of the icosahedron and the solution of the quintic equation. I couldn’t imagine how this would work but I never forgot this intriguing idea. Searching through the books now over 15 years later I see that the relevant passage is from Bell’s discussion of Cauchy (ironically Bell doesn’t discuss Klein):
To give but one instance, the set of all rotations which twirl a regular icosahedron (twenty-sided regular solid) about its axes of symmetry, so that after any rotation of the set the volume of the solid occupies the same space as before, forms a group, and this group of rotations, when expressed abstractly, is the same group as that which appears, under permutations of the roots, when we attempt to solve the general equation of the fifth degree. [...] This beautiful unification was the work of Felix Klein (1849-1925) in his book on the icosahedron (1884).
Last year I found myself considering how this connection might work. I was able to see approximately but I was interested in the details and I decided it was time to find out. I bought a copy of Klein’s “Lectures on the Icosahedron and the Solution of the Fifth Degree” and started reading it and various other references. It was a delight to finally understand the connection. I decided to make a few notes for myself and as they took shape I thought it might be worth making them available online. Part of my motivation for doing so was this Mathoverflow question. It took me quite a while to get round to finishing them but I have at last done so and I have posted them online here. Any feedback would be greatly appreciated.
Sketching out the connection
Although I have written up the details of the quintic’s icosahedral geometry in the notes I mentioned, it might be worth saying a few brief words here. From an abstract point of view, one reason for the connection between the quintic and the icosahedron is that the group can be made to play three roles:
- As the Galois group of a general quintic (together with a distinguished square root of its discriminant)
- As the group of rotations of the icosahedron
- As the monodromy group of the hypergeometric differential equation with appropriate parameters (from Schwarz’s list)
More concretely, using a radical transformation, any quintic can be put in the form:
The vector roots then lies on the doubly-ruled quadric surface:

Doubly-ruled surface
Since the quintic, together with a square root of its discriminant, only determines the vector of roots up to an even permutation of its coordinates, we in fact obtain an -orbit in each of the two families of lines in the doubly-ruled surface. These families are naturally parameterised by the complex projective line which can be identified with the circumsphere of the icosahedron in such a way that the Galois
action becomes the group of icosahedral rotations. The quintic thus defines a point in the quotient of the circumsphere of an icosahedron by its group of rotations. Finally, it is not hard to see that finding a local inverse for this branched cover is equivalent to solving the quintic and, moreover, this can be accomplished using hypergeometric functions with
monodromy.
Implementing the solution
I think there’s nothing like actually doing something for yourself so I decided to check my calculations by writing a short python script to implement the icosahedral solution of the quintic. I am happy to report that it works! The code, which looks like this:
import sys, math, mpmath, numpy as N def f(z1, z2): #return z1*z2*(z1**10 + 11*z1**5*z2**5 - z2**10) u = (z1/z2)**5 return z1/z2 * (-1 + u * (11 + u)) def H(z1, z2): #return -(z1**20 + z2**20) + 228*(z1**15*z2**5 - z1**5*z2**15) - 494*z1**10*z2*10 u = (z1/z2)**5 return -1 + u * (-228 + u * (-494 + u * (228 - u))) def T(z1, z2): #return z1**30 + z2**30 + 522*(z1**25*z2**5 - z1**5*z2**25) - 10005*(z1**20*z2**10 + z1**10*z2**20) u = (z1/z2)**5 return 1 + u * (-522 + u * (-10005 + u * u * (-10005 + u * (522 + u)))) ...
is available here.