and the answering machine part is a LIE


Commutators & Galois

Suppose I had a machine that could quickly solve equations for me and plot the results. What would happen if I wiggled the inputs—how would the answers dance?

Boaz Katz uploaded a video showing Abel’s theorem—that quintic+ polynomials can’t be solved with radicals.†

The idea for this visualisation is apparently due to V I Arnol’d, from the 60’s

Here’s a code sketch in R:

#there’s some bogus R nonsense about c() and list() coming...
swirl <- list(start)

#twiddle the 6 inputs around
for (j in 1:326/8) {
swirl <- c( swirl, list( start + c(0,-8*twiddler(j)*j,0,8*twiddler(j)*j,0,0) ) ) } #change the zeroes to twiddle the other coefficients require(magrittr)    #as if you didn't already! require(animation) #you can replace this with just the 'for' loop for testing saveGIF({  for (swoop in swirl) {    #side by side    par(mfrow=c(1,2));

#organising the plots with aesthetic stuff on a second line; is that more readable? plot( swoop, pch=19, main='coefficients', xlim=c(-3,3), ylim=c(-3,3), col=rgb(0,0,0, 1-1:6/10) ); #polyroot finds the answers for you, and so is in some sense the “main part” of this script. If I feed polyroot(1,2,-3) it solves x² + 2x − 3 = 0. polyroot( swoop ) %>% plot(pch=19, cex=2, col=rainbow(5), main='solutions', xlim=c(-3,2), ylim=c(-3,5) ) }}, interval=.03,'Abel-Ruffini.5.clown-balls.gif', ani.width=700, ani.height=300)

The mathematics lesson, I guess, is that:

  • even though the braid you twirl with the coefficients is pretty simple (mostly just going around the outside),
  • the braid on the right is more interesting.

In Katz’s video you can see the noncommutativity of the commutator: he swaps coefficients a↔b, then b↔a, but the answers (roots) have by then switched.

Anyway, with this code you can twiddle the coefficients of quintic or whatever degree polynomial you like, and get a feeling for the Abel-Ruffini theorem yourself. In making this graphic I played around to several others and hopefully the above code will run without modification, so you can feed 3 numbers into polyroot(-, -, -) for a cubic, 7 numbers into

Here’s a few last code bits: rcomp start for a quartic. Then options(digits=1); (rcomp(4) -> coefficients); coefficients %>% polyroot is your basic pattern before plotting.

Have fun!

They can be solved with elliptic functions, which I understood better after reading parts of (a) John Stillwell’s book and (b) Ash & Gross’ book