No figure on this site is a drawing that was made once and saved. Each one is a function:
it takes parameters and returns SVG, so the same generator produces the p4 plate and the
p6m plate without either being redrawn.
That is the reason the collection can keep growing without the illustrations drifting apart.
A generator is written once, checked once, and every essay that calls it inherits the same
line weights, the same colour roles, and the same behaviour in dark mode. There are
25 of them so far.
basis-conditioning
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.2 0.4 0.6 0.8 1 x y both fits, drawn on top of one another condition number of the design matrix monomial 1.2·10⁸ Chebyshev 2.5 largest fitted coefficient monomial 113 Chebyshev 0.51 rms residual: 3.9·10⁻⁶ and 2.9·10⁻⁷ — the data is fitted either way. 30 points, degree 11, single precision the basis is part of the problem
cancellation
10⁻¹² 10⁻¹⁰ 10⁻⁸ 10⁻⁶ 10⁻⁴ 10⁻² 1 10⁻¹⁷ 10⁻¹⁴ 10⁻¹¹ 10⁻⁸ 10⁻⁵ 10⁻² 10¹ x relative error of the computed value (1 − cos x)/x², as written 2 sin²(x/2)/x² no digits left at all double precision throughout one function, two spellings
condition-amplify
1 10¹ 10² 10³ 10⁴ 10⁵ 10⁶ 10⁷ 0 0.25 0.5 0.75 1 amplification of the input perturbation fraction of directions at or below κ = 10·10⁵ worst found 7.6·10⁵ 6×6, 200 directions median reaches 0.29 of κ
eigen-sensitivity
10⁻¹⁶ 10⁻¹³ 10⁻¹⁰ 10⁻⁷ 10⁻⁴ 10⁻¹ 10⁻¹⁶ 10⁻¹³ 10⁻¹⁰ 10⁻⁷ 10⁻⁴ 10⁻¹ size of the perturbation ‖δA‖ how far the eigenvalues move Jordan block, ε^(1/8) symmetric, ≤ ‖δA‖ rounding error alone moves it to 10⁻² six seeds per symmetric point; Jordan is closed form symmetry beats precision
elimination-steps
2 1 -1 3 -3 -1 2 1 -2 1 2 -4 4 3 -1 2 as given rows in the order 1 2 3 4 4 3 -1 2 0 1.25 1.25 2.5 0 2.5 1.5 -3 0 -0.5 -0.5 2 after step 1 pivot 4 4 3 -1 2 0 2.5 1.5 -3 0 0 0.5 4 0 0 -0.2 1.4 after step 2 pivot 2.5 4 3 -1 2 0 2.5 1.5 -3 0 0 0.5 4 0 0 0 3 after step 3 pivot 0.5 ‖PA − LU‖/‖A‖ 0 largest multiplier 0.75 row order 4 3 2 1 the pivot is chosen
error-triangle
the problem you posed A = H10 b = A·(1, 2, …, 10) the problem it answered exactly A + δA, b + δb ‖δ‖ / ‖A‖ = 2.3·10⁻¹⁷ the answer you wanted x = (1, 2, …, 10), exactly the answer you got x̂, wrong by 2.7·10⁻⁴ relative backward 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 pivoting residual and error differ
exact-ground-truth
H13 x = b, b formed exactly so that x = (1, 2, …, 13) 1 2 3 4 5 6 7 8 9 10 11 12 13 exact 1.0000 2.0000 3.0013 3.9786 5.1886 4.9930 10.4672 0.0489 21.2657 -2.5753 19.2147 8.9060 13.5113 computed 6.6 correct digits 4.8 correct digits 3.4 correct digits 2.3 correct digits 1.4 correct digit 0.8 correct digit no correct digits no correct digits no correct digits no correct digits no correct digits 0.6 correct digit 1.4 correct digit backward error 2.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 rationals the truth is known
flat-valley
10⁻⁴ 10⁻³ 10⁻² 10⁻¹ 1 10¹ 10² 10³ 10⁻¹⁶ 10⁻¹³ 10⁻¹⁰ 10⁻⁷ 10⁻⁴ 10⁻¹ relative change in the coefficients, along the worst direction relative increase in the residual coefficients doubled 39% change, fit unmoved in the sixth digit 308×: the third digit moves κ(A) = 3.6·10⁶. Exact arithmetic would pick one point on this floor. It would not raise it. 24 points, degree 9, monomial basis the data leaves them free
gram-schmidt-order
for each previous column i, subtract the projection of column j onto qᵢ classical r[i][j] = qᵢ · a[j] ↑ the ORIGINAL column v = v − r[i][j] · qᵢ the three worst |qᵢ · qⱼ|: columns 7 and 8: 1 columns 6 and 8: 0.13 columns 6 and 7: 0.13 modified r[i][j] = qᵢ · v ↑ what is LEFT of it v = v − r[i][j] · qᵢ the three worst |qᵢ · qⱼ|: columns 1 and 8: 4.4·10⁻⁷ columns 2 and 8: 2.7·10⁻⁷ columns 3 and 8: 2.4·10⁻⁸ The two R factors agree to 1.2·10⁻⁶ relative. The two Q factors do not. the 8×8 Hilbert matrix one word, eight orders
growth-factor
0 8 16 24 32 40 1 10² 10⁴ 10⁶ 10⁸ 10¹⁰ 10¹² 10¹⁴ matrix size n growth factor max|u| / max|a| the 2ⁿ⁻¹ bound worst of 30 random median random Wilkinson's matrix sits on the bound 30 Gaussian matrices per size at n = 40: bound 5.5·10¹¹, worst 4.8
householder-reflection
the mirror x, length 4.000 Hx = (-4.000, 0) v = x − αe₁ safe sign: α = −‖x‖, so v is formed from a sum and nothing cancels unsafe sign: α = +‖x‖ gives ‖v‖ only 35.1% of ‖x‖ + ‖x‖ — the digits go ‖HᵀH − I‖ 5·10⁻¹⁶ ‖Hx‖ − ‖x‖ 8.9·10⁻¹⁶ second component 2.2·10⁻¹⁶ built from a unit vector orthogonality is structural
jacobi-convergence
0 1 2 3 4 5 6 7 8 10⁻¹⁷ 10⁻¹⁴ 10⁻¹¹ 10⁻⁸ 10⁻⁵ 10⁻² 10¹ sweep ‖off-diagonal‖ eigenvalues, largest first 1.619 0.2424 0.01632 6.157·10⁻⁴ 1.257·10⁻⁵ 1.083·10⁻⁷ κ = 1.5·10⁷ ‖VᵀV − I‖ = 1.9·10⁻¹⁵ 1.00 0.50 0.33 0.25 0.20 0.17 0.50 0.33 0.25 0.20 0.17 0.14 0.33 0.25 0.20 0.17 0.14 0.13 0.25 0.20 0.17 0.14 0.13 0.11 0.20 0.17 0.14 0.13 0.11 0.10 0.17 0.14 0.13 0.11 0.10 0.09 as given 1.62 0.05 0.00 -0.04 0.00 -0.00 0.05 0.24 0.00 0.01 0.00 -0.00 0.00 0.00 0.00 0.00 -0.00 -0.00 -0.04 0.01 0.00 0.02 0.00 0.00 0.00 0.00 -0.00 0.00 0.00 · -0.00 -0.00 -0.00 0.00 · 0.00 after one sweep 1.62 · · · · · · 0.24 · · · · · · 0.00 · · · · · · 0.02 · · · · · · 0.00 · · · · · · 0.00 after 8 sweeps each sweep is n(n−1)/2 rotations the trace is conserved
low-rank-error
1 2 3 4 5 6 7 8 9 10⁻¹⁰ 10⁻⁸ 10⁻⁶ 10⁻⁴ 10⁻² 1 rank k of the approximation ‖A − Aₖ‖ measured, 2-norm σₖ₊₁, from theory measured, Frobenius the first two agree to 4.3·10⁻⁹ worst |‖A−Aₖ‖₂ − σₖ₊₁| / σₖ₊₁ 4.3·10⁻⁹ worst Frobenius discrepancy 4.3·10⁻⁹ κ = 10⁹; 30 random rank-3 matrices, none closer the error is σₖ₊₁
normal-equations-road
10⁻⁸ 10⁻⁷ 10⁻⁶ 10⁻⁵ 10⁻⁴ 10⁻³ 10⁻² 10⁻¹ 10⁻⁹ 10⁻⁷ 10⁻⁵ 10⁻³ 10⁻¹ 10¹ ε in Läuchli's matrix (smaller ε, larger κ) relative error in the coefficients AᵀA exactly singular normal equations QR κ from 1.7·10⁸ to 17 the cliff is at √u = 2.4·10⁻⁴
orth-loss-curve
1 10² 10⁴ 10⁶ 10⁸ 10¹⁰ 10¹² 10⁻¹⁷ 10⁻¹⁴ 10⁻¹¹ 10⁻⁸ 10⁻⁵ 10⁻² 10¹ condition number κ(A) ‖QᵀQ − I‖ classical modified Householder κ²u κu 8×8, eight seeds per κ, binary64 all three reconstruct A
pivot-failure
[ ε 1 ; 1 1 ] x = [ 1 ; 2 ], exact answer (1.000000, 1.000000) with partial pivoting 1 1 0 1 U after elimination 1.000000 1.000000 computed x backward error 0 forward error 0 without 10⁻¹⁷ 1 0 -1·10¹⁷ U after elimination 0.000000 1.000000 computed x backward error 0.25 forward error 0.71 no error is raised growth 10¹⁷
precision-ladder
κ = 1.5·10⁷ · the exact answer is (1, 2, …, 6) 12 bits 3.3 16 bits 0.86 20 bits 4.3 24 bits 0.093 30 bits 7.6·10⁻⁴ 36 bits 6.2·10⁻⁶ 43 bits 2·10⁻⁷ 53 bits 4.5·10⁻¹¹ dashed: κ · unit roundoff one matrix, eight arithmetics measured against a known answer
projection-geometry
everything Ax can reach b = (1.1, 0.4, 1.5) Ax, the closest reachable point r = b − Ax ‖Aᵀr‖ / (‖A‖‖r‖) 1.7·10⁻¹⁶ ‖b‖² − ‖Ax‖² − ‖r‖² 1.3·10⁻¹⁵ ‖r‖ 1.3 200 random nearby points of the plane were tried; none is closer. a 3×2 system, Householder QR perpendicularity is checked
qq-printed
A = H8 · κ = 1.5·10¹⁰ · both factorisations reconstruct A to 6·10⁻¹⁷ the diagonal is 1 in both — every column is a unit vector either way 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0.002 -0.002 0 0 0 0 0 1.000 0.125 -0.133 0 0 0 0 0.002 0.125 1.000 -1.000 0 0 0 0 -0.002 -0.133 -1.000 1.000 classical Gram–Schmidt 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 0 0 0 0 0 0 0 0 1.000 Householder classical ‖QᵀQ − I‖ 1.4 Householder ‖QᵀQ − I‖ 1.4·10⁻¹⁵ largest off-diagonal 1 against 3.1·10⁻¹⁶ length is not angle
rank-decision
1 2 3 4 5 6 7 8 9 10 10⁻¹⁸ 10⁻¹⁵ 10⁻¹² 10⁻⁹ 10⁻⁶ 10⁻³ 1 index singular value cutoff, σ₁ · 10⁻¹⁰ numerical rank 10 gap 8.2·10⁶ an opinion true rank 4 10×10, built with 4 nonzero values rank is a decision
representable-line
[½, 1) [1, 2) [2, 4) 0.5 1 2 4 gap 0.125 gap 0.25 — twice as wide 8 values per octave spacing doubles at each power of two
residual-vs-error
1 10² 10⁴ 10⁶ 10⁸ 10¹⁰ 10¹² 10¹⁴ 10⁻¹⁷ 10⁻¹⁴ 10⁻¹¹ 10⁻⁸ 10⁻⁵ 10⁻² 10¹ condition number κ(A) relative error forward error backward error predicted: κ · u 8×8, 20 seeds per κ; dashed is the worst the problem worsens, not the method
summation-error
10¹ 10² 10³ 10⁴ 10⁵ 10⁶ 10⁻⁹ 10⁻⁷ 10⁻⁵ 10⁻³ 10⁻¹ number of terms added relative error against the exact sum in order in a tree compensated binary32 · terms are 1/i compensated: 3·10⁻⁸
ulp-staircase
1 10³ 10⁶ 10⁹ 10¹² 10¹⁵ 10¹⁸ 10⁻¹⁸ 10⁻¹⁵ 10⁻¹² 10⁻⁹ 10⁻⁶ 10⁻³ 1 10³ magnitude of the number gap to the next representable number a gap of one whole unit at 1: 2.2·10⁻¹⁶ at a million: 1.2·10⁻¹⁰ gap reaches 1: 1 53-bit significand the gap follows the magnitude
wilkinson-growth
1 · · · · · 1 -1 1 · · · · 1 -1 -1 1 · · · 1 -1 -1 -1 1 · · 1 -1 -1 -1 -1 1 · 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 A 1 · · · · · 1 · 1 · · · · 2 · · 1 · · · 4 · · · 1 · · 8 · · · · 1 · 16 · · · · · 1 32 · · · · · · 64 U ‖PA − LU‖/‖A‖ 0 growth factor 64 the 2ⁿ⁻¹ bound 64 Row interchanges performed: 0. Partial pivoting had nothing to choose. every entry is 0, 1 or −1 the bound is attained here