International
Tables for
Crystallography
Volume C
Mathematical, physical and chemical tables
Edited by E. Prince

International Tables for Crystallography (2006). Vol. C. ch. 8.1, pp. 685-686

Section 8.1.5.1. Methods for sparse matrices

E. Princea and P. T. Boggsb

a NIST Center for Neutron Research, National Institute of Standards and Technology, Gaithersburg, MD 20899, USA, and bScientific Computing Division, National Institute of Standards and Technology, Gaithersburg, MD 20899, USA

8.1.5.1. Methods for sparse matrices

| top | pdf |

We shall first discuss large, sparse, linear least-squares problems (Heath, 1984[link]), since these techniques form the basis for nonlinear extensions. As we proceed, we shall indicate how the procedures should be modified in order to handle nonlinear problems. Recall that the problem is to find the minimum of the quadratic form [yAx]TW[yAx], where y is a vector of observations, Ax represents a vector of the values of a set of linear model functions that predict the values of y, and W is a positive-definite weight matrix. Again, for convenience, we make the transformation y′ = Uy, where U is the upper triangular Cholesky factor of W, and Z = UA, so that the quadratic form becomes (y′ − Zx)T(y′ − Zx), and the minimum is the solution of the system of normal equations, ZTZx = ZTy′. Even if Z is sparse, it is easy to see that H = ZTZ need not be sparse, because if even one row of Z has all of its elements nonzero, all elements of H will be nonzero. Therefore, the direct use of the normal equations may preclude the efficient exploitation of sparsity. But suppose H is sparse. The next step in solving the normal equations is to compute the Cholesky decomposition of H, and it may turn out that the Cholesky factor is not sparse. For example, if H has the form [{\bi H}=\left (\matrix{ x &x &x &x \cr x &x &0 &0 \cr x &0 &x &0 \cr x &0 &0 &x}\right), ]where x represents a nonzero element, then the Cholesky factor, R, will not be sparse, but if [{\bi H}=\left (\matrix{ x &0 &0 &x \cr 0 &x &0 &x \cr 0 &0 &x &x \cr x &x &x &x}\right), ]then R has the form [{\bi R}=\left (\matrix{ x &0 &0 &x \cr 0 &x &0 &x \cr 0 &0 &x &x \cr 0 &0 &0 &x}\right).]

These examples show that, although the sparsity of R is independent of the row ordering of Z, the column order can have a profound effect. Procedures exist that analyse Z and select a permutation of the columns that reduces the `fill' in R. An algorithm for using the normal equations is then as follows:

  • (1) determine a permutation, P (an orthogonal matrix with one and only one 1 in each row and column, and all other elements zero), that tends to ensure a sparse Cholesky factor;

  • (2) store the elements of R in a sparse format;

  • (3) compute [{\bi Z}^{T}{\bi Z}] and [{\bi Z}^{T}{\bf y}^{\prime }];

  • (4) factor [{\bi P}^{T}({\bi Z}^{T}{\bi Z}){\bi P}] to get R;

  • (5) solve [{\bi R}^{T}{\bf z}={\bi P}^{T}{\bi Z}^{T}{\bf y}^{\prime }];

  • (6) solve [{\bi R}\widetilde {{\bf x}}={\bf z}];

  • (7) set [\widehat {{\bf x}}={\bi P}^{T}\widetilde {{\bf x}}].

This algorithm is fast, and it will produce acceptable accuracy if the condition number of Z is not too large. If extension to the nonlinear case is considered, it should be kept in mind that the first two steps need only be done once, since the sparsity pattern of the Jacobian does not, in general, change from iteration to iteration.

The QR decomposition of matrices that may be kept in memory is most often performed by the use of Householder transformations (see Subsection 8.1.1.1[link]). For sparse matrices, or for matrices that are too large to be held in memory, this technique has several drawbacks. First, the method works by inserting zeros in the columns of Z, working from left to right, but at each step it tends to fill in the columns to the right of the one currently being worked on, so that columns that are initially sparse cease to be so. Second, each Householder transformation needs to be applied to all of the remaining columns, so that the entire matrix must be retained in memory to make efficient use of this procedure.

The alternative procedure for obtaining the QR decomposition by the use of Givens rotations overcomes these problems if the entire upper triangular matrix, R, can be stored in memory. Since this only requires about [p^2/2] locations, it is usually possible. Also, it may happen that R has a sparse representation, so that even fewer locations will be needed. The algorithm based on Givens rotations is as follows:

  • (1) bring in the first p rows;

  • (2) find the QR decomposition of this p × p matrix;

  • (3) for i = p + 1 to n, do

    • (a) bring in row i;

    • (b) eliminate row i using R and at most p Givens rotations.

In order to specify how to use this algorithm to solve the linear least-squares problem, we must also state how to account for Q. We could accumulate Q or save enough information to generate it later, but this usually requires excessive storage. The better alternatives are either to apply the steps of Q to y′ as we proceed or to simply discard the information and solve [{\bi R}^{T}{\bi R}{\bf x} ={\bi Z}^T{\bf y}^{\prime }]. It should be noted that the order of rows can make a significant difference. Suppose [{\bi Z}=\left (\matrix {x &0 &0 &0 &0 \cr 0 &x &0 &0 &0 \cr 0 &0 &x &0 &0 \cr 0 &0 &0 &x &0 \cr 0 &0 &0 &0 &x \cr x &0 &0 &0 &0 \cr x &0 &0 &0 &0 \cr x &0 &0 &0 &0 \cr x &x &x &x &x}\right). ]The work to complete the QR decomposition is of order p2 operations, because each element below the main diagonal can be eliminated by one Givens rotation with no fill, whereas for [{\bi Z}=\left (\matrix{ x &x &x &x &x \cr x &0 &0 &0 &0 \cr x &0 &0 &0 &0 \cr x &0 &0 &0 &0 \cr x &0 &0 &0 &0 \cr 0 &x &0 &0 &0 \cr 0 &0 &x &0 &0 \cr 0 &0 &0 &x &0 \cr 0 &0 &0 &0 &x}\right)]each Givens rotation fills an entire row, and the QR decomposition requires of order np2operations.

References

First citation Heath, M. T. (1984). Numerical methods for large, sparse, linear least squares problems. SIAM J. Sci. Stat. Comput. 5, 497–513. Google Scholar








































to end of page
to top of page