# Tschirnhausen's solution of the cubic

A general cubic *polynomial* has the form
\[
ax^3+bx^2+cx+d
\]
but a general cubic *equation* can have the form
\[
x^3+ax^2+bx+c=0.
\]
We can always divide through by the coefficient of \(x^3\) (assuming it to be
non-zero) to obtain a monic equation; that is, with leading coefficient of 1.
We can now remove the \(x^2\) term by replacing \(x\) with \(y-a/3\):
\[
\left(y-\frac{a}{3}\right)^{\negmedspace 3}+a\left(y-\frac{a}{3}\right)^{\negmedspace 2}
+b\left(y-\frac{a}{3}\right)+c=0.
\]
Expanding and simplifying produces
\[
y^3+\left(b-\frac{a^2}{3}\right)y+\frac{2}{27}a^3-\frac{1}{3}ab+c=0.
\]
In fact this can be simplified by writing the initial equation as
\[
x^3+3ax^2+bx+c=0
\]
and then substituting \(x=y-a\) to obtain
\[
y^3+(b-3a^2)y+(2a^3-ab+c)=0.
\]
This means that in fact an equation of the form
\[
y^3+Ay+B=0
\]
is a completely general form of the cubic equation. Such a form of a cubic
equation, missing the quadratic term, is known as a *depressed cubic*.

We could go even further by substituting \[ y=z\sqrt{A} \] to obtain

\[ A^{3/ 2}z^3+A\sqrt{A}z+B=0 \]

and dividing through by \(A^{3/ 2}\) to produce

\[ z^3+z+BA^{-3/ 2}=0. \]

This means that

\[ z^3+z+W=0 \]

is also a perfectly general form for the cubic equation.

## Cardan's method

Although this is named for Gerolamo
Cardano (1501-1576), the method
was in fact discovered by Niccolò
Fontana (1500-1557),
known as Tartaglia ("the stammerer") on account of a injury obtained when a
soldier slashed his face when he was a boy. In the days before peer review and
formal dissemination of ideas, any new mathematics was closely guarded:
mathematicians would have public tests of skill, and a new solution method was
invaluable. After assuring Tartaglia that his new method was safe with him,
Cardan then proceeded to publish it as his own in his magisterial *Ars Magna*
in 1545. A fascinating account of the mix of Cardan, Tartaglia, and several
other egotistic mathematicians of the time, can be read
here.

Cardan's method solves the equation \[ x^3-3ax-2b=0 \] noting from above that this is a perfectly general form for the cubic, and where we have introduced factors of \(-3\) and \(-2\) to eliminate fractions later on. We start by assuming that the solution will have the form \[ x=p^{1/ 3}+q^{1/ 3} \] and so \[ x^3=(p^{1/ 3}+q^{1/ 3})^3=p+3p^{2/ 3}q^{1/ 3}+3p^{1/ 3}q^{2/ 3}+q. \] This last can be written as \[ p+q+3p^{1/ 3}q^{1/ 3}(p^{1/ 3}+q^{1/ 3}). \] We can thus write \[ x^3=3p^{1/ 3}q^{1/ 3}x+p+q \] and comparing with the initial cubic equation we have \[ 3p^{1/ 3}q^{1/ 3}=3a,\quad p+q=2b. \] These can be written as \[ pq=a^3,\quad p+q=2b \] for which the solutions are \[ p,q=b\pm\sqrt{b^2-a^3} \] and so \[ x = (b+\sqrt{b^2-a^3})^{1/ 3}+(b-\sqrt{b^2-a^3})^{1/ 3}. \] This can be written in various different ways.

For example, \[ x^3-6x-6=0 \] for which \(a=2\) and \(b=3\). Here \(b^2-a^3=1\) and so one solution is \[ x=4^{1/ 3}+2^{1/ 3}. \] Given that a cubic must have three solutions, the other two are \[ \omega p^{1/ 3}+\omega^2 q^{1/ 3},\quad \omega^2 p^{1/ 3}+\omega q^{1/ 3} \] where \(\omega\) is a cube root of 1, for example \[ \omega=\frac{1}{2}+i\frac{\sqrt{3}}{2}. \]

## And so to Tschirnhausen

At the beginning we eliminated the \(x^2\) terms from a cubic equation by a linear substitution \(x=y-a/3\) or \(y=x+a/3\). Writing in the year 1680, the German mathematician Ehrenfried Walther von Tschirnhausen (1651-1708) began experimenting with more general polynomial substitutions, believing that it would be possible to eliminate other terms at the same time. Such substitutions are now known as Tschirnhausen transformations and of course the modern general approach places them squarely within field theory.

Tschirnhausen was only partially correct: it is indeed possible to remove *some*
terms from a polynomial equation, and in 1858 the English mathematician George
Jerrard (1804-1863) showed that it
was possible to remove the terms of degree \(n-1\), \(n-2\) and \(n-3\) from a
polynomial of degree \(n\). In particular, the general quintic equation can be
reduced to
\[
x^5+px+q=0
\]
which is known as the *Bring-Jerrard form*; also honouring Jerrard's predecessor,
the Swedish mathematician Erland
Bring (1736-1798). Note
that Jerrard was quite well aware of the work of Ruffini, Abel and Galois in
proving the general unsolvability by radicals of the quintic equation.

Neither Bring nor Tschirnhausen had the advantage of this knowledge, and both were working towards a general solution of the quintic.

Happily, Tschirnhausen's work is available in an English translation, published in the ACM SIGSAM Bulletin by R. F. Green in 2003. For further delight, Jerrard's text, with the splendidly formal English title "An Essay on the Resolution of Equations", is also available online.

After that history lesson, let's explore how to remove both the quadratic and linear terms from a cubic equation using Tschirnhausen's method, and also using SageMath to do the heavy algebraic work. There is in fact nothing particularly conceptually difficult, but the algebra is quite messy and fiddly.

We start with a depressed cubic equation \[ x^3+3ax+2b=0 \] and we will use the Tschirnhausen transformation \[ y=x^2+rx+s. \]

This can be done by hand of course, using a somewhat fiddly argument, but for us the best approach is to compute the resultant of the two polynomials, which is a polynomial expression equal to zero if the two polynomials have a common root. The resultant can be computed as the determinant of the Sylvester matrix (named for its discoverer); but we can simply use SageMath:

```
var('a,b,c,x,y,r,s')
cb = x^3 + 3*a*x + 2*b
res = cb.resultant(y-x^2-r*x-s,x).poly(y)
res
```

\[
\displaylines{
y^3+3(2a-s)y^{2}+3(ar^{2}+3a^{2}+2r-4as+s^{2})y\\\

{\ }\mspace4em -4b^{2}+2br^{3}-3ar^{2}s+6abr-9a^{2}s-6brs+6as^{2}-s^{3}
}
\]

Now we find values of \(r\) and \(s\) for which the coefficients of \(y^2\) and \(y\) will be zero:

```
sol = solve([res.coefficient(y,1),res.coefficient(y,2)],[r,s],solution_dict=True)
sol
```

\[ \left[\left\lbrace s : 2 , a, r : -\frac{b + \sqrt{a^{3} + b^{2}}}{a}\right\rbrace, \left\lbrace s : 2 , a, r : -\frac{b - \sqrt{a^{3} + b^{2}}}{a}\right\rbrace\right] \]

We can now substitute say the second solution into the resultant from above, which should produce an expression of the form \(y^3+A\):

```
cby = res.subs(sol[1]).canonicalize_radical().poly(y)
cby
```

\[ y^3-8 , a^{3} - 16 , b^{2} + 8 , \sqrt{a^{3} + b^{2}} b - \frac{8 , b^{4}}{a^{3}} + \frac{8 , \sqrt{a^{3} + b^{2}} b^{3}}{a^{3}} \] We can simply take the cube root of the constant term as our solution:

```
sol_y = solve(cby,y,solution_dict=True)
sol_y[2]
```

\[ \left\lbrace y : \frac{2 , {\left(a^{6} + 2 , a^{3} b^{2} - \sqrt{a^{3} + b^{2}} a^{3} b + b^{4} - \sqrt{a^{3} + b^{2}} b^{3}\right)}^{\frac{1}{3}}}{a}\right\rbrace \]

Now we solve the equation \(y=x^2+rx+s\) using the values \(r\) and \(s\) from above, and the value of \(y\) just obtained:

```
eq = x^2+r*x+s-y
eqrs = eq.subs(sol[1])
eqx = eqrs.subs(sol_y[2])
solx = solve(eqx,x,solution_dict=True)
solx[0]
```

\[ \left\lbrace x : \frac{b - \sqrt{a^{3} + b^{2}} - \sqrt{-7 , a^{3} + 2 , b^{2} - 2 , \sqrt{a^{3} + b^{2}} b + 8 , {\left(a^{6} + 2 , a^{3} b^{2} + b^{4} - {\left(a^{3} b + b^{3}\right)} \sqrt{a^{3} + b^{2}}\right)}^{\frac{1}{3}} a}}{2 , a}\right\rbrace \]

A equation, of err... rare beauty, or if not beauty, then something else. It certainly lacks the elegant simplicity of Cardan's solution. On the other hand, the method can be applied to quartic (and quintic) equations, which Cardan's solution can't.

Finally, let's test this formula, again on the equation \(x^3-6x-6=0\), for which \(a=-2\) and \(b=-3\):

```
xs = solx[0][x].subs({a:-2, b:-3})
xs
```

\[ \frac{1}{4} , \sqrt{-16 \cdot 4^{\frac{1}{3}} + 80} + 1 \]

This can clearly be simplified to

\[
1+\sqrt{5-4^{1/ 3}}
\]
It certainly *looks* different from Cardan's result, but watch this:

```
xt = QQbar(xs)
xt.radical_expression()
```

\[ \frac{1}{2}4^{2/ 3}+4^{1/ 3} \]

which is Cardan's result, only very slightly rewritten. And finally:

```
xt.minpoly()
```

\[ x^3-6x-6 \]