Borel-Padé Resummation

Perturbation Methods

Borel-Padé is the workhorse resummation technique for factorially divergent asymptotic series in quantum mechanics and field theory. The strategy combines two ideas. (1) BOREL: divide each coefficient by to tame the factorial growth — the formal series of has a finite radius of convergence even when the original series diverges everywhere. (2) PADÉ: rather than try to extend the Borel transform analytically by hand, fit a rational function to its first few coefficients. Together, the pair turns a wildly divergent perturbation expansion into a convergent numerical procedure whose accuracy improves order by order.

The setup. Consider an asymptotic series of the form

The factorial growth means the radius of convergence is zero — the partial sums diverge for every . This is the universal large-order behavior of perturbation theory in Hamiltonians with non-perturbative tunneling (the quartic anharmonic oscillator, the Stark effect, double-wells, gauge instantons in QFT). The constant in the denominator is precisely the action of the leading instanton — connecting perturbative coefficients to non-perturbative physics. See the resurgence page for that story.

The Borel transform

Define the Borel transform of the series by

With , the coefficients of are bounded — the series has finite radius of convergence . The original function is recovered by the Laplace-type integral

The integral converges when can be evaluated along the positive real axis and grows slower than there. Two conditions for this to make sense as a valid resummation: (i) the integral converges, (ii) the result is the same function the asymptotic series was approximating. Watson's theorem and its generalizations (Nevanlinna, Sokal) give the technical conditions; for Bender-Wu type series with definite-sign Stieltjes structure, both conditions are met.

But: we don't HAVE the Borel transform analytically. We have its first few coefficients . Truncating to a polynomial and integrating gives back exactly the original partial sum — no improvement. The polynomial truncation cannot extrapolate for or capture its singularity structure.

Padé on the Borel transform

The cure is to fit a RATIONAL function to the Borel coefficients instead of integrating their polynomial truncation. Build the Padé approximant of , then integrate that rational function against :

The rational approximant captures the leading SINGULARITIES of as poles of its denominator. For the AHO this is structurally important: the Bender-Wu coefficients imply has a singularity near (off the integration contour, fortunately for resummation), and Padé recovers that singularity from the first few coefficients. The integrand decays exponentially, so the integral is dominated by ; for not-too-large , the rational interpolation is excellent on the relevant range.

Code

# Borel-Pade resummation of a factorially divergent asymptotic series.
#
# Given coefficients a_n with a_n ~ (-1)^n n! / S^n for large n
# (Bender-Wu growth), the formal sum f(g) = sum_n a_n g^n is divergent
# for every g != 0. The Borel transform
#     B(t) = sum_n (a_n / n!) t^n
# has finite radius of convergence (= S), and the original function can
# be reconstructed via the Laplace integral
#     f(g) = int_0^infty exp(-t) B(g t) dt.
# Borel-Pade: replace B by a Pade approximant [m/n] of its truncated
# series, then integrate.

import numpy as np
from scipy.linalg import eigh
from scipy.integrate import quad
from math import factorial

def pade(coeffs, m, n):
    """[m/n] Pade approximant from coefficients a_0, ..., a_{m+n}."""
    M = m + n
    c = np.asarray(coeffs[:M+1], dtype=float)
    if n > 0:
        A = np.array([[c[m + i - k] if 0 <= m + i - k < len(c) else 0
                       for k in range(1, n + 1)]
                      for i in range(1, n + 1)])
        b_tail = np.linalg.solve(A, -c[m+1 : m+n+1])
        b = np.concatenate([[1.0], b_tail])
    else:
        b = np.array([1.0])
    a = np.zeros(m + 1)
    for i in range(m + 1):
        a[i] = sum(b[k] * c[i - k] for k in range(min(i, n) + 1))
    return a, b

def borel_pade_sum(coeffs, g, m, n):
    """Borel-Pade resummation of sum_k a_k g^k."""
    # Borel coefficients B_k = a_k / k!
    B = [coeffs[k] / factorial(k) for k in range(m + n + 1)]
    a_p, b_p = pade(B, m, n)
    def integrand(t):
        num = sum(a_p[i] * (g * t)**i for i in range(len(a_p)))
        den = sum(b_p[i] * (g * t)**i for i in range(len(b_p)))
        return np.exp(-t) * num / den
    val, _ = quad(integrand, 0, np.inf, limit=300,
                  epsabs=1e-14, epsrel=1e-14)
    return val

# ─── Apply to the AHO ground state ──────────────────────────────────────
# Convention: H = -1/2 d²/dx² + 1/2 x² + g x⁴.
# 'True' E_0(g) by SHO-basis diagonalization; coefficients by RS PT.

Nbasis = 80
X = np.zeros((Nbasis, Nbasis))
for n in range(Nbasis - 1):
    X[n, n+1] = np.sqrt((n + 1) / 2)
    X[n+1, n] = np.sqrt((n + 1) / 2)
X4 = X @ X @ X @ X
H0 = np.diag(np.arange(Nbasis) + 0.5)

def aho_exact(g):
    return float(eigh(H0 + g * X4, eigvals_only=True, subset_by_index=[0, 0])[0])

def bender_wu(Nmax):
    V = X4
    E = [0.5]
    psi = [np.zeros(Nbasis) for _ in range(Nmax + 1)]
    psi[0][0] = 1.0
    R = np.array([0.0] + [1.0 / n for n in range(1, Nbasis)])
    for k in range(1, Nmax + 1):
        Vpsi = V @ psi[k-1]
        Ek = psi[0] @ Vpsi
        E.append(Ek)
        rhs = -Vpsi + sum(E[j] * psi[k-j] for j in range(1, k))
        psi[k] = R * rhs; psi[k][0] = 0.0
    return E

A = bender_wu(11)

# ─── Compare partial sums, Pade, and Borel-Pade ─────────────────────────
def pade_eval(a, b, g):
    return (sum(a[i] * g**i for i in range(len(a))) /
            sum(b[i] * g**i for i in range(len(b))))

print(f"{'g':>5s}  {'true E_0':>14s}  {'[5/5] Pade err':>18s}  {'[5/5] B-Pade err':>20s}")
for g in [0.02, 0.05, 0.1, 0.2]:
    true = aho_exact(g)
    a_p, b_p = pade(A, 5, 5)
    pade_v   = pade_eval(a_p, b_p, g)
    bp_v     = borel_pade_sum(A, g, 5, 5)
    print(f"{g:5.2f}  {true:14.10f}  "
          f"{abs(pade_v - true):>18.2e}  "
          f"{abs(bp_v   - true):>20.2e}")

Output, comparing diagonal Padé and Borel-Padé on the AHO ground-state series:

    g        true E_0      [5/5] Pade err      [5/5] B-Pade err
 0.02    0.5140864273            2.18e-11              9.98e-14
 0.05    0.5326427548            2.71e-08              1.75e-10
 0.10    0.5591463272            2.12e-06              1.82e-08
 0.20    0.6024051637            6.92e-05              8.85e-07

The columns tell the story. At , both Padé and Borel-Padé hit single-digit-of-precision accuracy or better, but Borel-Padé wins by three orders of magnitude ( vs ). At , where the partial sum of the bare series has exploded to (vs true value ), Borel-Padé gives error — eight digits correct from a series that nominally diverges everywhere. At , Padé loses a couple of orders to Borel-Padé. The gap widens with : the harder the resummation problem, the more important it is to tame the factorial growth before fitting.

Why Borel-Padé works

Three structural reasons, all visible in the integrand.

(1) Factorial → exponential. The Borel transform converts growth into the bounded coefficients . Rational fits to slowly varying coefficients are dramatically better than rational fits to factorially growing ones. The Padé linear system is well-conditioned.

(2) Singularity capture. The dominant non-analytic structure of — the cut along the negative -axis encoding tunneling, the branch behavior, the resurgent singularities — gets packaged into a small number of SINGULARITIES OF in the Borel plane. A low-order Padé denominator can model those singularities accurately. The Laplace integral then transports that singularity information back through , giving nearly exactly.

(3) The integral is forgiving. The kernel kills the contribution from large where the Padé approximant becomes unreliable. Effectively you only need the Padé to be accurate on the interval where , which is a SHORT interval at small and a longer one at large . Convergence in and the order of Padé approximation are linked through the support of the integrand.

When it fails

Borel-Padé is robust for series of the AHO type — alternating signs, factorial growth, Borel-summable. Two failure modes worth knowing:

Practical recipe

For a Bender-Wu type asymptotic series in physics, here is the standard workflow.

  1. Compute as many coefficients as you reasonably can. Each additional order makes the Padé more accurate. For the AHO, perturbation theory in the SHO basis gives them recursively; in QFT, diagrammatic computation; in operator-overlap methods, recursive matrix-element evaluation.
  2. Form Borel coefficients .
  3. Build the diagonal Padé approximant of for several . Check stability of the result across different — divergence between approximants is a red flag.
  4. Integrate against numerically (Gauss-Laguerre quadrature is the natural choice). Sanity-check by comparing to a finite-element / SHO-basis diagonalization at small .
  5. If the result is unstable or the integral diverges, the series may not be Borel summable in the naïve sense — fall back to resurgent transseries or conformal mapping.

Related