SourcePro C++ 12.0 |
SourcePro® C++ API Reference Guide |
SourcePro C++ Documentation Home |
Encapsulates factorizations of Hermitian matrices. More...
#include <rw/lapack/hermfct.h>
Public Member Functions | |
RWHermFact () | |
RWHermFact (const RWHermMat< TypeT > &A, bool estimateCondition=true) | |
void | factor (const RWHermMat< TypeT > &A, bool estimateCondition=true) |
bool | good () const |
bool | fail () const |
bool | isSingular () const |
int | rows () const |
int | cols () const |
double | condition () const |
RWMathVec< TypeT > | solve (const RWMathVec< TypeT > &b) const |
RWGenMat< TypeT > | solve (const RWGenMat< TypeT > &b) const |
TypeT | determinant () const |
RWHermMat< TypeT > | inverse () const |
Related Functions | |
(Note that these are not member functions.) | |
template<class TypeT > | |
RWMathVec< TypeT > | solve (const RWHermFact< TypeT > &A, const RWMathVec< TypeT > &b) |
template<class TypeT > | |
RWGenMat< TypeT > | solve (const RWHermFact< TypeT > &A, const RWGenMat< TypeT > &b) |
template<class TypeT > | |
TypeT | determinant (const RWHermFact< TypeT > &A) |
template<class TypeT > | |
RWHermMat< TypeT > | inverse (const RWHermFact< TypeT > &A) |
template<class TypeT > | |
double | condition (const RWHermFact< TypeT > &A) |
A factorization is a representation of a matrix that can be used to efficiently solve systems of equations, and to compute the inverse, determinant, and condition number of a matrix. The class RWHermFact<T> encapsulates factorizations of Hermitian matrices. Provided the matrix being factored is nonsingular, the resulting factorization can always be used to solve a system of equations.
#include <rw/lapack/hermfct.h> RWHermFact<DComplex> LU3(C); // C is a RWHermMat<DComplex>
#include <iostream> #include <rw/lapack/hermmat.h> #include <rw/lapack/hermfct.h> int main() { // Read in a matrix and a right-hand side and // print the solution RWHermMat<DComplex> A; RWMathVec<DComplex> b; std::cin >> A >> b; RWHermFact<DComplex> HF(A); if (HF.good()) { std::cout << "solution is " << solve(HF,b) << std::endl; } else { std::cout << "Could not factor A, perhaps it is singular" << std::endl; } return 0; }
RWHermFact< TypeT >::RWHermFact | ( | ) |
Default constructor. Builds a factorization of a 0 x 0 matrix. You use the member function factor to fill in the factorization.
RWHermFact< TypeT >::RWHermFact | ( | const RWHermMat< TypeT > & | A, | |
bool | estimateCondition = true | |||
) |
Constructs a factorization of the matrix A. This factorization can be used to solve systems of equations, and to calculate inverses and determinants. If the parameter estimateCondition is true
, you can use the function condition() to obtain an estimate of the condition number of the matrix. Setting estimateCondition to false
can save some computation if the condition number is not needed.
int RWHermFact< TypeT >::cols | ( | ) | const [inline] |
Returns the number of columns in the matrix represented by this factorization.
double RWHermFact< TypeT >::condition | ( | ) | const |
Calculates the reciprocal condition number of the matrix represented by this factorization. If this number is near 0, the matrix is ill-conditioned and solutions to systems of equations computed using this factorization may not be accurate. If the number is near 1, the matrix is well-conditioned. For the condition number to be computed, the norm of the matrix must be computed at the time the factorization is constructed. If you set the optional boolean parameter in the RWHermFact() or factor() to false
, calling condition() generates an exception.
TypeT RWHermFact< TypeT >::determinant | ( | ) | const |
Calculates the determinant of the matrix represented by this factorization.
void RWHermFact< TypeT >::factor | ( | const RWHermMat< TypeT > & | A, | |
bool | estimateCondition = true | |||
) |
Factors a matrix. Calling factor() replaces the current factorization with the factorization of the matrix A. This is commonly used to initialize a factorization constructed with the default (no arguments) constructor.
bool RWHermFact< TypeT >::fail | ( | ) | const |
Checks whether the factorization is successfully constructed. If fail() returns true
, attempting to use the factorization to solve a system of equations results in an exception being thrown.
bool RWHermFact< TypeT >::good | ( | ) | const [inline] |
Checks whether the factorization is successfully constructed. If good() returns false
, attempting to use the factorization to solve a system of equations results in an exception being thrown.
RWHermMat<TypeT> RWHermFact< TypeT >::inverse | ( | ) | const |
Computes the inverse of the matrix represented by this factorization. Although matrix inverses are very useful in theoretical analysis, they are rarely necessary in implementation. A factorization is nearly always as useful as the actual inverse, and can be constructed at far less cost.
bool RWHermFact< TypeT >::isSingular | ( | ) | const |
Tests if the matrix is singular to within machine precision. If the factorization is a positive definite type and the matrix that was factored is not actually positive definite, then isSingular() may return true
regardless of whether or not the matrix is actually singular.
int RWHermFact< TypeT >::rows | ( | ) | const [inline] |
Returns the number of rows in the matrix represented by this factorization.
RWGenMat<TypeT> RWHermFact< TypeT >::solve | ( | const RWGenMat< TypeT > & | b | ) | const |
RWMathVec<TypeT> RWHermFact< TypeT >::solve | ( | const RWMathVec< TypeT > & | b | ) | const |
double condition | ( | const RWHermFact< TypeT > & | A | ) | [related] |
Calculates the reciprocal condition number of the matrix represented by the factorization A. If this number is near 0, the matrix is ill-conditioned and solutions to systems of equations computed using this factorization may not be accurate. If the number is near 1, the matrix is well-conditioned. For the condition number to be computed, the norm of the matrix must be computed at the time the factorization is constructed. If you set the optional boolean parameter in the RWHermFact() or factor() member function to false
, calling condition() generates an exception.
TypeT determinant | ( | const RWHermFact< TypeT > & | A | ) | [related] |
Calculates the determinant of the matrix represented by the factorization A
RWHermMat< TypeT > inverse | ( | const RWHermFact< TypeT > & | A | ) | [related] |
Computes the inverse of the matrix represented by this factorization. Although matrix inverses are very useful in theoretical analysis, they are rarely necessary in implementation. A factorization is nearly always as useful as the actual inverse, and can be constructed at far less cost.
RWGenMat< TypeT > solve | ( | const RWHermFact< TypeT > & | A, | |
const RWGenMat< TypeT > & | b | |||
) | [related] |
RWMathVec< TypeT > solve | ( | const RWHermFact< TypeT > & | A, | |
const RWMathVec< TypeT > & | b | |||
) | [related] |
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.