Quick answer

For i ≥ j, compute L[i,j] from A[i,j] and previously found entries of L in rows i and j.

Formula

  • A = L Lᵀ
  • L[i,i] = sqrt( A[i,i] - sum_{k<i} L[i,k]² )
  • L[i,j] = ( A[i,j] - sum_{k<j} L[i,k] L[j,k] ) / L[j,j] for i > j

Introduction

Every Cholesky hand calculation comes down to two update rules: one for the diagonal and one for entries below it. Open the Cholesky Decomposition Calculator when you want to check arithmetic after you apply the formulas below.

Indices matter. The sums always stop before the current column, and off-diagonal entries divide by L[j,j] that was just computed in column j.

If you are new to the topic, read what is Cholesky decomposition first. When you are ready for numbers, jump to Cholesky decomposition examples for full worked matrices.

What the formulas represent

Matrix multiplication in A = L Lᵀ couples row i of L with row j of L when you form the (i,j) entry of A. Because L is lower triangular, only columns up to min(i,j) contribute.

The diagonal formula subtracts squared magnitudes of already-built entries in row i. That is the same idea as completing the square in one variable at a time.

The off-diagonal formula isolates L[i,j] after subtracting cross-terms from earlier columns. Division by L[j,j] is legal only when that diagonal is nonzero, which SPD theory guarantees in exact arithmetic.

If you transpose the bookkeeping, some references present an upper factor U with A = Uᵀ U. The numeric values differ by transpose, but the workload is the same class of problem.

Rounding can make the inside of a square root slightly negative on nearly singular matrices even when the matrix is theoretically SPD. That is a numerical analysis topic, not a reason to ignore the mathematical requirement.

Memorize the structure first, then practice on 2×2 and 3×3 sizes until the sums feel automatic.

Entry-by-entry updates

  • A = L Lᵀ
  • For each i from 1 to n:
  • L[i,i] = sqrt( A[i,i] - sum_{k=1}^{i-1} L[i,k]² )
  • For j = 1 to i-1:
  • L[i,j] = ( A[i,j] - sum_{k=1}^{j-1} L[i,k] L[j,k] ) / L[j,j]

Process columns left to right. Within column j, compute L[j,j] before any L[i,j] with i > j that needs division by L[j,j].

You only need entries of A on and below the diagonal if you trust symmetry. Many students still copy the full matrix to avoid silent typos.

On exams, write the sum limits explicitly. Partial credit often follows clear indexing even when arithmetic slips.

How to apply the formulas

  1. Set up a blank L grid. Mark zeros above the diagonal so you do not accidentally write there.
  2. Compute column 1. L[1,1] from A[1,1], then L[i,1] for i > 1 using the off-diagonal rule.
  3. Advance column by column. Finish the diagonal in column j before filling rows below it in that column.
  4. Watch the square roots. A negative radicand means the SPD assumption failed for this A.
  5. Reconstruct A. Multiply L Lᵀ to verify.

3×3 formula walkthrough

Let A = [[9, 3, 0], [3, 5, 1], [0, 1, 3]]. Column 1 gives L[1,1] = 3, L[2,1] = 1, L[3,1] = 0.

Column 2: L[2,2] = sqrt(5 - 1) = 2, then L[3,2] = (1 - 0)/2 = 1/2. Column 3: L[3,3] = sqrt(3 - 1/4) = sqrt(11/4).

Assemble L and multiply L Lᵀ. Any mismatch points to a single wrong sum or division, not to a flaw in the method itself.