AlmostBlockDiagonals.AlmostBlockDiagonal
— TypeAlmostBlockDiagonal{T, I <: Integer, V <: AbstractMatrix{T}} <: AbstractMatrix{T}
A matrix with block matrices on the diagonal, but not strictly has their corner against each other.
For example:
A 10 x 10 matrix:
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
can be abstracted as:
julia> AlmostBlockDiagonal([rand(3,4),rand(2,4),rand(2,4),rand(3,4)], [2,2,2,4])
Here, the first argument is the fillers in the almost block diagonal matrix, the second argument is the offset of each adjacent block in the diagonal.
! note The column of block ncol
and row of block nrow
must satisfy: ncol
≥ nrow
.
The implementation mainly comes from the paper: SOLVEBLOK: A Package for Solving Almost Block Diagonal Linear Systems which is originally a FORTRAN program for the solution of an almost block diagonal system by gaussian elimination with scale row pivoting.
AlmostBlockDiagonals.IntermediateAlmostBlockDiagonal
— TypeIntermediate matrix used for the representation of modified almost block diagonals mainly use for pivoting LU factorization.
AlmostBlockDiagonals.IntermediateAlmostBlockDiagonal
— MethodConvert a AlmostBlockDiagonal
matrix to an intermediate form to do the factorization and solving
! note Only for the square almost diagonal matrix of course
AlmostBlockDiagonals.nblocks
— Methodnblocks(A::AlmostBlockDiagonal[, dim])
Return the number of on-diagonal blocks.
AlmostBlockDiagonals.nblocks
— Methodnblocks(A::IntermediateAlmostBlockDiagonal[, dim])