LORENE
|
Matrix handling. More...
#include <matrice.h>
Public Member Functions | |
Matrice (int size1, int size2) | |
Standard constructor. More... | |
Matrice (const Matrice &) | |
Constructor by copy. More... | |
Matrice (const Tbl &tab) | |
Constructor from a Tbl . More... | |
~Matrice () | |
Destructor. More... | |
int | get_etat () const |
Returns the logical state. More... | |
void | set_etat_qcq () |
Sets the logical state to ETATQCQ (ordinary state). More... | |
void | set_etat_zero () |
Sets the logical state to ETATZERO (zero). More... | |
void | set_etat_nondef () |
Sets the logical state to ETATNONDEF (undefined state). More... | |
void | annule_hard () |
Sets the logical state to ETATQCQ (undefined state). More... | |
int | get_dim (int i) const |
Returns the dimension of the matrix. More... | |
Tbl | get_array () const |
Returns the array of matrix elements. More... | |
void | operator= (double x) |
Sets all the element of *std to x. More... | |
void | operator= (const Matrice &) |
Assignement to another Matrice . More... | |
void | operator= (const Tbl &) |
Assignement to a Tbl . More... | |
double & | set (int j, int i) |
Read/write of a particuliar element. More... | |
double | operator() (int j, int i) const |
Read-only of a particuliar element. More... | |
void | set_band (int up, int low) const |
Calculate the band storage of *std . More... | |
void | set_lu () const |
Calculate the LU-representation, assuming the band-storage has been done. More... | |
Tbl | inverse (const Tbl &sec_membre) const |
Solves the linear system represented by the matrix. More... | |
Tbl | val_propre () const |
Returns the eigenvalues of the matrix, calculated using LAPACK. More... | |
Matrice | vect_propre () const |
Returns the eigenvectors of the matrix, calculated using LAPACK. More... | |
double | determinant () const |
Computes the determinant of the matrix, using LAPACK and the standard decomposition. More... | |
Matrice | transpose () const |
Computes the transpose matrix. More... | |
void | operator+= (const Matrice &) |
Addition of a Matrice to this . More... | |
void | operator+= (double) |
Addition of a double to this . More... | |
void | operator-= (const Matrice &) |
Subtraction of a Matrice to this . More... | |
void | operator-= (double) |
Subtraction of a double to this . More... | |
void | operator*= (double) |
Multiplication of this by a double . More... | |
void | operator/= (double) |
Division of this by a double . More... | |
Private Member Functions | |
void | del_t () |
Logical destructor : dellocates the memory of the various used representations. More... | |
void | del_deriv () |
Deletes the (mutable) derived members: band, lu, permute. More... | |
Private Attributes | |
int | etat |
logical state (ETATZERO, ETATQCQ or ETATNONDEF) More... | |
Tbl * | std |
Pointer on the array of the standard representation. More... | |
int | ku |
Number of upper-diagonals in the band representation. More... | |
int | kl |
Number of lower-diagonals in the band representation. More... | |
Tbl * | band |
Pointer on the array of the band representation of a square matrix. More... | |
Tbl * | lu |
Pointer on the first array of the LU-representation. More... | |
Itbl * | permute |
Pointer on the second array of the LU-representation. More... | |
Friends | |
ostream & | operator<< (ostream &, const Matrice &) |
Display. More... | |
Matrice | operator+ (const Matrice &, const Matrice &) |
Matrice + Matrice More... | |
Matrice | operator- (const Matrice &, const Matrice &) |
Matrice - Matrice More... | |
Matrice | operator* (const Matrice &, double) |
Matrice * double More... | |
Matrice | operator* (double, const Matrice &) |
double * Matrice More... | |
Matrice | operator* (const Matrice &, const Matrice &) |
Matrix product. More... | |
Matrice | operator/ (const Matrice &, double) |
Matrice / double More... | |
Matrix handling.
The matrix can be stored in the usual way in std
, in a band-way by band
and on a LU-decomposition by the two arrays lu
and permute
. All the storage conventions are those af LAPACK which is used to make the LU-decomposition, the inversion and to compute the eigenvalues of the matrix. All those representations are redondant, that means that doing the LU-decomposition, for example, does NOT destroy previously calculated type of storage.
()
Lorene::Matrice::Matrice | ( | int | size1, |
int | size2 | ||
) |
Lorene::Matrice::Matrice | ( | const Matrice & | source | ) |
Lorene::Matrice::Matrice | ( | const Tbl & | tab | ) |
Constructor from a Tbl
.
tab | [input] 2-dimension or 1-dimension array |
If tab
is a 1-dimension Tbl
, a single-column matrix is created, otherwise *std
is simply constructed by a Tbl
copy of tab
.
Definition at line 231 of file matrice.C.
References etat, Lorene::Tbl::get_etat(), Lorene::Tbl::get_ndim(), Lorene::Tbl::get_taille(), kl, and ku.
Lorene::Matrice::~Matrice | ( | ) |
void Lorene::Matrice::annule_hard | ( | ) |
Sets the logical state to ETATQCQ
(undefined state).
And sets all the components to zero
Definition at line 196 of file matrice.C.
References del_deriv(), and etat.
|
private |
|
private |
Logical destructor : dellocates the memory of the various used representations.
Definition at line 159 of file matrice.C.
References del_deriv(), and std.
double Lorene::Matrice::determinant | ( | ) | const |
Computes the determinant of the matrix, using LAPACK and the standard decomposition.
Definition at line 563 of file matrice.C.
References get_dim(), and val_propre().
|
inline |
int Lorene::Matrice::get_dim | ( | int | i | ) | const |
|
inline |
Solves the linear system represented by the matrix.
The calculus assumes the the LU-decomposition has been done and is conducted using LAPACK.
sec_membre | [input] the right-hand side of the system. |
Definition at line 427 of file matrice.C.
References Lorene::Tbl::get_etat(), and lu.
|
inline |
void Lorene::Matrice::operator*= | ( | double | x | ) |
void Lorene::Matrice::operator+= | ( | const Matrice & | a | ) |
void Lorene::Matrice::operator+= | ( | double | x | ) |
void Lorene::Matrice::operator-= | ( | const Matrice & | a | ) |
void Lorene::Matrice::operator-= | ( | double | x | ) |
void Lorene::Matrice::operator/= | ( | double | x | ) |
void Lorene::Matrice::operator= | ( | double | x | ) |
Sets all the element of *std
to x.
The other representations are set to ETATNONDEF
.
Definition at line 268 of file matrice.C.
References set_etat_qcq(), and set_etat_zero().
void Lorene::Matrice::operator= | ( | const Matrice & | source | ) |
void Lorene::Matrice::operator= | ( | const Tbl & | source | ) |
Assignement to a Tbl
.
Definition at line 309 of file matrice.C.
References Lorene::Tbl::etat, and Lorene::Tbl::get_dim().
|
inline |
void Lorene::Matrice::set_band | ( | int | up, |
int | low | ||
) | const |
Calculate the band storage of *std
.
Please note that this function does NOT check if *std
represents a real band-matrix.
up | [input] number of upper-diagonals. |
low | [input] number of lower-diagonals. |
Definition at line 367 of file matrice.C.
References Lorene::Tbl::annule_hard(), band, kl, ku, and Lorene::Tbl::set().
void Lorene::Matrice::set_etat_nondef | ( | ) |
Sets the logical state to ETATNONDEF
(undefined state).
The state of of all the representations is now ETATNONDEF
.
Definition at line 190 of file matrice.C.
References del_deriv(), and etat.
void Lorene::Matrice::set_etat_qcq | ( | ) |
Sets the logical state to ETATQCQ
(ordinary state).
The state of *std
is now ETATQCQ
and the one of all the other representations is ETATNONDEF
.
Definition at line 178 of file matrice.C.
References del_deriv(), and etat.
void Lorene::Matrice::set_etat_zero | ( | ) |
Sets the logical state to ETATZERO
(zero).
The state of *std
is now ETATZERO
and the one of all the other representations is ETATNONDEF
.
Definition at line 184 of file matrice.C.
References del_deriv(), and etat.
void Lorene::Matrice::set_lu | ( | ) | const |
Calculate the LU-representation, assuming the band-storage has been done.
The calculus is done using LAPACK.
Definition at line 395 of file matrice.C.
References band, Lorene::Tbl::get_etat(), lu, permute, and Lorene::Itbl::set_etat_qcq().
Matrice Lorene::Matrice::transpose | ( | ) | const |
Tbl Lorene::Matrice::val_propre | ( | ) | const |
Matrice Lorene::Matrice::vect_propre | ( | ) | const |
|
friend |
|
mutableprivate |
|
private |
|
mutableprivate |
|
mutableprivate |
|
mutableprivate |
|
mutableprivate |
|
private |