Structure, and the solver that cannot see it

Two dimensions, and the cluster that thins

The same kernel, the same averaging, the same transform — applied along two axes instead of one. In one dimension the preconditioned step count is 7, 10, 10, 10; on square grids with the same unknown counts it is 10, 18, 20, 21, and the share of the spectrum near one falls from 56% to 17%.

Worth reading first: A limit the matrix never reaches.

This is the third time this site has taken a one-dimensional result into two dimensions, and the third time the load-bearing part has been the part that did not survive.

The multigrid field lost the Galerkin identity: in one dimension the coarse operator RAP is the coarse discretisation entry for entry, and in two a five-point operator produces a nine-point coarse one. The smoothing analysis lost ω = ⅔ and μ = ⅓, which turned out to be 4/5 and 3/5 in the plane. Now the structure field loses the cluster.

What makes each of these worth writing rather than noting is that the method survives every time. The two-dimensional multigrid works; the coarse operator is simply a different one. The circulant preconditioner below works too. What stops being true is the sentence people repeat about it.

The same preconditioner in one dimension and in two (ρ = 0.9)Iteration count against the number of unknowns, on a logarithmic size axis. In one dimension the preconditioned count is 7, 10, 10, 10 — flat across a factor of six in size. On square grids with the same unknown counts it is 10, 18, 20, 21, climbing, against an unpreconditioned 14, 37, 73, 115. Nothing about the construction changed.10²020406080100120unknownsiterations2D, no preconditioner2D, preconditioned1D, preconditionedone construction, two dimensions2D steps at 16 unknowns102D steps at 100 unknowns211D steps at 100 unknowns10the same averaging, the same transformand a count that no longer stops growing
Fig. 1 The same preconditioner in one dimension and in two, at matched unknown counts. The one-dimensional count is 7, 10, 10, 10 at n = 16, 36, 64, 100. On square grids of exactly those sizes it is 10, 18, 20, 21 — against an unpreconditioned 14, 37, 73, 115. Nothing about the construction changed.

What a BTTB matrix is, and why this one

Discretise a convolution on an mx × my grid and order the unknowns row by row. The matrix is block Toeplitz with Toeplitz blocks: constant along block diagonals, and each block constant along its own diagonals. It has n = mx·my rows and is described by (2mx − 1)(2my − 1) numbers, so the compression is the same kind the field’s first essay was built on.

The kernel drawn here is ρ^(|k₁| + |k₂|) — the Kac–Murdock–Szegő family’s outer product with itself. That choice is what makes every comparison below honest: the two-dimensional problem is the one-dimensional problem twice, so anything that changes between them is a property of the dimension rather than of a different matrix. A reader suspicious that the second dimension has been handed a harder problem can check the kernel and see that it has not.

The symbol multiplies, so the difficulty squares

Sum the double series and it factorises: f₂(θ₁, θ₂) = f(θ₁)·f(θ₂), with f the one-dimensional symbol this site already has. Checked at three arbitrary angle pairs to 10⁻¹⁴, because a claim of the form “it factorises” is exactly the kind that is true of the formula somebody wrote down and false of the matrix somebody assembled.

The range of a product is the product of the ranges, so the limiting condition number is

κ → ((1+ρ)/(1−ρ))⁴

the fourth power rather than the second — 6,561 at ρ = 0.8 where the one-dimensional family’s limit is 81.

κ of the 0.8 kernel on m×m grids, against its two-dimensional limitCondition number against the grid side on a logarithmic vertical axis, with the asymptotic value ((1+ρ)/(1−ρ))⁴ = 6561 drawn as a horizontal line. The measured values are 581, 1196, 1794, 2337, reaching 35.6% of the limit on the largest grid — where the one-dimensional section of the same length reaches far more.4681010³10⁴grid side mκlimit 6561measured κthe symbol multipliesthe limit, from the symbol6561κ at 10×102337share of the limit reached0.36the limit is the square of the one-dimensional oneand it is further away
Fig. 2 κ of the finite grids against that limit. The measured values are 581, 1196, 1794 and 2337 at grid sides 4 to 10, reaching 8.9%, 18%, 27% and 36% of 6,561. The breadth phase’s finding survives into two dimensions and gets worse: the one-dimensional 8×8 section reached 52% of its limit, and the 8×8 grid — sixty-four unknowns, the same count — reaches 27% of its.

So the structure is intact and the problem is harder, and both halves are what the symbol says.

The preconditioner generalises exactly

Averaging along each axis in turn gives a matrix that is block circulant with circulant blocks, and everything the one-dimensional construction had comes with it.

It is diagonalised by the two-dimensional transform, exactly. Two routes to one set of numbers — the transform of the first column, and a symmetric eigensolve of the assembled matrix — agree to 4.4·10⁻¹⁴ at three grid sizes, and solving with it undoes multiplying by it to 1.3·10⁻¹⁴. That is what licenses the preconditioner solve to be three lines: transform, divide, transform back.

It is still the minimiser, and that is checked against separability rather than assuming it. The entries of the averaged BCCB are compared against the plain entrywise average of A over each residue class of the index pair — a different computation, agreeing to 3.3·10⁻¹⁶ — because separability is precisely the property a reader would be right to suspect of doing all the work.

And it is still positive definite, for the same one-line reason: every entry is a convex combination of entries of A’s own diagonals.

The two-dimensional transform is dft rather than fft here, deliberately. The grids are 4 to 10 a side, most of which are not powers of two, and fft refuses a length that is not one rather than padding silently — because padding computes the transform of a larger grid and calls it this one’s. The direct transform is O(m²) a line and invisible at these sizes.

And then the cluster thins

The one-dimensional clustering theorem says all but O(1) of the preconditioned eigenvalues fall into a shrinking neighbourhood of one. Its two-dimensional analogue says all but O(mx + my) do — and at n = mx·my that is a vanishing fraction and a growing count.

Both halves are visible, and which one appears depends on how wide a neighbourhood is asked about.

The preconditioned spectrum on four grids (ρ = 0.9)Every eigenvalue of C⁻¹A, drawn as a point above the grid it belongs to, on a logarithmic vertical axis. The shaded band is within half a unit of one. The number of eigenvalues inside it goes 9, 11, 13, 17 while the number of unknowns goes 16, 36, 64, 100 — so the share clustered falls from 56% to 17%.357911110¹grid side meigenvalue of C⁻¹Awithin ½ of onethe cluster grows like the sidem = 4: inside of 169m = 6: inside of 3611m = 8: inside of 6413m = 10: inside of 10017the cluster grows with the sideand the spectrum with the area
Fig. 3 Every eigenvalue of C⁻¹A on four grids, with the band within half a unit of one shaded. The number inside goes 9, 11, 13, 17 as the grid side goes 4, 6, 8, 10 — growing like the side. The number outside goes 7, 25, 51, 83 — growing like the area. The share clustered falls from 56% to 17%.
grid unknowns within ½ of one outside share
4×4 16 9 7 56%
6×6 36 11 25 31%
8×8 64 13 51 20%
10×10 100 17 83 17%

Asked about the tighter band the one-dimensional essays use — within a tenth of one — the count is 5, 1, 0, 0: the cluster is empty at the two larger grids, which is why both windows are reported rather than the flattering one. A figure drawn only at the tight band would show nothing and suggest the preconditioner had failed; a figure drawn only at the wide one would show a cluster growing and suggest it was fine.

What conjugate gradients pays for is the count outside, not the share inside. Each eigenvalue away from the cluster costs roughly one extra step, which is why the preconditioned count climbs — 10, 18, 20, 21 — while the one-dimensional count at the same unknown counts does not move.

The comparison is the finding

Without the one-dimensional column, the climb above is a statement about sizes rather than about dimensions. With it:

unknowns 1D preconditioned 2D preconditioned 2D unpreconditioned
16 7 10 14
36 10 18 37
64 10 20 73
100 10 21 115

Same kernel, same averaging, same transform, same conjugate gradient code, same right-hand side construction, same unknown counts. The only difference is how many axes the indices run along.

And the preconditioner is still very much worth having: 21 steps against 115 at a hundred unknowns. The claim that fails is not “the preconditioner works”. It is “the step count stops depending on the size”, which is what the method is sold on and what makes an O(n log n) solver an O(n log n) solver rather than an O(n^1.5 log n) one.

At ρ = 0.5 and the smallest grid, the preconditioned and unpreconditioned counts are both 10 — sixteen unknowns at that correlation are solved before either method has anything to distinguish it. The assertion behind the figure was written as helps at every grid, and that slider stop failed it; it now says does not hurt at any grid, and helps on at least one, which is what the measurement supports. That was found by the gate that renders every stop of every slider, which is the second time this phase that a range has been wrong in a way no essay could reach.

Why it thins, in one paragraph

The one-dimensional argument goes: T − C is small in a norm and low rank apart from a small perturbation, so C⁻¹T is the identity plus a small-plus-low-rank matrix, and low rank means a bounded number of eigenvalues can escape the cluster.

The seam that the difference lives on is the boundary between the wrapped and unwrapped parts, and in one dimension that boundary is two points — the ends of the vector. In two dimensions it is the edge of the grid: 4m points on an m×m grid, growing with the side. The rank of the difference grows with the boundary, and the boundary of a square is one-dimensional, so the count of escapees is O(m) and the count of unknowns is O(m²).

That is the same shape as the multigrid field’s loss, and worth naming: the identity in one dimension was a boundary effect nobody had to count, and in two dimensions the boundary is large enough to count.

What survives, and how much of it

Three things do, and it is worth being precise because “the theorem is weaker” is not a useful summary on its own.

The preconditioner is definite in every dimension, for a reason that does not know how many axes there are: an average of positive numbers is positive.

The solve is still O(n log n), because the two-dimensional transform is, and each preconditioned step still costs the same as an unpreconditioned one plus a transform.

And the clustering still happens — the cluster is real, it grows, and the spectrum is bounded away from zero by a margin that does not collapse. What changed is the growth rate of what is outside it, and that is the quantity nobody quotes.

Conjugate gradient steps on the ρ = 0.9 Toeplitz familyIteration count against the matrix size, drawn on a logarithmic size axis. Unpreconditioned: 20, 35, 54, 82, 117. With the wrapped circulant: 20, 45, 26, 7, 4. With the averaged one: 7, 9, 10, 10, 9, which is the O(1) the theory promises and the wrapped one does not deliver until its smallest eigenvalue has become positive.10²020406080100120size niterationsno preconditionerwrapped (Strang)averaged (T. Chan)both are circulant approximations‖C − T‖/‖T‖, averaged0.21‖C − T‖/‖T‖, wrapped0.29smallest eigenvalue, wrapped, n = 16-0.4one of them is positive definiteand it is the one that is nearer
Fig. 4 The one-dimensional behaviour this is measured against, from the previous essay: a preconditioned count of 7 to 10 across a factor of sixteen in size. Everything that makes that curve flat is present in two dimensions; what is absent is the bound on how many eigenvalues can escape the cluster.
The smallest eigenvalue of each circulant, ρ = 0.95Smallest eigenvalue against the matrix size on a linear vertical axis with zero marked. The wrapped circulant runs -0.6548, -0.4258, -0.1730, -0.0128, 0.0242 — negative at the small sizes and crossing zero by n = 256. The averaged one runs 0.0431, 0.0382, 0.0332, 0.0295, 0.0276: falling towards zero and never reaching it.10²0size nsmallest eigenvaluezerowrapped (Strang)averaged (T. Chan)an average of positives is positivewrapped, n = 16-0.65averaged, n = 160.043averaged, n = 2560.028a choice between two diagonals can be negativean average of them cannot
Fig. 5 The property that does survive the second dimension: an average of positive quantities is positive, whatever the index runs over. The averaged circulant is definite in one dimension and in two, and the wrapped one is not.
V-cycle convergence factor against problem size, ε = 1Three flat curves of convergence factor against the number of unknowns on a logarithmic axis. At small anisotropy one sits near one and the others near a tenth.10²10².⁵10³10³.⁵00.250.50.751unknownsresidual reduction per cyclepointy-linesemi-yy-line spread, 4× in size0.01point at the largest grid0.2y-line at the largest grid0.215×15, 31×31, 63×63 interior gridsflat in the size, whatever the anisotropy
Fig. 6 The other method whose one-dimensional identity failed in the plane. Multigrid’s Galerkin operator stops being the coarse discretisation in two dimensions and the method converges anyway; here the clustering result weakens and the preconditioner helps anyway. Both losses are about the boundary.
The spectrum of C⁻¹T against T's own, n = 64, ρ = 0.8Two sorted spectra on a linear vertical axis. The unpreconditioned Toeplitz matrix spreads its eigenvalues across its whole range; the preconditioned operator puts 97% of them within a tenth of 1, with 0 below zero.08162432404856640123456789index, sortedeigenvalueT aloneC⁻¹Teigenvalues, not singular valuesfraction within 0.1 of 10.97eigenvalues below zero0λ_min of the preconditioner0.11the dashed line is 1, where the cluster formsthe solid line is zero
Fig. 7 The one-dimensional spectrum this is measured against, where 97% of the eigenvalues sit within a tenth of one. At a 10×10 grid in two dimensions that count is zero at the same width, and seventeen at a width of a half.
The Galerkin operator at level 1: nine pointsA three-by-three arrangement of discs carrying the stencil's coefficients, with the zero positions drawn small, beside a bar chart of stored entries per row at each level of the hierarchy.-0.0833-0.167-0.0833-0.1671-0.167-0.0833-0.167-0.0833R · A · P, normalised to a unit centrestored entries per rowlevel 0 · 31×314.87/rowlevel 1 · 15×158.22/rowlevel 2 · 7×77.37/rowlevel 3 · 3×35.44/rowlevel 4 · 1×11.00/rowstill a stencil, still annihilates a constantentries in an interior row9weight outside the 3×30row sum0the isotropic model problemnine, at every level below the first
Fig. 8 The multigrid field’s version of the same sentence, entry by entry: a five-point operator whose coarse Galerkin product is a nine-point one. What is lost in both cases is an identity that was a one-dimensional accident, and what survives is the property the method actually needs.

What the transform had to be checked for

Three things in this file are exact claims about a computation, and each is checked by a route that does not share arithmetic with the thing it checks — which is the site’s two-routes-to-a-number habit applied where the temptation to skip it is strongest, because everything here is “obviously” the one-dimensional case twice.

The transform diagonalises the BCCB matrix. The eigenvalues from the two-dimensional transform of the first column, against a symmetric eigensolve of the assembled matrix: agreeing to 4.4·10⁻¹⁴ at three grid sizes. Without that, an index error in the row-major flattening would produce a set of plausible positive numbers and a preconditioner that solves with the wrong matrix.

Solving undoes multiplying. A vector multiplied by the assembled BCCB and then solved back through the transform returns to itself to 1.3·10⁻¹⁴, which is the check that the divide-by-eigenvalue step has its conjugations the right way round.

And the averaged BCCB is the entrywise average of A. The construction applies the one-dimensional weighting along each axis in turn, which is the minimiser if the separability argument holds. Rather than assume it, the entries are compared against the plain average of A over each residue class of the index pair — a different computation with no weights in it — agreeing to 3.3·10⁻¹⁶.

The transform itself is dft rather than fft, and that is a decision rather than laziness. These grids are 4 to 10 a side and most of those are not powers of two; fft refuses a length that is not one rather than padding, because padding computes the transform of a longer signal and returns it as this one’s. The direct transform costs O(m²) a line, which at these sizes is invisible, and the alternative would have been an embedding whose correctness is exactly the kind of thing this section exists to check.

What this essay is not entitled to say

The grids stop at 10×10 because the preconditioned spectrum is computed by a dense symmetric eigensolve of a 100×100 matrix, and the figure needs every eigenvalue rather than a few.

The step counts alone would run much further — the conjugate gradient loop is a dense matrix–vector product per step and nothing else — and a claim about how the cluster behaves at 40×40 is not one these measurements support. What they do support is a trend across four grids in both quantities at once, with the count inside growing like the side and the count outside like the area, which is the shape the theorem predicts and is checkable at this size.

There is also a boundary of kind rather than of size. Everything here uses a separable kernel, chosen so the two-dimensional problem is provably the one-dimensional problem twice. A genuinely two-dimensional kernel — a rotated Gaussian blur, say — has a symbol that does not factorise, and every closed-form statement in this essay would become a measurement. Whether the cluster thins the same way there is an open question this essay does not touch, and the honest reading of it is as the best case rather than the general one.

What survives, and how much of it

Three things do, and it is worth being precise, because “the theorem is weaker” is not a useful summary on its own.

The preconditioner is definite in every dimension, for a reason that does not know how many axes there are: an average of positive numbers is positive. That is the previous essay’s one-line argument, and nothing in it mentions the index set.

The solve is still O(n log n), because the two-dimensional transform is, and a preconditioned step still costs an unpreconditioned one plus a transform. The method’s cost per step is unchanged; what changed is how many steps there are.

And the clustering still happens. The cluster is real, it grows, and the spectrum stays bounded away from zero — the smallest eigenvalue of C⁻¹A is 0.27 at every grid drawn, against an upper end that grows from 3.6 to 16.4. What changed is the growth rate of what is outside the cluster, and that is the quantity nobody quotes.

So the correct summary of this essay is not that circulant preconditioning fails in two dimensions. It is that a step count sold as independent of the size is independent of the size in one dimension and grows like the side of the grid in two — which is still a good method, and is not the method the sentence describes.

What is left

Non-separable kernels. Everything here uses ρ^(|k₁|+|k₂|), whose symbol factorises, and the factorisation was used to state the limit in closed form. A genuinely two-dimensional kernel — a Gaussian blur with a rotation in it, say — has a symbol that does not factorise, and every closed-form statement above would have to be replaced by a measurement.

The better two-dimensional preconditioners, which exist precisely because of what this essay measures: the block-circulant-with-circulant-block family is the naive lift, and the practical answers are block preconditioners built level by level rather than by averaging in both directions at once.

And the sizes. The grids here go to 10×10 because the preconditioned spectrum is computed by a dense symmetric eigensolve, which is a hundred-by-hundred problem at the largest grid drawn. The step counts alone would run much further; the spectrum is what limits the figure, and a claim about how the cluster behaves at 40×40 is not one this essay is entitled to make.

What links here

Computed from the collection, not written here: the essays that point at this one.

Shares its objects with

Essays that name at least two of the same things, and that neither author linked.

Named objects

A flat tag is an object no other essay names yet.

Asymptotic analysisCirculant preconditionerClustered spectrumCondition numberConjugate gradientsDiscrete fourier transformPreconditioningSymbolToeplitz matrix