Previous Next

Symmetric Block Tridiagonal Algorithm (Backward version)

Syntax
[elambda] = ckbs_tridiag_solve_b(bcr)

Purpose
This routine solves the following linear system of equations for  e :  \[
      A * e = r
\] 
where the symmetric block tridiagonal matrix  A is defined by  \[
A =
\left( \begin{array}{ccccc}
b_1    & c_2^\R{T} & 0          & \cdots & 0      \\
c_2    & b_2       & c_3^\R{T}  &        & \vdots \\
\vdots &           & \ddots     &        &        \\
0      & \cdots    &            & b_N    & c_N
\end{array} \right)
\] 
The routine ckbs_tridiag_solve solves the same problem. The difference is that this routine runs the reduction starting at the last block rather than the first block of the matrix, which is more stable for this application.

b
The argument b is a three dimensional array, for  k = 1 , \ldots , N  \[
      b_k = b(:,:,k)
\]
and b has size  n \times n \times N .

c
The argument c is a three dimensional array, for  k = 2 , \ldots , N  \[
      c_k = c(:,:,k)
\]
and c has size  n \times n \times N .

r
The argument r is an  (n * N) \times m matrix.

e
The result e is an  (n * N) \times m matrix.

lambda
The result lambda is a scalar equal to the logarithm of the determinant of  A .

Example
The file tridiag_solve_b_ok.m contains an example and test of ckbs_tridiag_solve_b. It returns true if ckbs_tridiag_solve_b passes the test and false otherwise.
Input File: src/ckbs_tridiag_solve_b.m