|
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 |