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 ti⁢j=ri−j for a set of scalars r−n+1,⋯,r0,⋯,rn−1, where r−t=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 k−1 elements 𝒛k−1, upon simplification, as:

𝑻k−1⁢𝒛k−1=−[rk+1⋮r1]

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 𝒚k−1=𝑬k⁢𝒛k−1∗ we have:

𝑻k−1⁢𝒚k−1=−[r1∗⋮rk+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:n−2 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 2⁢n2 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