Previous Next

Packed Block Bidiagonal Matrix Symmetric Multiply

Syntax
[rs] = ckbs_blkbidiag_symm_mul(BdiaBoffdiaDdia)

Purpose
This routine takes a packed block bidiagonal matrix and a packed block diagonal matrix (optional), and returns the symmetric product matrix (as packed tridiagonal matrix):  \[
      W = B * D * B^T
\] 
The actual output consists of a packed representation of the diagonal and off-diagonal blocks of the matrix  W .

Bdia
The argument Bdia is an  m \times n \times N array. For  k = 1 , \ldots , N we define  B_k \in \B{R}^{m \times n} by  \[
      B_k = Bdia(:, :, k)
\] 


Boffdia
The argument Boffdia is an  m \times n \times N array. For  k = 2 , \ldots , N we define  C_k \in \B{R}^{m \times n} by  \[
      C_k = Boffdia(:, :, k)
\] 


Ddia
The argument Ddia is an  n \times n \times N array. For  k = 1 , \ldots , N we define  D_k \in \B{R}^{n \times n} by  \[
      D_k = Ddia(:, :, k)
\] 


B
The matrix  B is defined by  \[
B
=
\left( \begin{array}{cccc}
      B_1 & 0      & 0      &           \\
      C_2^T   & B_2    & \ddots      & 0         \\
      0   & \ddots      & \ddots & 0         \\
          & 0      & C_N^T      & B_N
\end{array} \right)
\] 


D
The matrix  D is defined by  \[
D
=
\left( \begin{array}{cccc}
      D_1 & 0      & 0      &           \\
      0   & D_2    & \ddots      & 0         \\
      0   & \ddots      & \ddots & 0         \\
          & 0      & 0      & D_N
\end{array} \right)
\] 


r
The result r is an  n \times n \times N array. For  k = 1 , \ldots , N we define  r_k \in \B{R}^{n \times n} by  \[
      r_k = r(:, :, k)
\] 
%

s
The result s is an  m \times n \times N array. For  k = 2 , \ldots , N we define  r_k \in \B{R}^{m \times n} by  \[
      s_k = s(:, :, k)
\] 


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