LDL factorization for strongly regular hermitian matrices with displacement structure
[L,d] = ldl_gs(F,G,p,q)
[L,d] = ldl_gs(F,G,p,q,k)
sparse strictly lower triangular n x n matrix
n x r matrix
natural numbers, p+q=r
optional parameter: natural number, default value is k=n
n x n matrix
n x 1 vector, entries are +1 or -1
Suppose we want to factorize the hermitian and strongly regular (i.e., all leading minors are non-zero) n x n matrix A. Then, the inputs F, G, p and q should such that the displacement D=A-F*A*F' satisfies D=G*J*G'. Here, J=[eye(p,p) zeros(p,q);zeros(q,p) -eye(q,q)] is the r x r signature matrix. The outputs L and d satisfy A=L*diag(d)*L'.
The optional parameter k can be used for early abortion of the algorithm. If k<n then only the first k columns of L and the first k elements of d are computed.
// create indefinite hermitian Toeplitz matrix T = toeplitz(1:5,1:5)+toeplitz(%i*(0:4),-%i*(0:4)); // compute displacement with respect to the shift matrix F = [spzeros(1,5);speye(4,4) spzeros(4,1)]; D = T-F*T*F'; // compute generator G = [T(:,1) [0;T(2:$,1)]]; J = [1 0;0 -1]; // test generator disp(D-G*J*G'); // compute LDL factorization [L,d] = ldl_gs(F,G,1,1); // test factorization disp(T-L*diag(d)*L'); | ![]() | ![]() |