Samuelson–Berkowitz algorithm

From HandWiki

In mathematics, the Samuelson–Berkowitz algorithm efficiently computes the characteristic polynomial of an n×n matrix whose entries may be elements of any unital commutative ring. Unlike the Faddeev–LeVerrier algorithm, it performs no divisions, so may be applied to a wider range of algebraic structures.

Description of the algorithm

The Samuelson–Berkowitz algorithm applied to a matrix A produces a vector whose entries are the coefficient of the characteristic polynomial of A. It computes this coefficients vector recursively as the product of a Toeplitz matrix and the coefficients vector an (n1)×(n1) principal submatrix.

Let A0 be an n×n matrix partitioned so that

A0=[a1,1RCA1]

The first principal submatrix of A0 is the (n1)×(n1) matrix A1. Associate with A0 the (n+1)×n Toeplitz matrix T0 defined by

T0=[1a1,1]

if A0 is 1×1,

T0=[10a1,11RCa1,1]

if A0 is 2×2, and in general

T0=[1000a1,1100RCa1,110RA1CRCa1,11RA12CRA1CRCa1,1]

That is, all super diagonals of T0 consist of zeros, the main diagonal consists of ones, the first subdiagonal consists of a1,1 and the kth subdiagonal consists of RA1k2C.

The algorithm is then applied recursively to A1, producing the Toeplitz matrix T1 times the characteristic polynomial of A2, etc. Finally, the characteristic polynomial of the 1×1 matrix An1 is simply Tn1. The Samuelson–Berkowitz algorithm then states that the vector v defined by

v=T0T1T2Tn1

contains the coefficients of the characteristic polynomial of A0.

Because each of the Ti may be computed independently, the algorithm is highly parallelizable.

References