SOFTSUSY
4.1
|
Matrix from 1..rows, 1..cols of double values. More...
#include <linalg.h>
Public Member Functions | |
DoubleMatrix (int r, int c) | |
Constructor for matrix of zeroes 1..r,1..c. | |
DoubleMatrix (const DoubleVector &v) | |
Makes diagonal square matrix: diagonal elements are from v, in order. | |
template<class E > | |
DoubleMatrix & | operator= (const MatXpr< double, E > &x) |
this is the only required operator to make this class work with ETs | |
DoubleMatrix & | operator= (const DoubleMatrix &other) |
template<typename E > | |
DoubleMatrix (const MatXpr< double, E > &m) | |
double | operator() (int i, int j) const |
to reference one element | |
double & | operator() (int i, int j) |
to reference one element | |
double | display (int i, int j) const |
ijth element | |
double | sumElements () const |
int | displayRows () const |
Routines for outputting size of matrix. | |
int | displayCols () const |
const DoubleMatrix & | display () const |
whole matrix returned | |
DoubleVector | displayRow (int i) const |
DoubleVector | displayCol (int i) const |
void | operator+= (DoubleMatrix &f) |
double | nmin (int &k, int &l) const |
DoubleMatrix | apply (double(*fn)(double)) const |
Applies fn to every element of a matrix. | |
const DoubleMatrix & | operator= (double v) |
Sets diagonal entries equal to v, rest are 0. | |
double | min (int &k, int &l) const |
minimum element | |
double | max (int &k, int &l) const |
void | swaprows (int i, int j) |
Obvious elementary row/column operations. | |
void | swapcols (int i, int j) |
std::size_t | size () const |
void | setCols (int) |
change number of columns (Warning: can be slow because it internally copys a std::valarray<double>) | |
void | setRows (int) |
change number of rows (Warning: can be slow because it internally copys a std::valarray<double>) | |
void | resize (int, int) |
resize matrix (Warning: can be slow because it internally copys a std::valarray<double>) | |
double | trace () const |
trace must only be performed on a square matrix | |
DoubleMatrix | transpose () const |
can be any size | |
bool | testNan () const |
tests that all elements are not Nans | |
void | associateOrderAbs (DoubleVector &v) |
void | associateOrderAbs (DoubleMatrix &u, DoubleMatrix &v, DoubleVector &w) const |
void | symmetrise () |
fills in bottom-left hand corner of a matrix | |
double | compare (const DoubleMatrix &a) const |
double | compare (const ComplexMatrix &a) const |
DoubleVector | diagVals () const |
Just returns a vector filled with the diagonal values. | |
DoubleMatrix | inverse () const |
returns inverse of a matrix | |
double | diagonalise (DoubleMatrix &u, DoubleMatrix &v, DoubleVector &w) const |
double | diagonaliseSym (DoubleMatrix &v, DoubleVector &w) const |
double | diagonaliseSym (ComplexMatrix &v, DoubleVector &w) const |
DoubleVector | sym2by2 (double &theta) const |
DoubleVector | asy2by2 (double &thetaL, double &thetaR) const |
2 by 2 asymmetric matrices | |
DoubleVector | vectorfy () const |
converts a list of entries into a vector | |
double | determinant () const |
Determinant of your matrix. | |
DoubleMatrix | ludcmp (double &d) const |
void | fillArray (double *array, unsigned offset=0) const |
fill array, starting at offset | |
Public Member Functions inherited from MatIndexable< double, DoubleMatrix > | |
double | operator() (int m, int n) const |
int | displayRows () const |
int | displayCols () const |
DoubleMatrix & | assign_from (const MatXpr< double, E > &x) |
DoubleMatrix | copy_from (const MatXpr< double, E > &x) |
MatIndexable & | operator+= (const MatXpr< double, E > &x) |
MatIndexable & | operator*= (double x) |
Friends | |
class | ComplexMatrix |
Matrix from 1..rows, 1..cols of double values.
void DoubleMatrix::associateOrderAbs | ( | DoubleMatrix & | u, |
DoubleMatrix & | v, | ||
DoubleVector & | w | ||
) | const |
diag = U^T double M V. It will put the diag evals in abs ascending order and changes U,V accordingly
void DoubleMatrix::associateOrderAbs | ( | DoubleVector & | v | ) |
Perform on a mixing matrix O such that diag v = O^double M O. It will put the diag evals in abs ascending order and change O accordingly
double DoubleMatrix::compare | ( | const DoubleMatrix & | a | ) | const |
Sums up the absolute value of the difference in each element of two matrices
double DoubleMatrix::diagonalise | ( | DoubleMatrix & | u, |
DoubleMatrix & | v, | ||
DoubleVector & | w | ||
) | const |
Uses singular SVD algorithm: \( A = U.W.V^T \) where W is a matrix of the eigenvalues, therefore \( W = U^T A V \).
double DoubleMatrix::diagonaliseSym | ( | DoubleMatrix & | v, |
DoubleVector & | w | ||
) | const |
For SYMMETRIC MATRICES ONLY! \( A = V.W.V^T \) where W is a vector of the eigenvalues therefore \( W = V^T A V \).
DoubleMatrix DoubleMatrix::ludcmp | ( | double & | d | ) | const |
Returns LU decomposition of a matrix. d gives whether there are an even or odd number of permutations
indx records the row permutation undergone. d=+1 or -1 depending on whether the permutation is even or odd.
double DoubleMatrix::max | ( | int & | k, |
int & | l | ||
) | const |
maximum element
DoubleVector DoubleMatrix::sym2by2 | ( | double & | theta | ) | const |
Special case that's often used: eigenvalues of 2 by 2 symmetric matrix A(2,1) is assumed to be equal to A(1,2). theta is the mixing angle: m1 is NOT NECESSARILY > m2