---
title: "Solving for the bound cloud's growth rate reproducibly"
description: "Find the cloud's complex frequency with a continued fraction, test convergence, avoid converging to the wrong overtone, and compare with a published table."
canonical_url: "https://sandboxphysics.com/stories/black-hole-superradiance/solving-the-bound-cloud-reproducibly/"
language: "en"
page_type: "story"
alternate_languages:
  zh-CN: "https://sandboxphysics.com/zh/stories/black-hole-superradiance/solving-the-bound-cloud-reproducibly/"
last_modified: "2026-11-12"
---

[Spinning black holes and boson clouds](https://sandboxphysics.com/stories/black-hole-superradiance/)

# Solving for the bound cloud's growth rate reproducibly

Sandbox Physics · 2026-11-12

The cloud's complex frequency is a zero of a continued fraction built from a three-term recurrence, and a zero found that way can be trusted only after three checks: it does not move when the fraction is made deeper, it is the ground state and not an overtone, and it reproduces a published table. Our solver passes all three. It matches Dolan's 2007 maximum growth rates to within $0.3$ percent, and the Lab's growth curve is built from it.

[Open the black hole superradiance Lab](https://sandboxphysics.com/labs/black-hole-superradiance/)

This chapter continues [conserved flux, physical units and a first growth estimate](https://sandboxphysics.com/stories/black-hole-superradiance/flux-units-and-a-first-growth-estimate/). It assumes complex numbers, series solutions of differential equations and some Python.

## What makes a frequency a bound state

A trapped cloud must satisfy two boundary conditions at once. At the horizon it may only fall in, as for the scattered wave. Far away it must decay instead of radiating, $R\propto e^{qr}$ with

$$
q=-\sqrt{\mu^2-\omega^2},\qquad \mathrm{Re}\,q<0 .
$$

Both conditions together are possible only for special complex values of $\omega$. Their real part is the cloud's oscillation frequency; their imaginary part $\omega_I$ is the growth rate, positive for a growing cloud.

Dolan writes the solution as a product that already has the right behaviour at both ends, times a power series:

$$
R=(r-r_+)^{-i\sigma}(r-r_-)^{i\sigma+\chi-1}e^{qr}\sum_{n=0}^{\infty}a_n\left(\frac{r-r_+}{r-r_-}\right)^n,
$$

with $\sigma=2r_+(\omega-m\Omega_H)/(r_+-r_-)$ and $\chi=(\mu^2-2\omega^2)/q$. The series variable runs from $0$ at the horizon to $1$ at infinity. [Dolan, Instability of the massive Klein-Gordon field on the Kerr spacetime, §III, Eqs. (33)-(34)](https://arxiv.org/abs/0705.2880v2)

## From a recurrence to a continued fraction

Putting the series into the radial equation gives a three-term recurrence,

$$
\alpha_na_{n+1}+\beta_na_n+\gamma_na_{n-1}=0,
$$

where $\alpha_n$, $\beta_n$ and $\gamma_n$ are quadratics in $n$ whose coefficients depend on $\omega$, $a$, $\mu$, $m$ and the angular eigenvalue $\Lambda$. The series converges at $r\to\infty$ only for the minimal solution of the recurrence, and that solution exists exactly when

$$
\beta_0-\frac{\alpha_0\gamma_1}{\beta_1-\dfrac{\alpha_1\gamma_2}{\beta_2-\cdots}}=0 .
$$

[Dolan, §III, Eqs. (35)-(36) and (47)-(48)](https://arxiv.org/abs/0705.2880v2) This is Leaver's method, first used for black-hole ringing.

Two details matter in code. First, $\Lambda$ must be computed for the complex spheroidal parameter $c^2=a^2(\omega^2-\mu^2)$, not for $a^2\omega^2$; our solver finds it as an eigenvalue of a $24\times24$ matrix in a Legendre basis. Second, the fraction is evaluated from a finite depth $N$ back to $n=0$, so $N$ is a numerical parameter that must be tested.

```
def continued_fraction(omega, a, mu, l=1, m=1, depth=4000):
    c0, c1, c2, c3, c4 = _recurrence_coefficients(omega, a, mu, l, m)
    n = np.arange(depth + 1, dtype=float)
    alpha = n * n + (c0 + 1) * n + c0
    beta = -2 * n * n + (c1 + 2) * n + c3
    gamma = n * n + (c2 - 3) * n + c4
    tail = 0j
    for k in range(depth, 0, -1):
        tail = alpha[k - 1] * gamma[k] / (beta[k] - tail)
    return (beta[0] - tail) / beta[0]
```

The full file is [kerr\_bound\_states.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/kerr_bound_states.py).

## Finding the zero

Dolan minimised the absolute value of the fraction over the complex plane. We use a complex secant iteration started from the hydrogenic frequency of the previous chapter. [Brito, Cardoso and Pani, Superradiance, §5.6.2, Eq. (5.27)](https://arxiv.org/abs/1501.06570v8) Neighbouring levels are separated by about $\mu^3$, so each step is clamped to $5$ percent of that spacing. Without the clamp, a single large step can jump to another level.

**Worked example 1.** For $a=0.99$ and $\alpha=0.1$ the hydrogenic guess is $M\omega=0.099875+1.59\times10^{-11}i$. The iteration converges to $M\omega_I=7.389\times10^{-12}$. The real part barely moves; the imaginary part halves.

## Convergence: make the fraction deeper

We use depth $3000$ for $\alpha\ge0.1$ and $6000$ below. To test it, solve again with four times the depth and compare.

**Table 3.1** Relative change of $M\omega_I$ when the depth is multiplied by four.

| Spin | Coupling | Relative change |
| --- | --- | --- |
| $0.99$ | $0.05$ | $1.2\times10^{-4}$ |
| $0.99$ | $0.42$ | $8\times10^{-12}$ |
| $0.7$ | $0.19$ | $1.1\times10^{-9}$ |
| $0.5$ | $0.10$ | $6.1\times10^{-9}$ |
| $0.2$ | $0.70$ | $4.7\times10^{-13}$ |

Small couplings converge slowest. The cloud peaks near $r=4/\alpha^2$, which for $\alpha=0.05$ is $1600M$, so the series variable must get very close to $1$ before the solution is captured, and the terms decay slowly. A $10^{-4}$ error is far below what the Lab displays. It is still the worst case, and the worst case is the number to quote.

## A published check: Dolan's Table I

Dolan lists, for six spins, the coupling of the fastest-growing $l=m=1$ cloud and its growth rate. We find each maximum with a golden-section search on our solver.

**Table 3.2** Maximum growth rate: published and recomputed.

| Spin | Published $\alpha$ | Published $M\omega_I$ | Our $\alpha$ | Our $M\omega_I$ | Difference |
| --- | --- | --- | --- | --- | --- |
| $0.7$ | $0.187$ | $3.33\times10^{-10}$ | $0.1870$ | $3.335\times10^{-10}$ | $0.14\,\%$ |
| $0.8$ | $0.231$ | $2.16\times10^{-9}$ | $0.2307$ | $2.164\times10^{-9}$ | $0.19\,\%$ |
| $0.9$ | $0.293$ | $1.55\times10^{-8}$ | $0.2929$ | $1.553\times10^{-8}$ | $0.17\,\%$ |
| $0.95$ | $0.343$ | $4.88\times10^{-8}$ | $0.3427$ | $4.878\times10^{-8}$ | $0.04\,\%$ |
| $0.98$ | $0.393$ | $1.11\times10^{-7}$ | $0.3928$ | $1.112\times10^{-7}$ | $0.20\,\%$ |
| $0.99$ | $0.421$ | $1.50\times10^{-7}$ | $0.4208$ | $1.504\times10^{-7}$ | $0.29\,\%$ |

[Dolan, Table I](https://arxiv.org/abs/0705.2880v2)

Every difference is smaller than the rounding of the printed three figures. This is a reproduction of one table, not of the whole paper. The script is [compare\_hydrogenic\_growth.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/compare_hydrogenic_growth.py), and its saved output is [hydrogenic-comparison-outputs.json](https://sandboxphysics.com/stories/black-hole-superradiance/materials/hydrogenic-comparison-outputs.json).

## The overtone trap

The secant iteration converges to whichever zero is nearest, and at large coupling the ground state and the first overtone are close. In the hydrogenic picture their real parts are $\alpha(1-\alpha^2/8)$ and $\alpha(1-\alpha^2/18)$. At $\alpha=0.47$ these differ by only about $1.5$ percent.

**Worked example 2.** For $a=0.55$ and $\alpha=0.47$, starting from the hydrogenic guess converges to $M\omega_R=0.4622$. That is the overtone with one radial node. Starting instead from the solution at $a=0.54$ gives the ground state, $M\omega_R=0.45190$ with $M\omega_I=-1.354\times10^{-3}$: the cloud is absorbed. A guard that rejects a solution whose real part is more than $8$ percent from the hydrogenic value cannot catch this, because the two levels are much closer than that.

Our grid avoids the trap by continuation. From $\alpha=0.15$ on, each new coupling starts from a straight-line extrapolation of the two previous solutions of the same spin, so the solver follows one level as it moves. Every stored entry is also checked against the superradiance condition, $\omega_I>0$ exactly when $\omega_R<m\Omega_H$. That test catches a wrong root or a wrong angular eigenvalue, but it cannot tell levels apart, because an overtone obeys the same condition. Continuation and a smooth curve are what keep the grid on the ground state.

## The grid behind the Lab

The Lab does not solve the continued fraction in the browser. It reads an offline grid made with [build\_growth\_reference\_grid.py](https://sandboxphysics.com/stories/black-hole-superradiance/materials/build_growth_reference_grid.py):

1. Spins from $0$ to $0.98$ in steps of $0.02$, plus $0.99$.
2. Couplings from $0.05$ to $0.70$ in steps of $0.01$.
3. For each entry, $M\omega_I$ to four significant figures and $M\omega_R$ to six.

Between grid points the Lab writes the rate as $\omega_I=g\,(m\Omega_H-\omega_R)$ and interpolates $\ln g$, which is smooth, against $\ln\alpha$. This keeps the zero of the growth rate exactly at the superradiance threshold. At seven points chosen between grid lines, including the overtone case above, the interpolated rate agrees with a direct solution to within $0.83$ percent.

## Lab tasks

1. Set spin $0.99$ and slide the frequency until the growth curve peaks. Compare the peak coupling with Table 3.2.
2. Repeat at spin $0.5$. Note where the dashed hydrogenic curve and the solid curve agree, and where they separate.
3. Pick the preset Right at the threshold and confirm that the cloud's growth rate and the scattered wave's gain change sign at the same frequency.

## Exercises with explained answers

1. Why must the root satisfy $\mathrm{Re}\,q<0$?
2. Why does a deeper fraction matter more at small coupling?
3. You find a growing mode with $\omega_R>m\Omega_H$. What went wrong?
4. Why interpolate $\ln g$ instead of $\omega_I$ directly?

Answers

1. With $\mathrm{Re}\,q>0$ the factor $e^{qr}$ grows at large radius. That describes a field fed from infinity, not a cloud held by the hole.
2. The cloud extends to about $4M/\alpha^2$. The series must reproduce the solution out to that radius, where the expansion variable is close to $1$, so more terms are needed before the tail stops changing.
3. The flux identity forbids it, so either the iteration converged to a spurious root or an overtone, the depth is too small, or the angular eigenvalue was computed for the wrong $c^2$. Repeat with a deeper fraction and a guess continued from a neighbouring solution.
4. $\omega_I$ changes by orders of magnitude and changes sign at the threshold. Linear interpolation of it would move the zero away from $\omega_R=m\Omega_H$. The factor $g$ is positive and smooth on both sides, so interpolating it keeps the threshold exact.

The scattered wave can be checked the same way against a public table. The method guide does that: [recomputing a published superradiance amplification table](https://sandboxphysics.com/stories/black-hole-superradiance/recomputing-a-published-amplification-table/).

## Try it in the Lab

Compare the solid and dashed growth curves at spin 0.99, then at spin 0.5, and note where they agree. [Open the black hole superradiance Lab](https://sandboxphysics.com/labs/black-hole-superradiance/)

## Sources

1. [Dolan, Instability of the massive Klein-Gordon field on the Kerr spacetime, §III, Eqs. (33)-(34)](https://arxiv.org/abs/0705.2880v2)
2. [Brito, Cardoso and Pani, Superradiance, §5.6.2, Eq. (5.27)](https://arxiv.org/abs/1501.06570v8)

## Keep reading

Spinning black holes and boson clouds · Reading path

### From an amplified wave to a growing cloud

1. [Article **Why can a spinning black hole make the waves around it ever stronger?**](https://sandboxphysics.com/stories/black-hole-superradiance/why-a-spinning-black-hole-amplifies-waves/)
2. [Article **Waves, spin and the scales of a Kerr black hole**](https://sandboxphysics.com/stories/black-hole-superradiance/waves-spin-and-kerr-scales/)
3. [Article **Conserved flux, physical units and a first growth estimate**](https://sandboxphysics.com/stories/black-hole-superradiance/flux-units-and-a-first-growth-estimate/)
4. [You are here **Solving for the bound cloud's growth rate reproducibly**](https://sandboxphysics.com/stories/black-hole-superradiance/solving-the-bound-cloud-reproducibly/)
5. [Article **Recomputing a published superradiance amplification table**](https://sandboxphysics.com/stories/black-hole-superradiance/recomputing-a-published-amplification-table/)
6. [Article **How self-interactions change boson-cloud limits from spins and gravitational waves**](https://sandboxphysics.com/stories/black-hole-superradiance/reading-self-interacting-boson-cloud-limits/)
