Note
Go to the end to download the full example code or to run this example in your browser via JupyterLite.
Liouville’s theorem: a bounded entire function is constant#
Cauchy’s integral formula on the circle \(|z| = R\) gives the estimate \(|f'(0)| \le M(R)/R\), where \(M(R)\) is the maximum of \(|f|\) on the circle. If \(f\) is entire and bounded, letting \(R \to \infty\) forces \(f' \equiv 0\). So every nonconstant entire function, such as \(\sin z\), is unbounded. Applied to \(1/p(z)\), the theorem proves the fundamental theorem of algebra.
import matplotlib.pyplot as plt
import numpy as np
from mathematicskit.complex_analysis import cauchy_integral_formula, circle_contour
Cauchy’s estimate \(|f'(0)| \le M(R)/R\)#
radii = np.geomspace(0.5, 20, 12)
functions = {r"$\sin z$": np.sin, r"$z^3 - z$": lambda z: z**3 - z, r"$e^{-z^2}$": lambda z: np.exp(-(z**2))}
fig, ax = plt.subplots()
for name, f in functions.items():
max_modulus = np.array([np.max(np.abs(f(circle_contour(0, R).points(2000)))) for R in radii])
ax.loglog(radii, max_modulus, "o-", label=f"M(R) for {name}")
derivative = abs(cauchy_integral_formula(f, circle_contour(0, 1.0), 0.0, n=1))
print(f"{name:12s} |f'(0)| = {derivative:.4f}, min over R of M(R)/R = {np.min(max_modulus / radii):.4f}")
ax.set_xlabel("R")
ax.set_ylabel("max |f| on |z| = R")
ax.set_title("Nonconstant entire functions are unbounded")
ax.legend()

$\sin z$ |f'(0)| = 1.0000, min over R of M(R)/R = 1.0422
$z^3 - z$ |f'(0)| = 1.0000, min over R of M(R)/R = 1.2500
$e^{-z^2}$ |f'(0)| = 0.0000, min over R of M(R)/R = 2.3319
<matplotlib.legend.Legend object at 0x7fd7c9244ef0>
The fundamental theorem of algebra#
If p had no roots, 1/p would be entire; it also tends to 0 as \(|z|\) grows, so it would be bounded, hence constant – impossible for a nonconstant p.
R = 1: max |1/p| on |z| = R: 1.93e+00
R = 10: max |1/p| on |z| = R: 1.00e-04
R = 100: max |1/p| on |z| = R: 1.00e-08
roots of p (where 1/p fails to be entire): [ 0.7271+0.9341j 0.7271-0.9341j -0.7271+0.43j -0.7271-0.43j ]
Total running time of the script: (0 minutes 0.162 seconds)