Chapter I
Elimination
Systems of linear equations are among the oldest problems in mathematics. The Chinese Nine Chapters on the Mathematical Art, compiled by about the first century CE, solves them by writing the coefficients in columns on a counting board and subtracting one column from another until the unknowns can be read off one at a time. The method is exactly what is now taught as Gaussian elimination.
The European name comes from least squares. In 1805 Adrien-Marie Legendre published a rule for fitting an orbit to more observations than it has unknowns: minimise the sum of the squared errors. In 1809 Carl Friedrich Gauss gave the rule a basis in probability and a systematic way to solve the resulting equations. He also claimed to have used it since 1795, which Legendre resented, a dispute followed in statistical inference. Through the nineteenth century, surveyors and geodesists solved such systems by hand, sometimes with dozens of unknowns.
Chapter II
Will the Errors Grow?
The first electronic computers made much larger systems possible, and raised a worry. In 1943 the statistician Harold Hotelling estimated that rounding errors in elimination could grow like with the number of unknowns, which would ruin any system of more than a few dozen. In 1947 John von Neumann and Herman Goldstine analysed the process line by line and showed that for symmetric positive definite matrices, a class common in physics and statistics, the errors stay small.
A year later Alan Turing separated the two sources of trouble. A method can be unstable, adding more error than it should. Or the problem itself can be ill-conditioned, so sensitive to its data that no method could do well. He called the measure of that sensitivity the condition number. The distinction became the organising idea of the whole subject: first ask how sensitive the problem is, then ask whether the method adds more error than that. Wilkinson later showed that elimination, with rows swapped to use the largest available pivot, is almost always stable in this sense.
Chapter III
Algorithms for Large Matrices
The 1950s and 1960s produced most of the algorithms still in daily use. In 1952 Magnus Hestenes and Eduard Stiefel published the conjugate gradient method, which never changes the matrix at all and only multiplies vectors by it. That made it ideal, once its value was recognised, for the huge sparse systems that come from partial differential equations. For eigenvalues, John Francis and Vera Kublanovskaya independently found the QR algorithm around 1961. In 1965 Gene Golub and William Kahan showed how to compute the singular value decomposition stably, which made least squares and data compression reliable.
In 1969 Volker Strassen, trying to prove that elimination was the best possible method, found instead that it was not. His paper, three pages long, was titled "Gaussian elimination is not optimal". The algorithms were then collected into shared libraries: EISPACK and LINPACK in the 1970s, and LAPACK from 1992, which still sits beneath most scientific software.
Chapter IV
A Closer Look: Counting and Conditioning
Elimination on equations first uses the first equation to remove the first unknown from the other . That costs about operations. The next stage works on a system one size smaller, and so on. Adding up,
For 1,000 unknowns that is about operations, well under a second on a laptop. For 10,000 unknowns it is , a thousand times more. Cost grows with the cube of the size.
Speed is not the only question. The Hilbert matrix has entries . For three unknowns,
The entries of are at most 1, but its inverse has entries up to 192. Small changes in the data are magnified accordingly. The condition number, the ratio of the largest to the smallest stretching the matrix applies, measures this. Choose the right-hand side so that the exact solution is all ones, solve in standard double precision, which keeps about 16 digits, and look at the largest error in the computed answer:
| Size | Condition number | Largest error |
|---|---|---|
| 4 | ||
| 6 | ||
| 8 | ||
| 10 | ||
| 12 |
This is Turing's rule of thumb in action. A condition number of about costs about of the 16 digits. At size 12 almost nothing is left, and some entries of the answer are off by about a third. The elimination was carried out stably each time. The problem, not the method, lost the digits.
Chapter V
Linear Algebra Everywhere
Linear algebra became the engine room of computing. The finite element models of numerical PDEs end in sparse systems with millions of unknowns, solved by conjugate gradients and its relatives. The steps of continuous optimisation solve a linear system at every iteration. The fastest supercomputers are ranked by how quickly they perform elimination. Behind it all sits a question Strassen opened in 1969 and nobody has closed: how many operations does it really take to multiply two matrices?