## Continuity and diameters of connected sets

The definition of uniform continuity (if it’s done right) can be phrased as: ${f\colon X\to Y}$ is uniformly continuous if there exists a function ${\omega\colon (0,\infty)\to (0,\infty)}$, with ${\omega(0+)=0}$, such that ${\textrm{diam}\, f(E)\le \omega (\textrm{diam}\, E)}$ for every set ${E\subset X}$. Indeed, when ${E}$ is a two-point set ${\{a,b\}}$ this is the same as ${|f(a)-f(b)|\le \omega(|a-b|)}$, the modulus of continuity. Allowing general sets ${E}$ does not change anything, since the diameter is determined by two-point subsets.

Does it make a difference if we ask for ${\textrm{diam}\, f(E)\le \omega (\textrm{diam}\, E)}$ only for connected sets ${E}$? For functions defined on the real line, or on an interval of the line, there is no difference: we can just consider the intervals ${[a,b]}$ and obtain

${|f(a)-f(b)|\le \textrm{diam}\, f([a,b]) \le \omega(|a-b|)}$

as before.

However, the situation does change for maps defined on a non-convex domain. Consider the principal branch of square root, ${f(z)=\sqrt{z}}$, defined on the slit plane ${G=\mathbb C\setminus (-\infty, 0]}$.

This function is continuous on ${G}$ but not uniformly continuous, since ${f(-1 \pm i y) \to \pm i }$ as ${y\to 0+}$. Yet, it satisfies ${\textrm{diam}\, f(E)\le \omega(\textrm{diam}\, E)}$ for connected subsets ${E\subset G}$, where one can take ${\omega(\delta)=2\sqrt{\delta}}$. I won’t do the estimates; let’s just note that although the points ${-1 \pm i y}$ are close to each other, any connected subset of ${G}$ containing both of them has diameter greater than 1.

In a way, this is still uniform continuity, just with respect to a different metric. Given a metric space ${(X,d)}$, one can define inner diameter metric ${\rho}$ on ${X}$ by letting ${\rho(a,b)}$ be the infimum of diameters of connected sets that contain both ${a}$ and ${b}$. This is indeed a metric if the space ${X}$ is reasonable enough (i.e., any two points are contained in some bounded connected set). On a convex subset of ${\mathbb R^n}$, the inner diameter metric coincides with the Euclidean metric ${d_2}$.

One might think that the equality ${\rho=d_e}$ should imply that the domain is convex, but this is not so. Indeed, consider the union of three quadrants on a plane, say ${A = \{(x,y) \colon x > 0\text{ or }y > 0\}}$. Any two points of ${A}$ can be connected by going up from whichever is lower, and then moving horizontally. The diameter of a right triangle is equal to its hypotenuse, which is the Euclidean distance between the points we started with.

Inner diameter metric comes up (often implicitly) in complex analysis. By the Riemann mapping theorem, every simply connected domain ${G\subset \mathbb C}$, other than ${\mathbb C}$ itself, admits a conformal map ${f\colon G\to \mathbb D}$ onto the unit disk ${D}$. This map need not be uniformly continuous in the Euclidean metric (the slit plane is one example), but it is uniformly continuous with respect to the inner diameter metric on ${G}$.

Furthermore, by normalizing the situation in a natural way (say, ${G \supset \mathbb D}$ and ${f(0)=0}$), one can obtain a uniform modulus of continuity for all conformal maps ${f}$ onto the unit disk, whatever the domain is. This uniform modulus of continuity can be taken of the form ${\omega(\delta) = C\sqrt{\delta}}$ for some universal constant ${C}$. Informally speaking, this means that a slit domain is the worst that can happen to the continuity of a conformal map. This fact isn’t often mentioned in complex analysis books. A proof can be found in the book Conformally Invariant Processes in the Plane by Gregory Lawler, Proposition 3.85. A more elementary proof, with a rougher estimate for the modulus of continuity, is on page 15 of lecture notes by Mario Bonk.

## Pisot constant beyond 0.843

In a 1946 paper Charles Pisot proved a theorem involving a curious constant ${\gamma_0= 0.843\dots}$. It can be defined as follows:

${\gamma_0= \sup\{r \colon \exists }$ monic polynomial ${p}$ such that ${|p(e^z)| \le 1}$ whenever ${|z|\le r \}}$

Equivalently, ${\gamma_0}$ is determined by the requirement that the set ${\{e^z\colon |z|\le \gamma_0\}}$ have logarithmic capacity 1; this won’t be used here. The theorem is stated below, although this post is really about the constant.

Theorem: If an entire function takes integer values at nonnegative integers and is ${O(e^{\gamma |z|})}$ for some ${\gamma < \gamma_0}$, then it is a finite linear combination of terms of the form ${z^n \alpha^z}$, where each ${\alpha }$ is an algebraic integer.

The value of ${\gamma_0}$ is best possible; thus, in some sense Pisot’s theorem completed a line of investigation that began with a 1915 theorem by Pólya which had ${\log 2}$ in place of ${\gamma_0}$, and where the conclusion was that ${f}$ is a polynomial. (Informally speaking, Pólya proved that ${2^z}$ is the “smallest” entire-function that is integer-valued on nonnegative integers.)

Although the constant ${\gamma_0}$ was mentioned in later literature (here, here, and here), no further digits of it have been stated anywhere, as far as I know. So, let it be known that the decimal expansion of ${\gamma_0}$ begins with 0.84383.

A lower bound on ${\gamma_0}$ can be obtained by constructing a monic polynomial that is bounded by 1 on the set ${E(r) = \{e^z \colon |z|\le r \}}$. Here is E(0.843):

It looks pretty round, except for that flat part on the left. In fact, E(0.82) is covered by a disk of unit radius centered at 1.3, which means that the choice ${p(z) = z-1.3}$ shows ${\gamma_0 > 0.82}$.

How to get an upper bound on ${\gamma_0}$? Turns out, it suffices to exhibit a monic polynomial ${q}$ that has all zeros in ${E(r)}$ and satisfies ${|q|>1}$ on the boundary of ${E(r)}$. The existence of such ${q}$ shows ${\gamma_0 < r}$. Indeed, suppose that ${p}$ is monic and ${|p|\le 1}$ on ${E(r)}$. Consider the function ${\displaystyle u(z) = \frac{\log|p(z)|}{\deg p} - \frac{\log|q(z)|}{\deg q}}$. By construction ${u<0}$ on the boundary of ${E(r)}$. Also, ${u}$ is subharmonic in its complement, including ${\infty}$, where the singularities of both logarithms cancel out, leaving ${u(\infty)=0}$. This contradicts the maximum principle for subharmonic functions, according to which ${u(\infty)}$ cannot exceed the maximum of ${u}$ on the boundary.

The choice of ${q(z) = z-1.42}$ works for ${r=0.89}$.

So we have ${\gamma_0}$ boxed between 0.82 and 0.89; how to get more precise bounds? I don’t know how Pisot achieved the precision of 0.843… it’s possible that he strategically picked some linear and quadratic factors, raised them to variable integer powers and optimized the latter. Today it is too tempting to throw some optimization routine on the problem and let it run for a while.

But what to optimize? The straightforward approach is to minimize the maximum of ${|p(e^z)|}$ on the circle ${|z|=r}$, approximated by sampling the function at a sufficiently fine uniform grid ${\{z_k\}}$ and picking the maximal value. This works… unspectacularly. One problem is that the objective function is non-differentiable. Another is that taking maximum throws out a lot of information: we are not using the values at other sample points to better direct the search. After running optimization for days, trying different optimization methods, tolerance options, degrees of the polynomial, and starting values, I was not happy with the results…

Turns out, the optimization is much more effective if one minimizes the variance of the set ${\{|p(\exp(z_k))|^2\}}$. Now we are minimizing a polynomial function of ${p(\exp(z_k)}$, which pushes them toward having the same absolute value — the behavior that we want the polynomial to have. It took from seconds to minutes to produce the polynomials shown below, using BFGS method as implemented in SciPy.

As the arguments for optimization function I took the real and imaginary parts of the zeros of the polynomial. The symmetry about the real axis was enforced automatically: the polynomial was the product of quadratic terms ${(z-x_k-iy_k) (z-x_k+iy_k)}$. This eliminated the potentially useful option of having real zeros of odd order, but I did not feel like special-casing those.

### Three digits

Real part: 0.916, 1.186, 1.54, 1.783
Imaginary part: 0.399, 0.572, 0.502, 0.199

Here and below, only the zeros with positive imaginary part are listed (in the left-to-right order), the others being their conjugates.

Real part: 0.878, 1.0673, 1.3626, 1.6514, 1.8277
Imaginary part: 0.3661, 0.5602, 0.6005, 0.4584, 0.171

### Four digits

Real part: 0.8398, 0.9358, 1.1231, 1.357, 1.5899, 1.776, 1.8788
Imaginary part: 0.3135, 0.4999 ,0.6163, 0.637, 0.553, 0.3751, 0.1326

Real part: 0.8397, 0.9358, 1.1231, 1.3571, 1.5901, 1.7762, 1.879
Imaginary part: 0.3136, 0.5, 0.6164, 0.6372, 0.5531, 0.3751, 0.1326

No, I didn’t post the same picture twice. The polynomials are just that similar. But as the list of zeros shows, there are tiny differences…

### Five digits

Real part: 0.81527, 0.8553, 0.96028, 1.1082, 1.28274, 1.46689, 1.63723, 1.76302, 1.82066, 1.86273
Imaginary part: 0.2686, 0.42952, 0.556, 0.63835, 0.66857, 0.63906, 0.54572, 0.39701, 0.23637, 0.08842

Real part: 0.81798, 0.85803, 0.95788, 1.09239, 1.25897, 1.44255, 1.61962, 1.76883, 1.86547, 1.89069
Imaginary part: 0.26631, 0.4234, 0.54324, 0.62676, 0.66903, 0.65366, 0.57719, 0.44358, 0.26486, 0.07896

Again, nearly the same polynomial works for upper and lower bounds. The fact that the absolute value of each of these polynomials is below 1 (for lower bounds) or greater than 1 (for upper bounds) can be ascertained by sampling them and using an upper estimate on the derivative; there is enough margin to trust computations with double precision.

Finally, the Python script I used. The function “obj” is getting minimized while function “values” returns the actual values of interest: the minimum and maximum of polynomial. The degree of polynomial is 2n, and the radius under consideration is r. The sample points are collected in array s. To begin with, the roots are chosen randomly. After minimization runs (inevitably, ending in a local minimum of which there are myriads), the new starting point is obtained by randomly perturbing the local minimum found. (The perturbation is smaller if minimization was particularly successful.)

import numpy as np
from scipy.optimize import minimize

def obj(r):
rc = np.concatenate((r[:n]+1j*r[n:], r[:n]-1j*r[n:])).reshape(-1,1)
p = np.prod(np.abs(s-rc)**2, axis=0)
return np.var(p)

def values(r):
rc = np.concatenate((r[:n]+1j*r[n:], r[:n]-1j*r[n:])).reshape(-1,1)
p = np.prod(np.abs(s-rc), axis=0)
return [np.min(p), np.max(p)]

r = 0.84384
n = 10
record = 2
s = np.exp(r * np.exp(1j*np.arange(0, np.pi, 0.01)))
xr = np.random.uniform(0.8, 1.8, size=(n,))
xi = np.random.uniform(0, 0.7, size=(n,))
x0 = np.concatenate((xr, xi))

while True:
res = minimize(obj, x0, method = 'BFGS')
if res['fun'] < record:
record = res['fun']
print(repr(res['x']))
print(values(res['x']))
x0 = res['x'] + np.random.uniform(-0.001, 0.001, size=x0.shape)
else:
x0 = res['x'] + np.random.uniform(-0.05, 0.05, size=x0.shape)

## Real line : Complex plane :: Hat : ?

The title is a word analogy puzzle. The plots below are hints. In each pair, the black curve is the same.

### x4

Answer: boa constrictor digesting an elephant.

## Three-point test for being holomorphic

This is a marvelous exercise in complex analysis; I heard it from Steffen Rohde but don’t remember the original source.

Let ${D=\{z\in \mathbb C\colon |z|<1\}}$. Suppose that a function ${f\colon D\rightarrow D}$ satisfies the following property: for every three points ${z_1,z_2,z_3\in D}$ there exists a holomorphic function ${g\colon D\rightarrow D}$ such that ${f(z_k)=g(z_k)}$ for ${k=1,2,3}$. Prove that ${f}$ is holomorphic.

No solution here, just some remarks.

• The domain does not matter, because holomorphicity is a local property.
• The codomain matters: ${D}$ cannot be replaced by ${\mathbb C}$. Indeed, for any function ${f\colon D\rightarrow\mathbb C}$ and any finite set ${z_1,\dots, z_n\in D}$ there is a holomorphic function that agrees with ${f}$ at ${z_1, \dots, z_n}$ — namely, an interpolating polynomial.
• Two points ${z_1,z_2}$ would not be enough. For example, ${f(z)=\mathrm{Re}\,z}$ passes the two-point test but is not holomorphic.

Perhaps the last item is not immediately obvious. Given two points ${z_1,z_2\in D}$, let ${x_k=\mathrm{Re}\,z_k}$. The hyperbolic distance ${\rho}$ between ${z_1}$ and ${z_2}$ is the infimum of ${\displaystyle \int_\gamma \frac{1}{1-|z|^2}}$ taken over all curves ${\gamma}$ connecting ${z_1}$ to ${z_2}$. Projecting ${\gamma}$ onto the real axis, we obtain a parametrized curve ${\tilde \gamma}$ connecting ${x_1}$ to ${x_2}$.

Since

$\displaystyle \int_{\tilde \gamma} \frac{1}{1-|z|^2} = \int_{\tilde \gamma} \frac{1}{1-|\mathrm{Re}\,z|^2}\le \int_{\gamma} \frac{1}{1-|\mathrm{Re}\,z|^2}\le \int_\gamma \frac{1}{1-|z|^2}$

it follows that ${\rho(x_1,x_2)\le \rho(z_1,z_2)}$. That is, ${f}$ is a nonexpanding map in the hyperbolic metric of the disk.

We can assume that ${x_1\le x_2}$. There is a Möbius map ${\phi}$ such that ${\phi(z_1)=x_1}$; moreover, we can arrange that ${\phi(z_2)}$ is a real number greater than ${x_1}$, by applying a hyperbolic rotation about ${x_1}$. Since ${\phi}$ is a hyperbolic isometry, ${\rho(x_1,\phi(z_2))\ge \rho(x_1,x_2)}$, which implies ${\phi(z_2)\ge x_2}$. Let ${\lambda(z)=x_1+(z-x_1)\dfrac{x_2-x_1}{\phi(z_2)-x_1}}$; this is a Euclidean homothety such that ${\lambda(x_1)=x_1}$ and ${\lambda(\phi(z_2))= x_2}$. By convexity of ${D}$, ${\lambda(D)\subset D}$. The map ${g=\lambda\circ \phi}$ achieves ${g(z_k)=x_k}$ for ${k=1,2}$.

The preceding can be immediately generalized: ${f}$ passes the two-point test if and only if it is a nonexpanding map in the hyperbolic metric. Such maps need not be differentiable even in the real-variable sense.

However, the three-point test is a different story.