DecompositionOperations<TReal, TComplex>.LUInvert Method

Definition

Namespace: Numerics.NET.LinearAlgebra.Implementation
Assembly: Numerics.NET (in Numerics.NET.dll) Version: 9.0.3

Overload List

LUInvert(Int32, Array2D<TReal>, Array1D<Int32>, Int32) Computes the inverse of a matrix using the LU decomposition computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
LUInvert(Int32, Array2D<TComplex>, Array1D<Int32>, Int32) ZGETRI computes the inverse of a matrix using the LU decomposition computed by ZGETRF. This method inverts U and then computes inv(A) by solving the system inv(A)*L = inv(U) for inv(A). Arguments ========= N (input) INTEGER The elementOrder of the matrix A. N >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the factors L and U from the decomposition A = P*L*U as computed by ZGETRF. On exit, if INFO = 0, the inverse of the original matrix A. LDA (input) INTEGER The leading dimension of the array A. LDA >= Max(1,N). IPIV (input) INTEGER array, dimension (N) The pivot indexes from ZGETRF; for 1< =i< =N, row i of the matrix was interchanged with row IPIVi. WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) On exit, if INFO =0, then WORK(1) returns the optimal LWORK. LWORK (input) INTEGER The dimension of the array WORK. LWORK >= Max(1,N). For optimal performance LWORK >= N*NB, where NB is the optimal blocksize returned by ILAENV. If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. INFO (output) INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, U(i,i) is exactly zero; the matrix is singular and its inverse could not be computed.
LUInvert(Int32, Span2D<TReal>, Span<Int32>, Int32) Computes the inverse of a matrix using the LU decomposition computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
LUInvert(Int32, Span2D<TComplex>, Span<Int32>, Int32) ZGETRI computes the inverse of a matrix using the LU decomposition computed by ZGETRF. This method inverts U and then computes inv(A) by solving the system inv(A)*L = inv(U) for inv(A). Arguments ========= N (input) INTEGER The elementOrder of the matrix A. N >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the factors L and U from the decomposition A = P*L*U as computed by ZGETRF. On exit, if INFO = 0, the inverse of the original matrix A. LDA (input) INTEGER The leading dimension of the array A. LDA >= Max(1,N). IPIV (input) INTEGER array, dimension (N) The pivot indexes from ZGETRF; for 1< =i< =N, row i of the matrix was interchanged with row IPIVi. WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) On exit, if INFO =0, then WORK(1) returns the optimal LWORK. LWORK (input) INTEGER The dimension of the array WORK. LWORK >= Max(1,N). For optimal performance LWORK >= N*NB, where NB is the optimal blocksize returned by ILAENV. If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. INFO (output) INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, U(i,i) is exactly zero; the matrix is singular and its inverse could not be computed.
LUInvert(Int32, Span<TReal>, Int32, Span<Int32>, Int32) Computes the inverse of a matrix using the LU decomposition computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
LUInvert(Int32, Span<TComplex>, Int32, Span<Int32>, Int32) ZGETRI computes the inverse of a matrix using the LU decomposition computed by ZGETRF. This method inverts U and then computes inv(A) by solving the system inv(A)*L = inv(U) for inv(A). Arguments ========= N (input) INTEGER The elementOrder of the matrix A. N >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the factors L and U from the decomposition A = P*L*U as computed by ZGETRF. On exit, if INFO = 0, the inverse of the original matrix A. LDA (input) INTEGER The leading dimension of the array A. LDA >= Max(1,N). IPIV (input) INTEGER array, dimension (N) The pivot indexes from ZGETRF; for 1< =i< =N, row i of the matrix was interchanged with row IPIVi. WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) On exit, if INFO =0, then WORK(1) returns the optimal LWORK. LWORK (input) INTEGER The dimension of the array WORK. LWORK >= Max(1,N). For optimal performance LWORK >= N*NB, where NB is the optimal blocksize returned by ILAENV. If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. INFO (output) INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, U(i,i) is exactly zero; the matrix is singular and its inverse could not be computed.

LUInvert(Int32, Array2D<TReal>, Array1D<Int32>, Int32)

Computes the inverse of a matrix using the LU decomposition computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
C#
public void LUInvert(
	int n,
	Array2D<TReal> a,
	Array1D<int> ipiv,
	out int info
)

Parameters

n  Int32
An integer specifying the number of rows and columns of the matrix a. Must be greater than or equal to zero.
a  Array2D<TReal>
TReal array specifying the n-by-n matrix containing the lower and upper triangular factors as computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
ipiv  Array1D<Int32>
Integer array that contains the pivot indexes computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
info  Int32
Reference to an integer containing a result code. Zero indicates success. Greater than zero indicates U(i,i) is exactly zero. The matrix is singular and its inverse could not be computed.

LUInvert(Int32, Array2D<TComplex>, Array1D<Int32>, Int32)

ZGETRI computes the inverse of a matrix using the LU decomposition computed by ZGETRF. This method inverts U and then computes inv(A) by solving the system inv(A)*L = inv(U) for inv(A). Arguments ========= N (input) INTEGER The elementOrder of the matrix A. N >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the factors L and U from the decomposition A = P*L*U as computed by ZGETRF. On exit, if INFO = 0, the inverse of the original matrix A. LDA (input) INTEGER The leading dimension of the array A. LDA >= Max(1,N). IPIV (input) INTEGER array, dimension (N) The pivot indexes from ZGETRF; for 1< =i< =N, row i of the matrix was interchanged with row IPIVi. WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) On exit, if INFO =0, then WORK(1) returns the optimal LWORK. LWORK (input) INTEGER The dimension of the array WORK. LWORK >= Max(1,N). For optimal performance LWORK >= N*NB, where NB is the optimal blocksize returned by ILAENV. If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. INFO (output) INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, U(i,i) is exactly zero; the matrix is singular and its inverse could not be computed.
C#
public void LUInvert(
	int n,
	Array2D<TComplex> a,
	Array1D<int> ipiv,
	out int info
)

Parameters

n  Int32
 
a  Array2D<TComplex>
 
ipiv  Array1D<Int32>
 
info  Int32
 

LUInvert(Int32, Span2D<TReal>, Span<Int32>, Int32)

Computes the inverse of a matrix using the LU decomposition computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
C#
public void LUInvert(
	int n,
	Span2D<TReal> a,
	Span<int> ipiv,
	out int info
)

Parameters

n  Int32
An integer specifying the number of rows and columns of the matrix a. Must be greater than or equal to zero.
a  Span2D<TReal>
TReal array specifying the n-by-n matrix containing the lower and upper triangular factors as computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
ipiv  Span<Int32>
Integer array that contains the pivot indexes computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
info  Int32
Reference to an integer containing a result code. Zero indicates success. Greater than zero indicates U(i,i) is exactly zero. The matrix is singular and its inverse could not be computed.

LUInvert(Int32, Span2D<TComplex>, Span<Int32>, Int32)

ZGETRI computes the inverse of a matrix using the LU decomposition computed by ZGETRF. This method inverts U and then computes inv(A) by solving the system inv(A)*L = inv(U) for inv(A). Arguments ========= N (input) INTEGER The elementOrder of the matrix A. N >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the factors L and U from the decomposition A = P*L*U as computed by ZGETRF. On exit, if INFO = 0, the inverse of the original matrix A. LDA (input) INTEGER The leading dimension of the array A. LDA >= Max(1,N). IPIV (input) INTEGER array, dimension (N) The pivot indexes from ZGETRF; for 1< =i< =N, row i of the matrix was interchanged with row IPIVi. WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) On exit, if INFO =0, then WORK(1) returns the optimal LWORK. LWORK (input) INTEGER The dimension of the array WORK. LWORK >= Max(1,N). For optimal performance LWORK >= N*NB, where NB is the optimal blocksize returned by ILAENV. If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. INFO (output) INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, U(i,i) is exactly zero; the matrix is singular and its inverse could not be computed.
C#
public void LUInvert(
	int n,
	Span2D<TComplex> a,
	Span<int> ipiv,
	out int info
)

Parameters

n  Int32
 
a  Span2D<TComplex>
 
ipiv  Span<Int32>
 
info  Int32
 

LUInvert(Int32, Span<TReal>, Int32, Span<Int32>, Int32)

Computes the inverse of a matrix using the LU decomposition computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
C#
public abstract void LUInvert(
	int n,
	Span<TReal> a,
	int lda,
	Span<int> ipiv,
	out int info
)

Parameters

n  Int32
An integer specifying the number of rows and columns of the matrix a. Must be greater than or equal to zero.
a  Span<TReal>
TReal array specifying the n-by-n matrix containing the lower and upper triangular factors as computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
lda  Int32
The leading dimension of the matrix a.
ipiv  Span<Int32>
Integer array that contains the pivot indexes computed by LUDecompose(Int32, Int32, Span<TReal>, Int32, Span<Int32>, Int32).
info  Int32
Reference to an integer containing a result code. Zero indicates success. Greater than zero indicates U(i,i) is exactly zero. The matrix is singular and its inverse could not be computed.

LUInvert(Int32, Span<TComplex>, Int32, Span<Int32>, Int32)

ZGETRI computes the inverse of a matrix using the LU decomposition computed by ZGETRF. This method inverts U and then computes inv(A) by solving the system inv(A)*L = inv(U) for inv(A). Arguments ========= N (input) INTEGER The elementOrder of the matrix A. N >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the factors L and U from the decomposition A = P*L*U as computed by ZGETRF. On exit, if INFO = 0, the inverse of the original matrix A. LDA (input) INTEGER The leading dimension of the array A. LDA >= Max(1,N). IPIV (input) INTEGER array, dimension (N) The pivot indexes from ZGETRF; for 1< =i< =N, row i of the matrix was interchanged with row IPIVi. WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) On exit, if INFO =0, then WORK(1) returns the optimal LWORK. LWORK (input) INTEGER The dimension of the array WORK. LWORK >= Max(1,N). For optimal performance LWORK >= N*NB, where NB is the optimal blocksize returned by ILAENV. If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. INFO (output) INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, U(i,i) is exactly zero; the matrix is singular and its inverse could not be computed.
C#
public abstract void LUInvert(
	int n,
	Span<TComplex> a,
	int lda,
	Span<int> ipiv,
	out int info
)

Parameters

n  Int32
 
a  Span<TComplex>
 
lda  Int32
 
ipiv  Span<Int32>
 
info  Int32
 

See Also