Singular Value Decomposition

polar decomposition from SVD

A complex number splits into magnitude times phase, z = r e^{i theta} — a stretch times a rotation. The polar decomposition is the matrix version of exactly that idea: any square matrix factors as A = Q P, where Q is orthogonal (a pure rotation/reflection) and P is symmetric positive semidefinite (a pure stretch along orthogonal axes). Rotation times stretch, just like a complex number.

The SVD hands you both factors instantly. Starting from A = U Sigma V^T, insert V^T V = I in the middle: A = (U V^T)(V Sigma V^T). The first piece Q = U V^T is a product of orthogonal matrices, hence orthogonal; the second piece P = V Sigma V^T is symmetric with nonnegative eigenvalues (the singular values), hence positive semidefinite. So A = QP falls straight out of the SVD factors.

There are two flavors. The right polar form A = QP applies the stretch first (in input coordinates) then rotates; the left polar form A = P' Q with P' = U Sigma U^T rotates first then stretches in output coordinates. The same Q appears in both. When A is invertible, P is positive definite and Q is uniquely determined; that Q is also the nearest orthogonal matrix to A, which makes the polar decomposition the standard tool for orthogonalizing a slightly-corrupted rotation.

The reading is the whole point: every linear map, however messy, is secretly a stretch along some orthogonal set of axes followed by a rigid rotation. The polar decomposition isolates the deformation (P) from the rigid motion (Q), which is why it shows up in continuum mechanics, computer graphics, and anywhere you need to separate shape change from orientation.

A = U Sigma V^T = (U V^T)(V Sigma V^T) = Q P, Q orthogonal, P = P^T >= 0

Slip V^T V = I into the SVD and it splits into a rotation Q and a positive stretch P.

Q = U V^T is the orthogonal matrix closest to A in the Frobenius norm — the orthogonal Procrustes solution. That is the trick behind snapping a drifted rotation matrix back to being exactly orthogonal.

Also called
A = QProtation-times-stretch