SourcePro® API Reference Guide

 
List of all members | Public Member Functions | Related Functions
RWTriDiagFact< TypeT > Class Template Reference

Encapsulates factorizations of tridiagonal matrices. More...

#include <rw/lapack/trdgfct.h>

Public Member Functions

 RWTriDiagFact ()
 
 RWTriDiagFact (const RWTriDiagFact< TypeT > &rhs)
 
 RWTriDiagFact (const RWTriDiagMat< TypeT > &A, bool estimateCondition=true)
 
 ~RWTriDiagFact ()
 
int cols () const
 
rw_numeric_traits< TypeT >::norm_type condition () const
 
TypeT determinant () const
 
void factor (const RWTriDiagMat< TypeT > &A, bool estimateCondition=true)
 
bool fail () const
 
bool good () const
 
bool isSingular () const
 
int rows () const
 
RWMathVec< TypeT > solve (const RWMathVec< TypeT > &b) const
 
RWGenMat< TypeT > solve (const RWGenMat< TypeT > &b) const
 

Related Functions

(Note that these are not member functions.)

double condition (const RWTriDiagFact< double > &A)
 
float condition (const RWTriDiagFact< float > &A)
 
double condition (const RWTriDiagFact< DComplex > &A)
 
template<class TypeT >
TypeT determinant (const RWTriDiagFact< TypeT > &A)
 
template<class TypeT >
RWMathVec< TypeT > solve (const RWTriDiagFact< TypeT > &A, const RWMathVec< TypeT > &b)
 
template<class TypeT >
RWGenMat< TypeT > solve (const RWTriDiagFact< TypeT > &A, const RWGenMat< TypeT > &b)
 

Detailed Description

template<class TypeT>
class RWTriDiagFact< TypeT >

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 RWTriDiagFact encapsulates factorizations of tridiagonal matrices. Provided the matrix being factored is nonsingular, the resulting factorization can always be used to solve a system of equations.

Synopsis
#include <rw/lapack/trdgfct.h>
RWTriDiagFact<double> LU6(F); // F is a RWTriDiagMat<double>
Example
#include <rw/lapack/trdgfct.h>
#include <iostream>
int main()
{
// Read in a matrix and a right-hand side and
// print the solution
std::cin >> A >> b;
if (LU.good()) {
std::cout << "solution is " << solve(LU,b) << std::endl;
} else {
std::cout << "Could not factor A, perhaps it is singular"
<< std::endl;
}
return 0;
}

Constructor & Destructor Documentation

template<class TypeT>
RWTriDiagFact< TypeT >::RWTriDiagFact ( )

Default constructor. Builds a factorization of a 0 x 0 matrix. You use the member function factor() to fill in the factorization.

template<class TypeT>
RWTriDiagFact< TypeT >::RWTriDiagFact ( const RWTriDiagFact< TypeT > &  rhs)

Copy constructor.

template<class TypeT>
RWTriDiagFact< TypeT >::RWTriDiagFact ( const RWTriDiagMat< 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.

template<class TypeT>
RWTriDiagFact< TypeT >::~RWTriDiagFact ( )

Destructor.

Member Function Documentation

template<class TypeT>
int RWTriDiagFact< TypeT >::cols ( ) const
inline

Returns the number of columns in the matrix represented by this factorization.

template<class TypeT>
rw_numeric_traits<TypeT>::norm_type RWTriDiagFact< 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 RWTriDiagFact() or factor() to false, calling condition() generates an exception.

template<class TypeT>
TypeT RWTriDiagFact< TypeT >::determinant ( ) const

Calculates the determinant of the matrix represented by this factorization.

template<class TypeT>
void RWTriDiagFact< TypeT >::factor ( const RWTriDiagMat< 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.

template<class TypeT>
bool RWTriDiagFact< TypeT >::fail ( ) const

Returns false if the factorization is successfully constructed. If this function returns true, attempting to use this factorization to solve a system of equations results in an exception being thrown.

template<class TypeT>
bool RWTriDiagFact< TypeT >::good ( ) const
inline

Returns true if the factorization is successfully constructed. If this function returns false, attempting to use this factorization to solve a system of equations results in an exception being thrown.

template<class TypeT>
bool RWTriDiagFact< 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.

template<class TypeT>
int RWTriDiagFact< TypeT >::rows ( ) const
inline

Returns the number of rows in the matrix represented by this factorization.

template<class TypeT>
RWMathVec<TypeT> RWTriDiagFact< TypeT >::solve ( const RWMathVec< TypeT > &  b) const

Solves a system of equations. Returns the vector x, which satisfies \(Ax = b\), where A is the matrix represented by this factorization. It is wise to call good() or fail() to make sure that the factorization was successfully constructed.

template<class TypeT>
RWGenMat<TypeT> RWTriDiagFact< TypeT >::solve ( const RWGenMat< TypeT > &  b) const

Solves a system of equations. Returns the matrix x, which satisfies \(Ax = b\), where A is the matrix represented by this factorization. It is wise to call good() or fail() to make sure that the factorization was successfully constructed.

Friends And Related Function Documentation

template<class TypeT>
double condition ( const RWTriDiagFact< double > &  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 RWTriDiagFact() constructor or the factor() member function to false, calling condition() generates an exception.

template<class TypeT>
float condition ( const RWTriDiagFact< float > &  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 RWTriDiagFact() constructor or the factor() member function to false, calling condition() generates an exception.

template<class TypeT>
double condition ( const RWTriDiagFact< DComplex > &  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 RWTriDiagFact() constructor or the factor() member function to false, calling condition() generates an exception.

template<class TypeT >
TypeT determinant ( const RWTriDiagFact< TypeT > &  A)
related

Calculates the determinant of the matrix represented by the factorization A.

template<class TypeT >
RWMathVec< TypeT > solve ( const RWTriDiagFact< TypeT > &  A,
const RWMathVec< TypeT > &  b 
)
related

Solves a system of equations. Returns the vector x, which satisfies \(Ax = b\), where A is the matrix represented by the factorization. It is wise to call the good() or fail() member functions to make sure that the factorization was successfully constructed.

template<class TypeT >
RWGenMat< TypeT > solve ( const RWTriDiagFact< TypeT > &  A,
const RWGenMat< TypeT > &  b 
)
related

Solves a system of equations. Returns the matrix x, which satisfies \(Ax = b\), where A is the matrix represented by the factorization. It is wise to call the good() or fail() member functions to make sure that the factorization was successfully constructed.

Copyright © 2023 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.