12.3.6. The LR Algorithm¶
During the 1950s, when Alston Householder and his colleagues in the Mathematics Division at Oak Ridge National Laboratory were first learning how to operate, maintain, and program a computer, Eduard Stiefel and his staff were going through the same learning experience at the Institute of Applied Mathematics at ETH Zurich, Switzerland. Stiefel hired Heinz Rutishauser to research numerical methods that could be programmed to run on a computer [GUTKNECHT10].
Rutishauser developed what was called the qd algorithm [1] to find the roots of a particular type of polynomial. He observed that the work of the qd algorithm was the same as factoring a tridiagonal matrix into a product of lower and upper triangular matrices and then forming the product in reverse order. He called the two triangular matrices and . Thus, he proposed the LR algorithm based on the following similarity transform.
The LR algorithm was proposed as a method to find the eigenvalues of a matrix or the roots of a polynomial. Today, we would call his LR factoring the LU decomposition, which is solved with an elimination procedure (LU Decomposition). For numerical stability, LU decomposition requires pivoting, which complicates the algorithm.
Rutishauser’s LR algorithm was the inspirational strategy that led John Francis to the QR algorithm. Although LU decomposition uses elimination instead of orthogonal factoring methods, it still provides a way to find the eigenvalues of some matrices. Consider the following example where a close approximation to the eigenvalues of a positive definite matrix is found in MATLAB’s Command Window with ten iterations of the similarity transformation.
>> A = 5*randn(3);
>> A = A*A';
>> eig(A)
ans =
0.1294
9.9568
44.5828
>> for i=1:10
[L,U] = lu(A);
A = U*L;
end
>> sort(diag(A))
ans =
0.1294
9.9567
44.5829
[1] | Abbreviation qd stands for quotient-difference. |