Algorithm Search⌘K

Proofs: Incomplete Cholesky factorization

These are the human proofs of Incomplete Cholesky factorization, at full length.

Cost of IC(0) and of applying it full

This proof shows: time.worst, space.extra, flops.solve, square_roots.worst.

Let cc bound the number of nonzeros in a row of the lower triangle of AA, so each row of LL has at most cc entries.

Factorization. For row ii and each of its at most c−1c - 1 off-diagonal positions jj, L3 intersects the partial row ii (at most cc entries) with row jj (at most cc entries); iterating over the smaller one with constant time dictionary lookups costs O(c)O(c). L4 is one division. L5 costs O(c)O(c) and L7 one square root. So row ii costs O(c2)O(c^2), and the factorization O(nc2)O(n c^2) time with exactly nn square roots when it succeeds (at most nn in any case).

Storage. The rows of LL hold ff entries; extracting the lower part of row ii takes O(c)O(c) temporary space. So Θ(f)\Theta(f) extra space.

Applying M−1M^{-1}. The forward sweep with LL does one multiplication and one subtraction per off-diagonal entry and one division per row: 2(f−n)+n2(f - n) + n flops. The backward sweep with LTL^T does the same: 2(f−n)+n2(f - n) + n. Total 4f−2n4 f - 2 n flops. ■\blacksquare

IC(0) satisfies the pattern equations and terminates full

This proof shows: correctness, termination.

Exact arithmetic. Notation of the page; write a~ij=(1+αδij)aij\tilde a_{ij} = (1 + \alpha \delta_{ij}) a_{ij}, the entries of A+αdiag⁡(A)A + \alpha \operatorname{diag}(A). Entries of LL outside PP are 00.

Theorem 1 (pattern equations). If the code returns LL, then LL is lower triangular with positive diagonal, lij≠0l_{ij} \ne 0 only for (i,j)∈P(i, j) \in P, and (LLT)ij=a~ij(L L^T)_{ij} = \tilde a_{ij} for all (i,j)∈P(i, j) \in P.

Proof. Rows are built in order and only positions in PP are written, so the pattern claim holds, and lii=d>0l_{ii} = \sqrt d > 0 by L6 and L7. Fix (i,j)∈P(i, j) \in P with j<ij < i. When L3 runs, rows 1,…,i−11, \dots, i - 1 are complete and likl_{ik} for k<jk < j has already been computed (increasing order in L2). So

(LLT)ij=∑k≤jlikljk=∑k<jlikljk+lijljj,(L L^T)_{ij} = \sum_{k \le j} l_{ik} l_{jk} = \sum_{k < j} l_{ik} l_{jk} + l_{ij} l_{jj},

and only kk with (i,k)∈P(i, k) \in P and (j,k)∈P(j, k) \in P contribute to the sum; L3 sums exactly these terms and L4 sets lijljj=aij−∑k<jlikljkl_{ij} l_{jj} = a_{ij} - \sum_{k < j} l_{ik} l_{jk}. So (LLT)ij=aij=a~ij(L L^T)_{ij} = a_{ij} = \tilde a_{ij}. For the diagonal, (LLT)ii=∑j<ilij2+lii2=∑j<ilij2+d=(1+α)aii(L L^T)_{ii} = \sum_{j < i} l_{ij}^2 + l_{ii}^2 = \sum_{j < i} l_{ij}^2 + d = (1 + \alpha) a_{ii} by L5 and L7. By symmetry of LLTL L^T and of AA, the equations hold for the transposed positions too. □\square

Corollary (full pattern). If PP is the whole lower triangle, Theorem 1 gives LLT=A+αdiag⁡(A)L L^T = A + \alpha \operatorname{diag}(A) entrywise, so LL is its Cholesky factor, which is unique among lower triangular factors with positive diagonal.

Lemma 2 (breakdown means a bad pivot). If the code returns BREAKDOWN at row ii, then d=a~ii−∑j<ilij2≤0d = \tilde a_{ii} - \sum_{j < i} l_{ij}^2 \le 0 for the rows already computed. If PP is the whole lower triangle, this happens if and only if A+αdiag⁡(A)A + \alpha \operatorname{diag}(A) is not positive definite.

Proof. The first claim is L5 and L6. For the full pattern, rows 1,…,i−11, \dots, i - 1 form the Cholesky factor Li−1L_{i-1} of the leading block A~i−1\tilde A_{i-1}, and dd is the Schur complement a~ii−a~iTA~i−1−1a~i\tilde a_{ii} - \tilde a_i^T \tilde A_{i-1}^{-1} \tilde a_i, whose sign is the sign of det⁡A~i/det⁡A~i−1\det \tilde A_i / \det \tilde A_{i-1}. By Sylvester's criterion all d>0d > 0 exactly when the matrix is positive definite. □\square

Theorem 3 (termination). Each row performs at most i−1i - 1 executions of L3 and L4, each a finite sum, and one of L5 to L7. So after at most nn rows the code returns LL, or BREAKDOWN at the first row with d≤0d \le 0. ■\blacksquare

Back to Incomplete Cholesky factorization