Home

JacobiSVD

JacobiSVD refers to a class of Jacobi-rotation based algorithms for computing the singular value decomposition of a real or complex matrix. The method is named after the Jacobi rotation concept and is valued for its numerical stability and accuracy. In the Jacobi SVD, a sequence of two-sided plane rotations is applied to the input matrix in order to annihilate off-diagonal elements, effectively diagonalizing the product A^T A (or A A^T). Through these rotations, orthogonal (or unitary, in the complex case) matrices U and V are accumulated, and the resulting diagonal matrix contains the singular values S, with A approximating U S V^T.

Algorithmically, the Jacobi approach targets the off-diagonal energy of A^T A by performing Givens-like rotations on

JacobiSVD is known for high numerical accuracy, particularly for ill-conditioned matrices, and offers robust backward stability.

In software implementations, JacobiSVD appears as a function or class. For example, MATLAB provides JacobiSVD to

pairs
of
columns
(and
corresponding
rows)
to
drive
off-diagonal
entries
to
zero.
The
process
may
follow
a
cyclic
or
greedy
pivot
strategy
and
is
repeated
in
sweeps
until
convergence
criteria
are
met.
Convergence
is
typically
declared
when
the
sum
of
squares
of
the
off-diagonal
elements
falls
below
a
tolerance
or
a
maximum
number
of
sweeps
is
reached.
The
singular
values
are
the
square
roots
of
the
eigenvalues
of
A^T
A,
and
the
corresponding
right
singular
vectors
form
V;
left
singular
vectors
U
are
obtained
from
A
V
and
S.
Its
computational
cost
is
competitive
for
small
to
medium-sized
matrices
and
is
highly
amenable
to
parallelization.
However,
for
very
large
matrices,
other
SVD
approaches
(such
as
Lanczos-based
or
randomized
methods)
may
offer
faster
performance.
return
U,
S,
and
V
for
real
or
complex
inputs,
while
the
Eigen
C++
library
includes
a
JacobiSVD
class
with
options
for
computing
full
or
thin
U
and
V.