1.1 Inverse Cholesky Factor of a positive definite Hermitian symmetric Toeplitz matrix using Durbin recursions

Let 𝑻n×n be a positive-definite Hermitian symmetric Toeplitz matrix defined with elements tij=rij for a set of scalars rn+1,,r0,,rn1, where rt=rt. Without loss of generality, assume r0=1.

We have the Cholesky factor 𝑹 of the matrix 𝑻 such that 𝑹H𝑹=𝑻. The inverse Cholesky factor is then given by 𝑹1. A closely related decomposition known as the LDL decomposition is given as follows: 𝚲=diag(𝑹), 𝑳=𝑹H𝚲1, and therefore, 𝑻=𝑳𝚲2𝑳H=𝑳𝑫𝑳H. Matrix 𝑳 has ones along the principal diagonal. Let 𝚺=𝑳𝑫.

We have 𝑻𝑳H=𝚺, where 𝑳H is the Hermitian transpose of the inverse with ones along the diagonal. As 𝚺 is lower triangular, we can solve for the strictly upper triangular parts of 𝑳H as the R.H.S. is known to be zero.

For the k-th column of 𝑳H we have the first k1 elements 𝒛k1, upon simplification, as:

𝑻k1𝒛k1=[rk+1r1]

For Hermitian symmetric Toeplitz matrix 𝑻 we have 𝑻=𝑬n𝑻𝑬n, where 𝑻 is complex conjugate of the matrix and 𝑬n is the n×n exchange matrix. Using this property, and setting 𝒚k1=𝑬k𝒛k1 we have:

𝑻k1𝒚k1=[r1rk+1]

,

which may be solved efficiently using the Durbin iterations [7]. The algorithm for finding 𝑾=𝑹1=[wi,j] is given as follows:

Algorithm 1 Algorithm for finding 𝑾.
1:y1=r1;α=r1;𝑾=𝑰n
2:β=1|α|2
3:w1,2=y1
4:𝒘:,2=𝒘:,2β
5:for k=1:n2 do
6:     α=(rk+1+1β𝒓k:1:1H𝒚1:k)
7:     𝒚1:k=𝒚1:k+α𝒚k:1:1
8:     yk+1=α
9:     β=(1|α|2)β
10:     𝒘1:k+1,k+2=𝒚k+1:1:1
11:     𝒘:,k+2=𝒘:,k+2β
12:end for

The algorithm requires 2n2 flops [7, Algorithm 4.7.1] for the Durbin iterations, n2/2 flops for scaling with 1/β and n inverse square root computations; and may be easily adapted to find 𝑳1 and 𝑫 of the LDL decomposition. A MATLAB reference code is available in [14] as well as reproduced below.

MATLAB Reference Code

function R = invchol_durbin(T)
% R = invchol_durbin(T)
% Finds the inverse of the Cholesky factor of the positive definite
% Hermitian symmetric Toeplitz matrix T (N>=2) using Durbin recursions [1].
%
% Aravindh Krishnamoorthy, aravindh.krishnamoorthy@fau.de, 04-Sep-2015.
% Released under the 2-clause BSD license.
%
% [1] Gene H. Golub, Charles F. Van Loan, Matrix Computations, Third
% Edition, Algorithm 4.7.1 (Durbin).
% Exchange matrix of order k
E = @(k) rot90(eye(k)) ;
% Normalise matrix
ts = T(1,1) ;
T = T/ts ;
t = transpose(T(1,:)) ;
%% Durbin recursions [1]
% Setup variables
N = size(T,1) ;
r = t(2:end) ;
y = zeros(N,1) ;
R = eye(N) ;
% Initial values
y(1) = -conj(r(1)) ;
b = 1 ;
a = -conj(r(1)) ;
% Update 'b'
b = (1-abs(a)^2)*b ;
% Column 2
R(1,2) = conj(y(1)) ;
R(:,2) = R(:,2)/sqrt(b) ;
% Rest of the columns
for k=1:N-2
% Update 'a' and the result
a = -(conj(r(k+1)) + ctranspose(r(k:-1:1))*y(1:k))/b ;
y(1:k) = y(1:k) + a*conj(y(k:-1:1)) ;
y(k+1) = a ;
% Update 'b'
b = (1-abs(a)^2)*b ;
% Write out the result
R(1:k+1,k+2) = E(k+1)*conj(y(1:k+1)) ;
R(:,k+2) = R(:,k+2)/sqrt(b) ;
end
% Scale back the result
R = R/sqrt(ts) ;

Version History

  1. 1.

    First published: 4th Sep. 2015 on aravindhk-math.blogspot.com

  2. 2.

    Modified: 16th Dec. 2023 – Style updates for