12. Asymptotic Series#
Gaussian Perturbation#
In Zee’s book [Zee, 2010], he considers the following “baby problem” of computing the integral
He uses this as an example for explaining Feynman rules with a close connection to scalar field theory. For our purposes we will simplify this by setting \(m=1\) and calling \(\epsilon = \lambda /4!\). Through some tricks, he notes that this can be expressed as
suggesting that the solution might be expressed as a power series in \(\epsilon\):
For example, we can express \(Z(0, \epsilon)\) as
and expand \(Z(J, \epsilon)\) as (second order term not checked yet)
The question we want to ask here is: how well do such series converge? Such series are called asymptotic series in the sense that, for a fixed number of terms \(N\), they converge for small \(\epsilon\). To be precise
(Asymptoticity)
A power series \(\sum_{n=0}^{\infty} a_n \epsilon^n\) is said to be asymptotic to a function \(f(\epsilon)\) if, for fixed \(N\) and sufficiently small \(\epsilon\):
(See [Boyd, 1999] for details.)
Note that this is not what we typically want in terms of convergence. Rather, we would like to know that, for sufficiently small but fixed \(\epsilon\), the power series will converge as the number \(N\) of terms included increases. This switches the order of these, fixing \(N\) instead and requiring sufficiently fast converges for small \(\epsilon\).
[Boyd, 1999] contains a lot of wisdom about such asymptotic series, including heuristics about when an expansion might be asymptotic. One heuristic is that the asymptotic series will be best if truncated at \(n = N\) once the terms stop decreasing.
Here we demonstrate some properties of the asymptoticity of the expansion for \(F(\epsilon) = Z(0, \epsilon)/\sqrt{2\pi}\).
from functools import partial
from scipy.special import factorial, factorial2
from scipy.integrate import quad
def f(q, eps):
return np.exp(-q**2/2-eps*q**4)/np.sqrt(2*np.pi)
def F(eps):
return quad(partial(f, eps=eps), -np.inf, np.inf, epsabs=1e-13, epsrel=1e-13)[0]
epss = np.linspace(0, 0.1, 1000)
fig, ax = plt.subplots()
ns = np.arange(50)
ax.plot(epss, list(map(F, epss)), ':k')
ylim = ax.get_ylim()
def coeff(n):
if n < 1:
return 1
return factorial2(4*n-1)/factorial(n)
for N in range(1, 10):
ax.plot(epss, np.sum([coeff(n)*(-epss)**n for n in range(N)], axis=0),
'-', label=f"{N=}")
ax.legend()
ax.set(xlabel="$\epsilon$", ylabel="$F(\epsilon)$", ylim=ylim);
Here we start to see the problem: higher order approximations better match the behaviour of \(F(\epsilon)\) for small \(\epsilon\), but diverge more and more quickly. This suggests that the radius of convergence is small, and indeed, it is zero here. Considering the series, this is reasonable since the coefficients \((4n-1)!!/n! \sim n^{n-1/2}\) (using Sterling’s approximation) will always eventually dominate over the powers of \(\epsilon^n\):
For a given \(\epsilon\), the terms have a minimum magnitude for \(n=N\) when
Since the series is alternating, a good approximation for the error obtained by truncating at \(n=N\):
As we shall see below, this is actually a pretty good approximation. With this optimal truncation, the approximation is what is called superasymptotic (see [Boyd, 1999]). Superasymptotic approximations typically have an optimal truncation \(N \propto 1/\epsilon\) with an error \(O\bigl(\exp(-c/\epsilon)\bigr)\). In our
(Superasymptotic)
An optimally-truncated asymptotic series is a superasymptotic approximation. Typically power series \(\sum_{n=0}^{\infty} a_n \epsilon^n\) is said to be asymptotic to a function \(f(\epsilon)\) if, for fixed \(N\) and sufficiently small \(\epsilon\):
(See [Boyd, 1999] for details.)
Details
To estimate when the terms will stop decreasing, we can use Sterling’s approximation
applied to
The terms have a minimum size \(n=N\) when
Since this is an alternating series, the size of the omitted term provides an estimate of the error. (Technically, we should hold \(\epsilon\) fixed, but use \(n=N+1\). This gives:)
The black pluses above represent our error estimate \(E(N)\) after optimally truncating at the \(n=N\) which minimizes the size of the terms \(a_n\epsilon^n\) and the blue lines represent the simplified upper bound of the \(N\)’th term given above.
import sympy
m, J, eps = sympy.var(r'm,J,\epsilon')
m = 1
f = sympy.exp(J**2/2/m**2)
c = 1
terms = []
N = 10
for n in range(N):
terms.append(c*f.subs(dict(J=0)).simplify())
f = f.diff(J, J, J, J).simplify()
c *= eps
[t.subs([(eps, 1)]) for t in terms]
[1,
3,
105,
10395,
2027025,
654729075,
316234143225,
213458046676875,
191898783962510625,
221643095476699771875]
Analytic Solution#
We note that \(Z(0, \epsilon)\) has an analytic solution:
where \(K_{\alpha}(x)\) is the modified Bessel function of the second kind, which satisfies:
Cumulants#
Consider the following power series:
Ignoring issues of convergence, one can algebraically express the coefficients \(m_n\) (called the moments) in terms of the coefficients \(\kappa_n\) (called the cumulants). This is the subject of formal cumulants.
Log of a Series#
Suppose that
Borel Resummation#
How do we work with such asymptotic series? Well, if our coupling constant happens to be small enough, then we can take advantage of the superasymptotic approximation to get extremely high precision with relatively little work computing to order \(N\sim 1/\epsilon\) and stopping. This is what is typically done in the Standard Model, especially in QED where the small parameter is the fine-structure constant \(\alpha = 1/137.035999084(21)\). Asymptoticity of QED means that we can keep improving to roughly order 137 in perturbation theory, and is the reason QED is one of the most spectacularly accurate scientific theories.
On the other hand, asymptoticity also means that we can’t keep gaining precision - at some point the series will start diverging. Through arguments along these lines, it is known that the Standard Model as currently formulated cannot be the final theory of everything (ToE).
Suppose we are faced with an asymptotic series, but we need better control. How can we proceed? Many strategies are discussed in [Bender and Orszag, 1999], but a common technique is to use Borel resummation. The idea is simple, given a power series
we define the Borel transform as
The additional factor here of \(n!\) in the denominator should assure that \(\mathcal{B}F(\epsilon)\) converges in many cases where \(F(\epsilon)\) does not. If the Borel transformation converges for all positive real numbers, then we can define the Borel sum of \(F\) as
A weaker form is to extend the partial sums:
import sympy
q, eps = sympy.var('q,\epsilon', positive=True)
Q = 2*sympy.exp(-q**2/2-eps*q**4).integrate((q, 0, sympy.oo))
Q = 2*sympy.exp(-eps*q**4).integrate((q, 0, sympy.oo))
Q
Assessment#
The following are divergent asymptotic series in the parameter \(\epsilon\). Explain (heuristically) why.
Stieltjes Function#
Zee’s Baby Problem#
Anharmonic Oscillator#
The ground state energy \(E(\epsilon)\) of the following anharmonic oscillator potential in quantum mechanics:
Linear Differential Equations#
where both \(\abs{f(x)} \rightarrow 0\) and \(\abs{u(x)} \rightarrow 0\) as \(\abs{x} \rightarrow \infty\).