The matrix that is a graph

An eigenvector that must not change sign

Perron's theorem says the leading eigenvector of a connected nonnegative matrix is strictly positive. On a clique with a long tail, four of its thirty-six entries come back negative — and beside them is the one two-sided bound on this site that is proved rather than estimated.

Worth reading first: A ranking that is an eigenvector · The number that decides nothing.

Perron’s theorem is one of the few statements in linear algebra with no qualifications in it. If A is a nonnegative matrix whose graph is strongly connected, then its spectral radius is an eigenvalue, it is simple, and its eigenvector can be chosen with every entry strictly positive.

Not non-negative. Strictly positive: no entry is zero, and the theorem says so for every such matrix, of every size, with no condition on conditioning or spacing.

4 entries of a strictly positive vector are negativeThe Perron eigenvector of a twelve-vertex clique with a tail of 24, normalised to its largest entry, plotted as absolute values on a logarithmic axis. Perron–Frobenius says every entry of this vector is strictly positive, and it is a theorem about a connected nonnegative matrix rather than a statement about a good day. Each step along the tail divides the entry by about the Perron root 11.0077, so the entries fall by a decade a step and reach the rounding level after sixteen. Beyond it 4 of them are negative — the smallest at -1.507·10⁻²⁰ — and they are drawn as open circles. The bracket printed beside it is Collatz–Wielandt: for any strictly positive x, the Perron root lies between the smallest and largest of (Ax)ᵢ/xᵢ, so it is a two-sided bound that is proved, from one product, and after forty steps it is 1.2·10⁻⁴ wide.1611162126313610⁻²²10⁻¹⁹10⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹vertex, clique first then tail|entry| relative to the largestone rounding of the largest entrya bound that is provedPerron root11bracket, low11bracket, high11bracket width1.2·10⁻⁴smallest entry-1.5·10⁻²⁰entries below zero4every entry is positiveand the picture disagrees
Fig. 1 The Perron eigenvector of a twelve-vertex clique with a tail of twenty-four, normalised to its largest entry. Four of its entries are negative, and the open circles are those four.

A family where the entries have to be small

The theorem is about real numbers and the computation is not performed in real numbers, so the question is whether a matrix exists on which the two part company. It does, and it is not contrived.

Take a clique of twelve vertices and attach a path of length t to one of them. The Perron root of the adjacency matrix is 11.007688 — just above the clique’s own 11, because the tail perturbs it slightly. The eigenvector is large on the clique and decays along the tail, and the decay is geometric with ratio about one over the Perron root: each step out along the tail divides the entry by roughly eleven.

Eleven a step is a decade a step. After sixteen steps the entries are 10⁻¹⁶ of the largest, which is where binary64’s relative resolution runs out.

tail length    smallest entry    entries below zero    of
18              6.5·10⁻²⁰              0                30
24             −1.5·10⁻²⁰              4                36
30             −1.0·10⁻²⁰              6                42
34             −1.0·10⁻²⁰             10                46

At a tail of eighteen every entry is still positive, and the smallest is 6.5·10⁻²⁰ — already subnormal, which is a separate story below. At twenty-four, four entries have crossed zero. At thirty-four, ten have.

What has gone wrong, precisely

Nothing has gone wrong with the eigensolver. The eigenvalue is accurate to fourteen digits and the residual ‖Ax − ρx‖ relative to ‖A‖‖x‖ is at the rounding level. The vector returned is an excellent approximation to the true eigenvector in every norm anybody measures it in.

What has happened is that the true eigenvector’s smallest entries are 10⁻²⁰ times its largest, and an approximation accurate to a relative 10⁻¹⁶ of the vector’s norm has absolute error 10⁻¹⁶ in every entry — which is ten thousand times larger than the entries at the far end of the tail. Those entries are not approximated at all; they are noise, and noise has a sign.

This is the site’s oldest distinction wearing new clothes. A norm-wise error bound says nothing about the small entries of a vector, and an error measured entry by entry is the quantity that would have caught it. Every gate in this collection that checks an eigenvector checks a norm.

The theorem is not wrong and the computation is not wrong

It is worth being careful about what is being claimed, because there is a tempting and incorrect reading.

The theorem is a statement about the exact eigenvector of the exact matrix, and it is true. The computed vector is an accurate approximation in the norm it was computed to, and it is fine. The two statements are compatible because the property in question — every entry strictly positive — is not a property that survives a norm-wise approximation.

That is a general point about which properties are robust. Positivity of a large entry survives any approximation with relative error below one. Positivity of an entry that is 10⁻²⁰ of the norm survives nothing. A theorem whose conclusion is about the sign of an arbitrarily small quantity cannot be checked numerically at all, and the honest statement of it in floating point is: every entry above the noise floor is positive, and below it there is nothing to say.

The numbers below the smallest one

The entries here go subnormal, and it is worth noting because it is a second effect layered on the first.

Binary64’s smallest normal number is about 2.2·10⁻³⁰⁸, so 10⁻²⁰ is nowhere near underflow. What is relevant is the gradual loss of significance that happens to a quantity computed as a difference of larger ones: an entry of 10⁻²⁰ arrived as the sum of products of entries of order one, and its own accuracy is 10⁻¹⁶ absolute regardless of how small it is. It has no correct digits at all.

Extending the tail further does not make the situation worse in any measurable way — the smallest entry stops falling and sits at around 10⁻²⁰, which is where the noise floor is. That plateau in the table above is the noise floor being measured directly: entries below 10⁻²⁰ are not being computed, they are being generated.

The same effect on a graph nobody constructed

The lollipop is built to make the point, so it is fair to ask whether the effect needs building.

It does not. What it needs is a graph whose Perron vector spans more than sixteen orders of magnitude, and that requires only a periphery a dozen or so steps from a dense core. Any of these produce it: a citation network with a dense recent core and long chains of older references; a road network with a city and a rural tail; a web crawl with a hub and a long chain of paginated archives; a mesh with a refined region and a coarse far field.

The general rule is quick to state. The Perron vector decays roughly as ρ⁻ᵈ with distance d from the core, where ρ is the Perron root. So the number of steps to the noise floor is about 16 ÷ log₁₀ ρ: sixteen steps for a core of degree eleven, thirty-two for a core of degree four, eight for a core of degree a hundred.

The denser the core, the shallower the periphery has to be for this to bite. A social graph with a core of degree a thousand puts every vertex more than five steps out below the floor — which is most of the graph.

The bound that is proved

Beside the entries, the figure prints something this site almost never has: an enclosure of the answer that is a theorem rather than an estimate.

The Collatz–Wielandt characterisation says that for any strictly positive vector x, the Perron root lies between the smallest and largest of the ratios (Ax)ᵢ/xᵢ:

min (Ax)ᵢ/xᵢ   ≤   ρ(A)   ≤   max (Ax)ᵢ/xᵢ

That is a two-sided bound, it holds for every positive x rather than for a good one, and it costs one matrix–vector product. Neither half is asymptotic and neither carries an unknown constant.

Run on the same graph, starting from a random positive vector and taking power steps:

step    lower bound      upper bound      width
 1       0.559190        25.351571        2.5·10¹
40      11.0075678303    11.0076877614    1.2·10⁻⁴

After forty products the root is known to lie in an interval of width 1.2·10⁻⁴ around 11.0077, and that is not a statement about how well the iteration has converged — it is a statement about where the answer is.

Why that is rare

Almost every error bar on this site is an estimate. A condition estimate is a lower bound with a probability attached and can be fooled by a constructed matrix. A residual is a computable quantity that bounds the backward error and says nothing about the forward one without a condition number nobody has. A randomised trace estimate has a variance rather than an interval.

The exceptions are interval arithmetic, which pays for its rigour in width, and this. Collatz–Wielandt is free, tight, and applies to a large class of matrices — every nonnegative one, which includes every adjacency matrix, every stochastic matrix and every Google matrix.

The catch is in the hypothesis: x must be strictly positive. That is why the assertion in this field refuses a vector with a zero in it rather than dividing by it, and it is also why the theorem cannot be used on the tail of the lollipop graph above once the entries have crossed zero. The bracket is exact where the vector is positive and undefined where it is not, and the region where it is undefined is exactly the region the essay is about.

What to do about it

Three things, in the order they cost.

Read the vector relative to its own largest entry, and say where the floor is. An entry at 10⁻²⁰ of the maximum carries no information; reporting it as a centrality score, or comparing two of them, is reading noise. The floor is one unit roundoff times the norm, and it is one line to compute.

Use the bracket. Any positive vector gives a proved enclosure of the Perron root at the cost of one product. Anything doing power iteration already computes that product and is throwing the bound away.

And if the small entries genuinely matter, change the question. The relative accuracy of a small entry of an eigenvector is not something a norm-wise algorithm delivers, and asking for it is asking for a different computation — a relative-accuracy eigensolver, or a formulation in which the quantity of interest is not a small entry of a large vector. On a graph, that usually means asking about the tail on its own rather than about the whole object at once.

Two routes, and what they disagree about

The site’s habit is to compute everything twice, and here the two routes disagree in an instructive place.

Through the symmetric eigensolver. For an undirected graph the adjacency matrix is symmetric, so the site’s own Jacobi sweep returns the whole spectrum, and the Perron pair is the largest eigenvalue and its column. That is what the figure draws.

Through the power iteration. Start positive, multiply, normalise, repeat. Every iterate is nonnegative by construction, because a nonnegative matrix times a nonnegative vector is nonnegative — there is no subtraction anywhere in the loop.

So the power iteration’s answer cannot have a negative entry, ever, whatever the arithmetic does. Measured on the same graph, the last eight entries of each:

power iteration   2.25e-18  2.06e-19  1.89e-20  1.73e-21  1.59e-22  1.45e-23  1.33e-24  1.21e-25
eigensolver       2.28e-18  1.36e-19  4.61e-20 -7.13e-22 -5.52e-21 -2.44e-20  1.33e-20 -5.19e-20

The two agree on the Perron root to nine digits — 11.007687761 both ways — and agree on the first of those entries to three. After that they part completely. The power iteration’s sequence continues to fall by a factor of about eleven a step, all the way to 1.2·10⁻²⁵, and every one of those entries is correct to several digits: each is the previous one divided by the root, computed by additions of positive numbers, with no cancellation anywhere. The eigensolver’s stops being a sequence at 10⁻¹⁹ and becomes noise.

So the route that is structurally incapable of returning a negative entry is also the accurate one, and it is accurate for the same reason. A Jacobi sweep performs rotations, which subtract; a power iteration on a nonnegative matrix does not subtract at all, so the relative accuracy of a small entry survives, and the theorem’s conclusion survives with it.

That is the useful form of the result. It is not that one method is better in general — the eigensolver returns the whole spectrum and the power iteration returns one pair — but that a property guaranteed by a theorem is preserved numerically only by an algorithm whose arithmetic cannot violate it. The same argument runs through relative-accuracy eigensolvers: what buys relative accuracy in the small eigenvalues is a factorisation with no subtractions in the wrong places, and it is a property of the algorithm rather than of the precision.

Where this bites in practice

Two places, and neither of them is exotic.

Eigenvector centrality on a graph with a periphery. The construction above is a caricature of a real shape: a dense core with sparse structures hanging off it. Every vertex more than a dozen steps from the core has a centrality score that is noise, and a ranking that includes them is ranking rounding errors against each other. The ranking essay measures how many places of such a list are determined; this is the mechanism that makes the answer small.

Any test of the form “is this vector nonnegative”. A routine that checks whether a computed eigenvector satisfies its own theorem will find that it does not, on a graph like this, and the correct response is neither to loosen the check to zero tolerance nor to conclude the eigensolver is broken. It is to check nonnegativity at the noise floor, and to say what the floor was.

The general form is one this collection keeps arriving at: a property that holds exactly in the algebra needs a tolerance to be checked in the arithmetic, and choosing the tolerance is choosing what the check means. Deciding that a zero has arrived is the same decision for a different property, and rank is a decision is it for a third.

What the bracket does not give

One limitation is worth stating, because the enclosure above is good enough that it invites being asked for more than it provides.

Collatz–Wielandt brackets the eigenvalue. It says nothing whatever about the eigenvector, and the eigenvector is what the essay is about. A run can know the Perron root to 10⁻⁴ from one product and still have a vector whose small entries are noise, and there is no analogous free two-sided bound on the entries.

Nor does the bracket narrow quickly. Its width fell from 25 to 1.2·10⁻⁴ over forty products — about a factor of two and a half a step, which is the gap between the Perron root and the next eigenvalue — so it converges at exactly the rate the power iteration does and is not a shortcut. What it buys is not speed but certainty: at any step, the interval printed contains the answer, whereas the iterate’s own change contains nothing but a claim about the last step.

That distinction is the one worth carrying out of this essay alongside the sign measurement. A quantity with an enclosure and a quantity with an estimate are different kinds of object, and this field has one of each sitting side by side in the same figure.

At other settings

Every entry positive, and the smallest is 1.7·10⁻⁷The Perron eigenvector of a twelve-vertex clique with a tail of 6, normalised to its largest entry, plotted as absolute values on a logarithmic axis. Perron–Frobenius says every entry of this vector is strictly positive, and it is a theorem about a connected nonnegative matrix rather than a statement about a good day. Each step along the tail divides the entry by about the Perron root 11.0077, so the entries fall by a decade a step and reach the rounding level after sixteen. Every entry here is still positive. The bracket printed beside it is Collatz–Wielandt: for any strictly positive x, the Perron root lies between the smallest and largest of (Ax)ᵢ/xᵢ, so it is a two-sided bound that is proved, from one product, and after forty steps it is 1.78·10⁻¹⁵ wide.14710131610⁻²²10⁻¹⁹10⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹vertex, clique first then tail|entry| relative to the largestone rounding of the largest entrya bound that is provedPerron root11bracket, low11bracket, high11bracket width1.8·10⁻¹⁵smallest entry1.7·10⁻⁷entries below zero0every entry is positiveand the picture disagrees
Fig. 2 A short tail, where every entry is comfortably above the floor and the theorem holds numerically.
Every entry positive, and the smallest is 8.45·10⁻¹⁶The Perron eigenvector of a twelve-vertex clique with a tail of 14, normalised to its largest entry, plotted as absolute values on a logarithmic axis. Perron–Frobenius says every entry of this vector is strictly positive, and it is a theorem about a connected nonnegative matrix rather than a statement about a good day. Each step along the tail divides the entry by about the Perron root 11.0077, so the entries fall by a decade a step and reach the rounding level after sixteen. Every entry here is still positive. The bracket printed beside it is Collatz–Wielandt: for any strictly positive x, the Perron root lies between the smallest and largest of (Ax)ᵢ/xᵢ, so it is a two-sided bound that is proved, from one product, and after forty steps it is 8.88·10⁻¹⁵ wide.1591317212510⁻²²10⁻¹⁹10⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹vertex, clique first then tail|entry| relative to the largestone rounding of the largest entrya bound that is provedPerron root11bracket, low11bracket, high11bracket width8.9·10⁻¹⁵smallest entry8.4·10⁻¹⁶entries below zero0every entry is positiveand the picture disagrees
Fig. 3 Fourteen, where the smallest entry is approaching the floor.
Every entry positive, and the smallest is 6.45·10⁻²⁰The Perron eigenvector of a twelve-vertex clique with a tail of 18, normalised to its largest entry, plotted as absolute values on a logarithmic axis. Perron–Frobenius says every entry of this vector is strictly positive, and it is a theorem about a connected nonnegative matrix rather than a statement about a good day. Each step along the tail divides the entry by about the Perron root 11.0077, so the entries fall by a decade a step and reach the rounding level after sixteen. Every entry here is still positive. The bracket printed beside it is Collatz–Wielandt: for any strictly positive x, the Perron root lies between the smallest and largest of (Ax)ᵢ/xᵢ, so it is a two-sided bound that is proved, from one product, and after forty steps it is 7.87·10⁻¹¹ wide.159131721252910⁻²²10⁻¹⁹10⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹vertex, clique first then tail|entry| relative to the largestone rounding of the largest entrya bound that is provedPerron root11bracket, low11bracket, high11bracket width7.9·10⁻¹¹smallest entry6.5·10⁻²⁰entries below zero0every entry is positiveand the picture disagrees
Fig. 4 Eighteen, the last length at which every entry is still positive.
10 entries of a strictly positive vector are negativeThe Perron eigenvector of a twelve-vertex clique with a tail of 34, normalised to its largest entry, plotted as absolute values on a logarithmic axis. Perron–Frobenius says every entry of this vector is strictly positive, and it is a theorem about a connected nonnegative matrix rather than a statement about a good day. Each step along the tail divides the entry by about the Perron root 11.0077, so the entries fall by a decade a step and reach the rounding level after sixteen. Beyond it 10 of them are negative — the smallest at -1.032·10⁻²⁰ — and they are drawn as open circles. The bracket printed beside it is Collatz–Wielandt: for any strictly positive x, the Perron root lies between the smallest and largest of (Ax)ᵢ/xᵢ, so it is a two-sided bound that is proved, from one product, and after forty steps it is 9.15 wide.18152229364310⁻²²10⁻¹⁹10⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹vertex, clique first then tail|entry| relative to the largestone rounding of the largest entrya bound that is provedPerron root11bracket, low1.9bracket, high11bracket width9.2smallest entry-1·10⁻²⁰entries below zero10every entry is positiveand the picture disagrees
Fig. 5 And thirty-four, where ten of forty-six entries have crossed zero.
Contracting by 0.7668 where the folk rate says 0.85The PageRank power iteration on a connected fifty-vertex graph, at α = 0.85, plotted as the change between successive iterates. The upper dashed line is αᵏ, the rate every account of the method quotes. The lower one is (α·λ₂(P))ᵏ, which is what the second eigenvalue of the Google matrix actually is: λ₂(P) = 0.90238 here. The measured contraction over the run is 0.76683. The two agree exactly when λ₂(P) = 1, which happens exactly when the link graph has more than one closed communicating class — which every real one does, and which is why a statement that is false of connected graphs has never been noticed to be. The answer is checked against one elimination of I − αP̃, which agrees to 1.04·10⁻¹⁶.01428425670849810⁻¹⁶10⁻¹⁴10⁻¹²10⁻¹⁰10⁻⁸10⁻⁶10⁻⁴10⁻²iterationchange between iteratestwo rates, one curveα0.85λ₂(P)0.9predicted rate0.77measured0.77iterations108against the solve10⁻¹⁶the upper dashed line is αᵏthe curve is on the other one
Fig. 6 The iteration whose limit is a Perron vector, in the anchor before this one.
14 of 14 places survive the arithmetic and 3 survive one missing linkThe top 15 of a PageRank ranking on an eighty-page link graph, and how many of its 14 adjacent comparisons keep their order under three kinds of doubt. Perturbing the teleport vector at the rounding level moves every entry by at most 4.05·10⁻¹¹ and settles 14 of them. Moving α across the range everybody uses moves entries by 0.00123 and settles 11. Removing a single arc — one link that might or might not have been crawled — moves entries by 0.00443 and settles 3. The gaps between consecutive entries run from 6.28·10⁻⁵ to 0.00241, so the ordering is decided by the data at a scale ten orders above anything the arithmetic does. This is the one field on the site where the computation is not the weakest part of the answer.places settled, of 14the arithmetic14 of 14one missing link3 of 14α from 0.80 to 0.9011 of 14entries move by 4.05·10⁻¹¹entries move by 0.00443entries move by 0.00123three kinds of doubtcomparisons14smallest gap6.3·10⁻⁵largest gap0.0024arithmetic band4.1·10⁻¹¹one-link band0.0044α band0.0012the arithmetic settles nearly all of themthe data settles three
Fig. 7 What a ranking built from such a vector is determined by.
barbell 12: 24 vertices, 133 edges, and a matrix built from themThe barbell 12 laid out at its own second and third Laplacian eigenvectors, so the picture is the same object the measurements are about. The Laplacian L = D − A is built by subtraction of integers, so every row sums to exactly zero — measured at 0, not at the rounding level — and L·1 is the zero vector with no arithmetic error anywhere in it. Its 1 zero eigenvalue counts the connected components, which breadth-first search also puts at 1; the smallest non-zero eigenvalue is 0.1443 and the largest computed zero is 8.24·10⁻¹⁶, a gap of 1.75·10¹⁴. The quadratic form xᵀLx is Σ over edges of (xᵢ − xⱼ)², which at the alternating vector is 292.the matrix, measuredvertices24edges133‖L·1‖∞0zero eigenvalues1components, by search1λ₂0.14laid out at its own eigenvectorsand the row sums are exactly zero
Fig. 8 A graph with two dense parts, which is the shape whose Perron vector decays between them.
preferential 60: 60 vertices, 117 edges, and a matrix built from themThe preferential 60 laid out at its own second and third Laplacian eigenvectors, so the picture is the same object the measurements are about. The Laplacian L = D − A is built by subtraction of integers, so every row sums to exactly zero — measured at 0, not at the rounding level — and L·1 is the zero vector with no arithmetic error anywhere in it. Its 1 zero eigenvalue counts the connected components, which breadth-first search also puts at 1; the smallest non-zero eigenvalue is 0.5861 and the largest computed zero is 4.82·10⁻¹⁷, a gap of 1.22·10¹⁶. The quadratic form xᵀLx is Σ over edges of (xᵢ − xⱼ)², which at the alternating vector is 248.the matrix, measuredvertices60edges117‖L·1‖∞0zero eigenvalues1components, by search1λ₂0.59laid out at its own eigenvectorsand the row sums are exactly zero
Fig. 9 A degree-skewed graph, whose centrality scores span several orders.
The spacing of the numbers below the smallest normal, at 11 significand bitsA staircase of spacing against magnitude on logarithmic axes. It descends in steps from the right and then flattens to a horizontal line at the left. A dashed line drops away instead.10⁻⁷10⁻⁵10⁻³10⁻¹⁰10⁻⁸10⁻⁶magnitudespacing to the next numberthe smallest normalgradualflush to zerosmallest normal6.1·10⁻⁵smallest subnormal6·10⁻⁸octaves of subnormals10pairs that lie under FTZ10the spacing stops halving and stays putwhich is what makes x − y = 0 mean x = y
Fig. 10 The numbers below the smallest normal one, in the arithmetic field.
Relative error of two algebraically identical expressions for (1 − cos x)/x², in binary32A log–log plot of relative error against x. The expression written as it reads loses accuracy as x falls and is eventually wrong in every digit; the rearranged form stays at rounding level.10⁻⁸10⁻⁶10⁻⁴10⁻²110⁻⁹10⁻⁶10⁻³1xrelative error of the computed value(1 − cos x)/x², as written2 sin²(x/2)/x²no digits left at allbinary32 throughoutone function, two spellings · zero below 3.5·10⁻⁴
Fig. 11 Cancellation taking the answer rather than a digit.
The proved bound against the error it bounds, at 24 significand bitsTwo curves against the Hilbert size on a logarithmic vertical axis: the error the computation actually made, which is known because the exact answer is the integers by construction, and the bound proved for it in interval arithmetic. The bound is above the error at every size, by 9.949 to 23.12 times. Past n = 5 the method refuses to return a bound at all.345678910111210⁻⁵10⁻³10⁻¹Hilbert size nerrorrefusedrefusedrefusedrefusedrefusedthe proved boundthe actual errorbound ÷ errorslack at n = 313slack at n = 423slack at n = 59.9the error is known, not estimatedthe exact answer is the integers 1 … n
Fig. 12 The site’s other proved enclosure, which pays for its rigour in width.
How close Hager's estimate is to the true κ₁, over 200 seeded 8×8 matricesFive bars. The estimate is exactly the true condition number on 81% of the sample and inside ten per cent on 87%; the worst underestimate in the whole sample returns 38% of the truth. The last bar is the matrix built to defeat it, at 7.7%, well below anything the random sample reached.each bar is a percentage — of the sample, or of the true condition numberexactly right80.5%inside 10%87.0%inside a factor of 287.0%worst in the sample, ×10037.7%the constructed matrix, ×1007.7%usually exactexact share0.81worst of the sample0.38the constructed matrix0.077a routine that is right most of the timeand never wrong in the safe direction
Fig. 13 An estimate that is not an enclosure, in the field about what an estimate is worth.
Relative error of each singular value of a bidiagonal matrix graded over 11 decades, by four routesThe matrix is 8×8, bidiagonal, and every entry is a power of two times a small integer, so the matrix the float routines are handed and the matrix the exact routine reasons about are the same matrix. The reference is a Sturm bisection in BigInt rationals, which never rounds. σ_min is 1.934·10⁻¹¹. One-sided Jacobi holds every value to 7.1·10⁻¹⁶ relative and the zero-shift bidiagonal sweep to 4.41·10⁻¹⁶; the eigenvalues of BᵀB are wrong by 14.5 — not a rounding error but the whole number — and the damage is entirely at the small end.1234567810⁻¹⁷10⁻¹⁴10⁻¹¹10⁻⁸10⁻⁵10⁻²10¹singular value, largest firstrelative errorone-sided Jacobizero-shift QRshifted QReigenvalues of BᵀBagainst a rational bisectionσ_min, exactly1.9·10⁻¹¹worst, one-sided Jacobi7.1·10⁻¹⁶worst, zero-shift QR4.4·10⁻¹⁶worst, eigenvalues of BᵀB15a relative error is a ratioand the denominator is the answer
Fig. 14 Accuracy measured relative to each entry rather than to a norm.
Two perturbation bounds and the error that was measured, on a 8×8 matrix spread over 8 decades of unitsThree curves against the size of an entrywise relative perturbation. The normwise bound κ_∞·ε is a valid bound and sits 4·10⁷ times above the componentwise one cond(A, x)·ε, which is also a bound and is nearly attained by the worst of forty random perturbations at each size.10⁻¹⁴10⁻¹³10⁻¹²10⁻¹¹10⁻¹⁰10⁻⁹10⁻¹⁵10⁻¹²10⁻⁹10⁻⁶10⁻³1relative size of the entrywise perturbationrelative forward errorκ_∞ · εcond(A,x) · εmeasuredboth bounds holdκ_∞(A)1.9·10⁸cond(A, x)4.8ratio of the bounds4·10⁷both curves above the data are boundsand only one of them is a measurement
Fig. 15 An error measured entry by entry, which is the bound that would have seen this.
How far a perturbation of size ε moves an eigenvalue, 8×8A log–log plot of eigenvalue movement against perturbation size. The symmetric case lies on a line of slope one; the non-symmetric case lies on a line of slope one eighth, and at a perturbation of ten to the minus sixteen it has already moved by a hundredth.10⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹10⁻¹⁶10⁻¹³10⁻¹⁰10⁻⁷10⁻⁴10⁻¹size of the perturbation ‖δA‖how far the eigenvalues moveJordan block, ε^(1/8)symmetric, ≤ ‖δA‖rounding error alone moves it to 10⁻²six seeds per symmetric point; Jordan is closed formsymmetry beats precision
Fig. 16 How far an eigenvalue moves when its matrix does.
What a perturbation of 10⁻⁶ moves, against the gap it is applied acrossThree curves against the gap between two eigenvalues, both axes logarithmic. Two are flat; the third rises steeply as the gap closes and then levels off.10⁻⁹10⁻⁷10⁻⁵10⁻³10⁻⁸10⁻⁵10⁻²gap between the two eigenvalueshow far it movedthe eigenvectorsthe eigenvaluestheir plane‖E‖ / gapone perturbation, three answerseigenvalue shift, spread over the sweep1plane angle, spread over the sweep1eigenvector angle, spread1.6·10⁵the dashed line is Davis–Kahan's ‖E‖/gaptwo of the three never noticed
Fig. 17 A gap deciding an eigenvector, which the Perron root has a large one of.
Singular values of a rank-4 matrix with noise of relative size 10⁻⁸Ten singular values on a logarithmic axis. The first four sit near one; the rest sit at the noise level, and the vertical distance between the two groups is the evidence for the rank.1234567891010⁻¹⁸10⁻¹⁵10⁻¹²10⁻⁹10⁻⁶10⁻³1indexsingular valuecutoff, σ₁ · 10⁻¹⁰numerical rank 10gap 8.2·10⁶an opiniontrue rank 410×10, built with 4 nonzero valuesrank is a decision
Fig. 18 A threshold turning a continuous quantity into a verdict.
Backward and forward error against the condition numberA log–log plot over twelve decades of condition number. The backward error is a flat line at ten to the minus sixteen; the forward error rises in proportion to the condition number.110²10⁴10⁶10⁸10¹⁰10¹²10¹⁴10⁻¹⁷10⁻¹⁴10⁻¹¹10⁻⁸10⁻⁵10⁻²10¹condition number κ(A)relative errorforward errorbackward errorpredicted: κ · u8×8, 20 seeds per κ; dashed is the worstthe problem worsens, not the method
Fig. 19 The two errors, of which the residual here is excellent and the entries are not.
The exact solution of a 13×13 Hilbert system beside the computed oneTwo columns of numbers: the exact answer, which is the integers one to thirteen, and the answer double-precision elimination returns, with the number of correct digits beside each.H13 x = b, b formed exactly so that x = (1, 2, …, 13)12345678910111213exact1.00002.00003.00133.97865.18864.993010.46720.048921.2657-2.575319.21478.906013.5113computed6.6 correct digits4.8 correct digits3.4 correct digits2.3 correct digits1.4 correct digit0.8 correct digitno correct digitsno correct digitsno correct digitsno correct digitsno correct digits0.6 correct digit1.4 correct digitbackward error2.2·10⁻¹⁷κ = 1.7·10¹⁸The algorithm solved a neighbouring problem perfectly. That problem's answer is this one.right-hand side built in BigInt rationalsthe truth is known
Fig. 20 An answer known exactly, which the Perron root of this family nearly is.
Forward error of a 6×6 Hilbert solve at eight precisionsA bar for each significand width from 12 to 53 bits showing the relative error in the computed solution, with the condition number times the unit roundoff marked as a prediction.κ = 1.5·10⁷ · the exact answer is (1, 2, …, 6)12 bits3.316 bits0.8620 bits4.324 bits0.09330 bits7.6·10⁻⁴36 bits6.2·10⁻⁶43 bits2·10⁻⁷53 bits4.5·10⁻¹¹dashed: κ · unit roundoffone matrix, eight arithmeticsmeasured against a known answer
Fig. 21 The precision knob, which moves the floor in this essay and does not remove it.
How much a perturbation of the right-hand side is amplified, κ = 10⁶The cumulative distribution of the amplification factor over two hundred random perturbation directions, with the condition number marked as the upper limit.110¹10²10³10⁴10⁵10⁶10⁷00.250.50.751amplification of the input perturbationfraction of directions at or belowκ = 10·10⁵worst found 7.6·10⁵6×6, 200 directionsmedian reaches 0.29 of κ
Fig. 22 The amplifier belonging to the problem.
Backward error, forward error and the condition number, with measured valuesTwo boxes at the top — the problem posed and the nearby problem the algorithm answered exactly — and two answers below them, with the distances between all four labelled by numbers from a Hilbert solve.the problem you posedA = H10b = A·(1, 2, …, 10)the problem it answered exactlyA + δA, b + δb‖δ‖ / ‖A‖ = 2.3·10⁻¹⁷the answer you wantedx = (1, 2, …, 10), exactlythe answer you gotx̂, wrong by 2.7·10⁻⁴ relativebackward error 2.3·10⁻¹⁷forward error 2.7·10⁻⁴κ = 1.6·10¹³κ · η = 3.6·10⁻⁴, and the measured forward error is 2.7·10⁻⁴.The algorithm is not at fault. The problem is.H10, LU with partial pivotingresidual and error differ
Fig. 23 The identity every measurement here is read against.
Past the cliff: what each method returnsLoss of orthogonality at four condition numbers past κ²u = 1. Cholesky QR returns a factor whose implied Q is 0.37 away from orthogonal at κ = 10⁸ and 1.49 at 10¹² — and at 3·10¹⁰ it refuses outright, on a pivot of -6.5·10⁻¹⁷. The sweep and the tree return a usable factorisation of every one of these matrices.‖QᵀQ − I‖ of the implied Qκ = 10⁸, Cholesky0.37κ = 10⁸, sweep8.5·10⁻⁹κ = 10¹⁰, Cholesky1.3κ = 10¹⁰, sweep3·10⁻⁷κ = 3·10¹⁰, Choleskyrefusedκ = 3·10¹⁰, sweep6.7·10⁻⁶κ = 10¹², Cholesky1.5κ = 10¹², sweep1.4·10⁻⁴the safe run is the one that failsrefusals in the range1wholly non-orthogonal returns2the pivot it refused on-6.5·10⁻¹⁷one of these outcomes is safeand it is the refusal
Fig. 24 A routine that returns something rather than refusing.
122 steps to forget where it started, and λ₂ said 131A random walk on a sixty-vertex graph with two blocks joined at a density of 0.03, started at one vertex, measured as the total variation distance from its stationary distribution. It reaches 10⁻⁶ after 122 steps. The dashed line is |λ₂|ᵏ with λ₂ = 0.900071 from the walk matrix, and the number of steps that predicts is 131. The distance is not the eigenvalue: for the first several steps the walk is leaving one block and the decay is faster than the asymptote, and the two curves become parallel only once the slowest mode is all that is left. The eigenvalue is a rate, not a schedule, and the difference between them is 9.22 steps.0173451688510211910⁻⁶10⁻⁵10⁻⁴10⁻³10⁻²10⁻¹1steps of the walkdistance from stationarya rate read as a timeλ₂ of the walk0.9steps measured122steps predicted131ratio0.93the dashed line is the eigenvaluethe curve is the walk
Fig. 25 The rate at which a walk approaches the vector this essay is about.
The lower bound is attained and the upper one is out by 37.3×Cheeger's inequality on nine graphs of about 40 vertices each: for the normalised Laplacian's λ₂, λ₂/2 ≤ φ ≤ √(2λ₂), where φ is the conductance the sweep cut actually achieves. Each row shows the two bounds as a bar and the measured conductance as a dot inside it. The lower bound is tight on the complete at a ratio of 1. The upper bound is loosest on the barbell — by a factor of 37.3 — which is the graph in the census with a real bottleneck, and therefore the shape the inequality is always quoted about. The square root is what makes it loose: it is the price of turning a spectral quantity into a combinatorial guarantee, and it is paid where the guarantee is wanted.10⁻³10⁻²10⁻¹110¹12345678910conductance, and the two bounds on itpathcyclegridbarbelltwo blockshypercubepreferentialstarcompletethe bar is the inequalitythe dot is the graph
Fig. 26 A bracket that is a theorem, like this essay’s, on a different quantity.

What links here

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

Reads more easily once this is understood

Essays that name this one as worth reading first.

Named objects

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

CentralityCertificateCollatz wielandtEigenvectorPerron frobeniusPower iterationSpectral radiusSubnormal numbers