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
.
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