GenericDecompositionOperations<T>.BandCholeskyDecompose Method

Definition

Namespace: Extreme.Mathematics.LinearAlgebra.Implementation
Assembly: Extreme.Numerics.Generic (in Extreme.Numerics.Generic.dll) Version: 8.1.4

Overload List

BandCholeskyDecompose(MatrixTriangle, Int32, Int32, Array2D<T>, Int32)

Computes the Cholesky factorization of a real symmetric positive definite band matrix A.

BandCholeskyDecompose(MatrixTriangle, Int32, Int32, Array2D<Complex<T>>, Int32)

Computes the Cholesky factorization of a complex Hermitian positive definite band matrix A.

BandCholeskyDecompose(MatrixTriangle, Int32, Int32, Array2D<T>, Int32)

Computes the Cholesky factorization of a real symmetric positive definite band matrix A.

C#
public override void BandCholeskyDecompose(
	MatrixTriangle storedTriangle,
	int n,
	int kd,
	Array2D<T> ab,
	out int info
)

Parameters

storedTriangle  MatrixTriangle
            = 'U':  Upper triangle of A is stored;
            = 'L':  Lower triangle of A is stored.
            
n  Int32
            The order of the matrix A.  N >= 0.
            
kd  Int32
            The number of superdiagonals of the matrix A if UPLO = 'U',
            or the number of subdiagonals if UPLO = 'L'.  KD >= 0.
            
ab  Array2D<T>
            Dimension (LDAB,N)
            On entry, the upper or lower triangle of the symmetric band
            matrix A, stored in the first KD+1 rows of the array.  The
            j-th column of A is stored in the j-th column of the array AB
            as follows:
            if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
            if UPLO = 'L', AB(1+i-j,j)    = A(i,j) for j<=i<=min(n,j+kd).
            On exit, if info = 0, the triangular factor U or L from the
            Cholesky factorization A = UT*U or A = L*LT of the band
            matrix A, in the same storage format as A.
            
            The leading dimension of the array AB.  LDAB >= KD+1.
            
info  Int32
info is INTEGER
            = 0:  successful exit
            < 0:  if info = -i, the i-th argument had an illegal value
            > 0:  if info = i, the leading minor of order i is not
                  positive definite, and the factorization could not be
                  completed.
            

Remarks

            The factorization has the form
               A = UT * U,  if UPLO = 'U', or
               A = L  * LT,  if UPLO = 'L',
            where U is an upper triangular matrix and L is lower triangular.
            

Further Details:

            The band storage scheme is illustrated by the following example, when
            N = 6, KD = 2, and UPLO = 'U':
            On entry:                       On exit:
                *    *   a13  a24  a35  a46      *    *   u13  u24  u35  u46
                *   a12  a23  a34  a45  a56      *   u12  u23  u34  u45  u56
               a11  a22  a33  a44  a55  a66     u11  u22  u33  u44  u55  u66
            Similarly, if UPLO = 'L' the format of A is as follows:
            On entry:                       On exit:
               a11  a22  a33  a44  a55  a66     l11  l22  l33  l44  l55  l66
               a21  a32  a43  a54  a65   *      l21  l32  l43  l54  l65   *
               a31  a42  a53  a64   *    *      l31  l42  l53  l64   *    *
            Array elements marked * are not used by the routine.
            

This method corresponds to the LAPACK routine DPBTRF.

BandCholeskyDecompose(MatrixTriangle, Int32, Int32, Array2D<Complex<T>>, Int32)

Computes the Cholesky factorization of a complex Hermitian positive definite band matrix A.

C#
public override void BandCholeskyDecompose(
	MatrixTriangle uplo,
	int n,
	int kd,
	Array2D<Complex<T>> ab,
	out int info
)

Parameters

uplo  MatrixTriangle
            = 'U':  Upper triangle of A is stored;
            = 'L':  Lower triangle of A is stored.
            
n  Int32
            The order of the matrix A.  N >= 0.
            
kd  Int32
            The number of superdiagonals of the matrix A if UPLO = 'U',
            or the number of subdiagonals if UPLO = 'L'.  KD >= 0.
            
ab  Array2D<Complex<T>>
            AB is COMPLEX*16 array, dimension (LDAB,N)
            On entry, the upper or lower triangle of the Hermitian band
            matrix A, stored in the first KD+1 rows of the array.  The
            j-th column of A is stored in the j-th column of the array AB
            as follows:
            if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
            if UPLO = 'L', AB(1+i-j,j)    = A(i,j) for j<=i<=min(n,j+kd).
            On exit, if info = 0, the triangular factor U or L from the
            Cholesky factorization A = UH*U or A = L*LH of the band
            matrix A, in the same storage format as A.
            
            The leading dimension of the array AB.  LDAB >= KD+1.
            
info  Int32
info is INTEGER
            = 0:  successful exit
            < 0:  if info = -i, the i-th argument had an illegal value
            > 0:  if info = i, the leading minor of order i is not
                  positive definite, and the factorization could not be
                  completed.
            

Remarks

            The factorization has the form
               A = UH * U,  if UPLO = 'U', or
               A = L  * LH,  if UPLO = 'L',
            where U is an upper triangular matrix and L is lower triangular.
            

Further Details:

            The band storage scheme is illustrated by the following example, when
            N = 6, KD = 2, and UPLO = 'U':
            On entry:                       On exit:
                *    *   a13  a24  a35  a46      *    *   u13  u24  u35  u46
                *   a12  a23  a34  a45  a56      *   u12  u23  u34  u45  u56
               a11  a22  a33  a44  a55  a66     u11  u22  u33  u44  u55  u66
            Similarly, if UPLO = 'L' the format of A is as follows:
            On entry:                       On exit:
               a11  a22  a33  a44  a55  a66     l11  l22  l33  l44  l55  l66
               a21  a32  a43  a54  a65   *      l21  l32  l43  l54  l65   *
               a31  a42  a53  a64   *    *      l31  l42  l53  l64   *    *
            Array elements marked * are not used by the routine.
            

See Also