Generator

arrowhead-projection

One function in the thick library, called 9 times across 9 essays. Below: what it draws at its defaults, what it draws at every value an essay asks for, the 13 claims it put to the test while drawing them, and where it stands against the rule this site is named for.

At its defaults it draws the projected matrix after 3 cycles, keeping 4 vectors. A 8×8 matrix drawn as a grid. The first 4 diagonal entries are the retained Ritz values; the row and column at index 4 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 22 entries are above rounding out of 64.

arrowhead-projection is one function in lib/figures/thick.js — keeping the vectors — a third of the products, and the bound that stops bounding. Everything below came out of it during this build, at arguments taken from the essays rather than invented for this page. A figure here is the figure a reader meets in an essay, and if the generator changes, this page changes with it.

At its defaults

Drawn even though every essay passes arguments — which on this site is every essay, at 100% of placements since the standard pass. A default nothing exercises is a trap for the next essay to call this with none, and this is the page where a default that has drifted from the figures around it becomes visible.

The projected matrix after 3 cycles, keeping 4 vectorsA 8×8 matrix drawn as a grid. The first 4 diagonal entries are the retained Ritz values; the row and column at index 4 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 22 entries are above rounding out of 64.retained Ritz values on the diagonal, their couplings in one row and column10···1.3·10⁻⁵····9.5··4.9·10⁻⁶·····9·0.000325······8.52.8·10⁻⁵···1.3·10⁻⁵4.9·10⁻⁶0.0003252.8·10⁻⁵1.830.554······0.5542.250.447······0.4471.960.427······0.4271.94the shape, countedentries above rounding22of a possible64worst entry off the arrow0a diagonal and one borderand a tridiagonal tail

A 8×8 matrix drawn as a grid. The first 4 diagonal entries are the retained Ritz values; the row and column at index 4 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 22 entries are above rounding out of 64.

k: 3

The arguments are the ones Elimination is a sequence of choices passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.

The projected matrix after 3 cycles, keeping 3 vectorsA 7×7 matrix drawn as a grid. The first 3 diagonal entries are the retained Ritz values; the row and column at index 3 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 19 entries are above rounding out of 49.retained Ritz values on the diagonal, their couplings in one row and column10··0.000343····9.5·0.000124·····90.00774···0.0003430.0001240.007742.10.644·····0.6442.070.353·····0.3532.170.596·····0.5962.24the shape, countedentries above rounding19of a possible49worst entry off the arrow0a diagonal and one borderand a tridiagonal tail

A 7×7 matrix drawn as a grid. The first 3 diagonal entries are the retained Ritz values; the row and column at index 3 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 19 entries are above rounding out of 49.

k: 4

The arguments are the ones Keeping the vectors, and losing the bound passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.

The projected matrix after 3 cycles, keeping 4 vectorsA 8×8 matrix drawn as a grid. The first 4 diagonal entries are the retained Ritz values; the row and column at index 4 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 22 entries are above rounding out of 64.retained Ritz values on the diagonal, their couplings in one row and column10···1.3·10⁻⁵····9.5··4.9·10⁻⁶·····9·0.000325······8.52.8·10⁻⁵···1.3·10⁻⁵4.9·10⁻⁶0.0003252.8·10⁻⁵1.830.554······0.5542.250.447······0.4471.960.427······0.4271.94the shape, countedentries above rounding22of a possible64worst entry off the arrow0a diagonal and one borderand a tridiagonal tail

A 8×8 matrix drawn as a grid. The first 4 diagonal entries are the retained Ritz values; the row and column at index 4 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 22 entries are above rounding out of 64.

k: 2

The arguments are the ones Restarting is a filter passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.

The projected matrix after 3 cycles, keeping 2 vectorsA 6×6 matrix drawn as a grid. The first 2 diagonal entries are the retained Ritz values; the row and column at index 2 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 16 entries are above rounding out of 36.retained Ritz values on the diagonal, their couplings in one row and column10·0.0339····9.50.00777···0.03390.007775.923.5····3.54.910.777····0.7772.390.842····0.8426.43the shape, countedentries above rounding16of a possible36worst entry off the arrow0a diagonal and one borderand a tridiagonal tail

A 6×6 matrix drawn as a grid. The first 2 diagonal entries are the retained Ritz values; the row and column at index 2 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 16 entries are above rounding out of 36.

k: 5

The arguments are the ones The factor is not sparse passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.

The projected matrix after 3 cycles, keeping 5 vectorsA 9×9 matrix drawn as a grid. The first 5 diagonal entries are the retained Ritz values; the row and column at index 5 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 25 entries are above rounding out of 81.retained Ritz values on the diagonal, their couplings in one row and column10····6·10⁻⁷····9.5···2.5·10⁻⁷·····9··1.8·10⁻⁵······8.5·1.7·10⁻⁶·······2.950.017···6·10⁻⁷2.5·10⁻⁷1.8·10⁻⁵1.7·10⁻⁶0.0172.10.651·······0.6512.030.409·······0.4092.070.392·······0.3921.97the shape, countedentries above rounding25of a possible81worst entry off the arrow0a diagonal and one borderand a tridiagonal tail

A 9×9 matrix drawn as a grid. The first 5 diagonal entries are the retained Ritz values; the row and column at index 5 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 25 entries are above rounding out of 81.

k: 6

The arguments are the ones The form that makes it affordable passes. A value drawn at the generator's defaults instead would be a picture no essay asked for and no assertion has been run against.

The projected matrix after 3 cycles, keeping 6 vectorsA 10×10 matrix drawn as a grid. The first 6 diagonal entries are the retained Ritz values; the row and column at index 6 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 28 entries are above rounding out of 100.retained Ritz values on the diagonal, their couplings in one row and column10·····4.3·10⁻⁸····9.5····1.9·10⁻⁸·····9···1.5·10⁻⁶······8.5··1.5·10⁻⁷·······2.95·0.0154········2.760.153···4.3·10⁻⁸1.9·10⁻⁸1.5·10⁻⁶1.5·10⁻⁷0.01540.1532.020.603········0.6032.050.437········0.4372.030.328········0.3281.89the shape, countedentries above rounding28of a possible100worst entry off the arrow0a diagonal and one borderand a tridiagonal tail

A 10×10 matrix drawn as a grid. The first 6 diagonal entries are the retained Ritz values; the row and column at index 6 are their couplings to the residual vector; the remaining 4×4 block is an ordinary Lanczos tridiagonal. 28 entries are above rounding out of 100.

What it checked while drawing

Every figure above asserted its own claims on the way to being drawn, and a claim that failed would have failed the build rather than drawn a wrong picture. Those assertions used to leave no trace at all: a passing one returned true and the only evidence the figure had checked anything was that nothing crashed. The list below is what they actually said, collected by running this generator with an observer installed — not a description of what it is believed to check.

13 distinct claims across 6 sets of arguments, grouped below by shape — because most of them are one sentence with a different number in it, and how many separate times that sentence was put to the test is the informative part.

nothing outside the diagonal and the border in row 0 — asserted 6 times

a cycle at which something has been retained

a number of retained vectors the picture has room for

a projected matrix small enough to read

enough new steps a cycle for a tail to exist

Jacobi needs a symmetric matrix

matmul shapes agree

the projected matrix is an arrowhead with a tridiagonal tail

Against the rule

The rule does not apply to it. It factorises nothing, so there is no residual it could be withholding. That is worth stating rather than leaving blank: a site that reported the rule as satisfied by every generator would be counting mostly generators the rule never reached.

Across the library: the rule bites on 70 of 151 generators — 55 print a residual and 15 are exempt with a published reason; 81 factorise nothing. Read from lib/residual-rule.js, which is the same body the gate enforces from, and the gate's last check fails the build if this page and it disagree about any generator.

Where it is called

Changing this generator changes every figure on this list. That is what makes the list worth publishing rather than keeping in a check script.

Elimination, and the swap

Elimination is a sequence of choices

Gaussian elimination is taught as a procedure with no decisions in it. There is one decision at every step — which row to use — and every stability property the algorithm has comes from making it well.

Eigenvalues, singular values, rank

Keeping the vectors, and losing the bound

Thick restarting keeps the Ritz vectors instead of filtering the starting vector — the same eigenvalues for a third of the products with A. Its residual bound reaches 9.4·10⁻⁴¹ while the residual it bounds sits at 5.7·10⁻⁵, and the eigenvalues are correct to 4.3·10⁻¹⁴ the whole time, so nothing reports it.

Eigenvalues, singular values, rank

Restarting is a filter

A restart throws away the Ritz values it does not want and begins again from a new starting vector. Written in the eigenbasis, that vector's components have been multiplied by a polynomial with its roots at the discarded values — measured component by component, and agreeing with the polynomial to rounding.

Sparsity, and what elimination costs

Structure and stability stop being separable

The sparsest variable to eliminate on this matrix has a diagonal entry of 10⁻¹². Eliminating it produces the smaller factor, reproduces the matrix to 3.8·10⁻¹⁷ — better than pivoting does — and returns an answer wrong in the fifth digit.

Sparsity, and what elimination costs

The factor is not sparse

A sparse matrix has a factor that is not sparse, and the gap between them is the entire reason iterative methods exist. The entries elimination creates can be counted before any arithmetic runs, from the graph alone.

Eigenvalues, singular values, rank

The form that makes it affordable

One Householder reduction, done once, turns every subsequent iteration of the eigenvalue algorithm from cubic to quadratic cost. It changes no answer at all, which is why it is easy to describe as an optimisation and wrong to.

Sparsity, and what elimination costs

The order decides the memory

Four elimination orderings on one matrix give factors of 1,739, 1,354, 1,413 and 1,026 entries. All four factorisations are exact, all four return the same answer, and the one with the better asymptotics is not the one that wins.

Eigenvalues, singular values, rank

The plane survives what its vectors do not

At a gap of 10⁻⁹ a perturbation of 10⁻⁶ turns the two eigenvectors through half a radian and turns the plane they span through 7.6·10⁻⁸ — a ratio of six million. Ask for the subspace instead of the vectors and a hopeless computation becomes a well-conditioned one, with no change to the arithmetic.

Sparsity, and what elimination costs

Two ends of the same arrow

One matrix, one row moved from the front of the elimination order to the back, and the factor goes from completely dense to no fill at all. Both factorisations are exact to rounding, and nothing numerical chose between them.

The whole library · All essays · What must fail