The Schur Complement
A way of shrinking a large block matrix problem down to a smaller one by algebraically eliminating one block first — the linear-algebra version of solving for one variable and substituting it away.
Prerequisites: Matrix Inverses and Linear Systems
Inverting a large matrix is expensive, but often a matrix has natural blocks — say, a joint covariance matrix split into "assets I already hold" and "a new asset I'm considering adding." Recomputing the whole inverse from scratch every time the second block changes wastes the work already done on the first. The Schur complement is the algebraic tool that lets you eliminate one block, solve a smaller problem involving only the other block, and reuse that structure — it's exactly what happens when you compute a conditional variance or conditional distribution from a joint one.
An analogy: solving two equations by substitution
In basic algebra, to solve two equations in two unknowns you often solve one equation for one variable and substitute it into the other, collapsing the problem to a single equation in a single unknown. The Schur complement is the matrix-block generalization of exactly that move: given a block system, solve the first block's equation for its variable in terms of the second, substitute it into the second block's equation, and what's left — a smaller matrix expression — is the Schur complement. It captures "the second block, after accounting for everything explainable by the first."
The math, one symbol at a time
Partition a matrix into blocks:
The Schur complement of in is
In words: take the block, and subtract off the part of it that's "explained" by its interaction with through and — what remains, , is what contributes on its own, once 's influence is removed. This single object controls whether as a whole is invertible (it is, exactly when both and are invertible) and gives a formula for built from smaller pieces, avoiding a full inversion of at once.
Worked example 1: a numeric 2x2 block system
Let , blocked as (top-left ), , . Then , so . The Schur complement is . Since both (invertible, determinant 4) and are nonzero, is guaranteed invertible — established without ever inverting the full matrix.
Worked example 2: conditional variance from a joint covariance matrix
Two assets have joint covariance . The variance of asset 2 conditional on knowing asset 1's value is exactly the Schur complement of the top-left block: . Asset 2's unconditional variance is 9, but once you know asset 1 (which explains part of asset 2's movement through their covariance of 2), the leftover uncertainty drops to 8 — a smaller number, exactly as intuition demands, and the Schur complement is the formula that produces it directly from the joint covariance matrix.
What this means in practice
The Schur complement shows up wherever a problem naturally splits into blocks: conditional distributions of multivariate normals (risk factor models, Kalman filters), efficient updates to a covariance matrix when adding one new asset without refactoring the whole matrix, and the interior-point methods used inside portfolio optimizers. It's the computational shortcut behind the The Sherman-Morrison-Woodbury Formula, which handles low-rank updates to an inverse using the same block-elimination idea.
The Schur complement is what remains of block once block 's influence, transmitted through and , is subtracted out — and it turns a large matrix inversion into two smaller ones.
The Schur complement formula requires to be invertible — if is singular (or numerically close to it, with a poor condition number), the formula breaks down or becomes numerically unstable even though the full matrix might be perfectly well-behaved. Always check that the block you're eliminating is safely invertible before relying on this shortcut, especially with real covariance matrices where near-singular blocks are common.
Related concepts
Practice in interviews
Further reading
- Boyd & Vandenberghe, Convex Optimization, appendix A.5