Class : RealSymmetricMatrix
RealSymmetricMatrix :
prototype: RealSymmetricMatrix ()
description:default constructor
RealSymmetricMatrix :
prototype: RealSymmetricMatrix (int , bool zero = false )
description:constructor for an empty matrix
input parameters:
dimension = matrix dimension
zero = true if matrix has to be filled with zeros
RealSymmetricMatrix :
prototype: RealSymmetricMatrix (double* , double* , int dimension )
description:constructor from matrix elements (without duplicating datas)
input parameters:
diagonal = pointer to diagonal element array
offDiagonal = pointer to off-diagonal element array
dimension = matrix dimension
RealSymmetricMatrix :
prototype: RealSymmetricMatrix (const RealMatrix& Q )
description:constructor from a real matrix Q (new matrix = Qt * Q)
RealSymmetricMatrix :
prototype: RealSymmetricMatrix (const RealSymmetricMatrix& M )
description:copy constructor (without duplicating datas)
input parameters:
M = matrix to copy
RealSymmetricMatrix :
prototype: RealSymmetricMatrix (const RealTriDiagonalSymmetricMatrix& M )
description:copy constructor from a real tridiagonal symmetric matrix (without duplicating diagonal elements)
input parameters:
M = matrix to copy
~RealSymmetricMatrix :
prototype: ~RealSymmetricMatrix ()
description:destructor
operator = :
prototype: RealSymmetricMatrix& operator = (const RealSymmetricMatrix& M )
description:assignement (without duplicating datas)
input parameters:
M = matrix to copy
return value: reference on modified matrix
operator = :
prototype: RealSymmetricMatrix& operator = (const RealTriDiagonalSymmetricMatrix& M )
description:assignement from a real tridiagonal symmetric matrix (without duplicating datas)
input parameters:
M = matrix to copy
return value: reference on modified matrix
Clone :
prototype: Matrix* Clone ()
description:return pointer on a clone matrix (without duplicating datas)
input parameters:
retrun value = pointer on new matrix
SetMatrixElement :
prototype: void SetMatrixElement (int , int , double x )
description:set a matrix element
input parameters:
i = line position
j = column position
x = new value for matrix element
SetMatrixElement :
prototype: void SetMatrixElement (int , int , const Complex& x )
description:set a matrix element
input parameters:
i = line position
j = column position
x = new value for matrix element
AddToMatrixElement :
prototype: void AddToMatrixElement (int , int , double x )
description:add a value to a matrix element
input parameters:
i = line position
j = column position
x = value to add to matrix element
AddToMatrixElement :
prototype: void AddToMatrixElement (int , int , const Complex& x )
description:add a value a matrix element
input parameters:
i = line position
j = column position
x = value to add to matrix element
operator :
prototype: double& operator ( )
description:get reference of a given matrix element
input parameters:
i = line position
j = column position
return value: reference om matrix elememt
Resize :
prototype: void Resize (int , int nbrColumn )
description:Resize matrix
input parameters:
nbrRow = new number of rows
nbrColumn = new number of columns
ResizeAndClean :
prototype: void ResizeAndClean (int , int nbrColumn )
description:Resize matrix and set to zero all elements that have been added
input parameters:
nbrRow = new number of rows
nbrColumn = new number of columns
Project :
prototype: Matrix* Project (SubspaceSpaceConverter& subspace )
description:project matrix into a given subspace
input parameters:
subspace = reference on subspace structure
return value: pointer to projected matrix
operator + :
prototype: friend RealSymmetricMatrix operator + (const RealSymmetricMatrix& ,
const RealSymmetricMatrix& M2 )
description:add two matrices
input parameters:
M1 = first matrix
M2 = second matrix
return value: sum of the two matrices
operator + :
prototype: friend RealSymmetricMatrix operator + (const RealTriDiagonalSymmetricMatrix& ,
const RealSymmetricMatrix& M2 )
description:add two matrices where the left one is a real tridiagonal symmetric matrix
input parameters:
M1 = left matrix
M2 = right matrix
return value: sum of the two matrices
operator + :
prototype: friend RealSymmetricMatrix operator + (const RealSymmetricMatrix& ,
const RealTriDiagonalSymmetricMatrix& M2 )
description:add two matrices where the right one is a real tridiagonal symmetric matrix
input parameters:
M1 = left matrix
M2 = right matrix
return value: sum of the two matrices
operator - :
prototype: friend RealSymmetricMatrix operator - (const RealSymmetricMatrix& ,
const RealSymmetricMatrix& M2 )
description:substract two matrices
input parameters:
M1 = first matrix
M2 = matrix to substract to M1
return value: difference of the two matrices
operator - :
prototype: friend RealSymmetricMatrix operator - (const RealTriDiagonalSymmetricMatrix& ,
const RealSymmetricMatrix& M2 )
description:substract two matrices where the left one is a real tridiagonal symmetric matrix
input parameters:
M1 = first matrix
M2 = matrix to substract to M1
return value: difference of the two matrices
operator - :
prototype: friend RealSymmetricMatrix operator - (const RealSymmetricMatrix& ,
const RealTriDiagonalSymmetricMatrix& M2 )
description:substract two matrices where the right one is a real tridiagonal symmetric matrix
input parameters:
M1 = first matrix
M2 = matrix to substract to M1
return value: difference of the two matrices
operator * :
prototype: friend RealSymmetricMatrix operator * (const RealSymmetricMatrix& , double x )
description:multiply a matrix by a real number (right multiplication)
input parameters:
M = source matrix
x = real number to use
return value: product result
operator * :
prototype: friend RealSymmetricMatrix operator * (double , const RealSymmetricMatrix& M )
description:multiply a matrix by a real number (left multiplication)
input parameters:
M = source matrix
x = real number to use
return value: product result
operator / :
prototype: friend RealSymmetricMatrix operator / (const RealSymmetricMatrix& , double x )
description:divide a matrix by a real number (right multiplication)
input parameters:
M = source matrix
x = real number to use
return value: division result
operator += :
prototype: RealSymmetricMatrix& operator += (const RealSymmetricMatrix& M )
description:add two matrices
input parameters:
M = matrix to add to current matrix
return value: reference on current matrix
operator += :
prototype: RealSymmetricMatrix& operator += (const RealTriDiagonalSymmetricMatrix& M )
description:add two matrices where the right one is a real tridiagonal symmetric matrix
input parameters:
M = matrix to add to current matrix
return value: reference on current matrix
operator -= :
prototype: RealSymmetricMatrix& operator -= (const RealSymmetricMatrix& M )
description:substract two matrices
input parameters:
M = matrix to substract to current matrix
return value: reference on current matrix
operator -= :
prototype: RealSymmetricMatrix& operator -= (const RealTriDiagonalSymmetricMatrix& M )
description:substract two matrices where the right one is a real tridiagonal symmetric matrix
input parameters:
M = matrix to substract to current matrix
return value: reference on current matrix
operator *= :
prototype: RealSymmetricMatrix& operator *= (double x )
description:multiply a matrix by a real number
input parameters:
x = real number to use
return value: reference on current matrix
operator /= :
prototype: RealSymmetricMatrix& operator /= (double x )
description:divide a matrix by a real number
input parameters:
x = real number to use
return value: reference on current matrix
MatrixElement :
prototype: double MatrixElement (RealVector& , RealVector& V2 )
description:evaluate matrix element
input parameters:
V1 = vector to left multiply with current matrix
V2 = vector to right multiply with current matrix
return value: corresponding matrix element
Conjugate :
prototype: Matrix* Conjugate (RealMatrix& UnitaryM )
description:conjugate an hermitian matrix with an unitary matrix (Ut M U)
input parameters:
UnitaryM = unitary matrix to use
return value: pointer to conjugated matrix
Conjugate :
prototype: Matrix* Conjugate (BlockDiagonalMatrix& UnitaryM )
description:conjugate an hermitian matrix with an unitary matrix (Ut M U)
input parameters:
UnitaryM = unitary matrix to use
return value: pointer to conjugated matrix
Conjugate :
prototype: void Conjugate (RealMatrix& , int , int ,
RealSymmetricMatrix& matrix )
description:conjugate a block of the matrix with an unitary matrix (Ut M U)
input parameters:
UnitaryM = unitary matrix to use
sourcePosition = index of the row where the block to conjugate starts
destinationPosition = index of the row where the conjugated block has to be stored
matrix = matrix where result has to be stored
Conjugate :
prototype: void Conjugate (RealMatrix& , RealMatrix& , int , int ,
int , int , RealSymmetricMatrix& matrix )
description:conjugate a block of the matrix (in the upper diagonal part) with two matrix matrix (Vt M U)
input parameters:
UnitaryMl = unitary matrix to use at the left hand side
UnitaryMr = unitary matrix to use at the right hand side
sourceRowIndex = index of the row where the block to conjugate starts
sourceColumnIndex = index of the column where the block to conjugate starts
destinationRowIndex = index of the row where the conjugated block has to be stored
destinationColumnIndex = index of the column where the conjugated block has to be stored
matrix = matrix where result has to be stored
AddAAAtAt :
prototype: RealSymmetricMatrix& AddAAAtAt (RealMatrix& , RealMatrix& , RealMatrix& , RealMatrix& , double coefficient = 1.0 )
description:add the symmetric matrix m1.m2.m3^t.m4^t + m4.m3.m2^t.m1^t to current symmetric matrix
input parameters:
m1 = first matrix
m2 = second matrix
m3 = third matrix
m4 = fourth matrix
coefficient = optional global multiplicative factor in front of m1.m2.m3^t.m4^t + m4.m3.m2^t.m1^t
AddAAAtAt :
prototype: RealSymmetricMatrix& AddAAAtAt (RealMatrix& , RealMatrix& , RealMatrix& , RealMatrix& , int , int , int , double coefficient = 1.0 )
description:add the symmetric matrix m1.m2.m3^t.m4^t + m4.m3.m2^t.m1^t to current symmetric matrix within a given range of indices
input parameters:
m1 = first matrix
m2 = second matrix
m3 = third matrix
m4 = fourth matrix
rowIndex = row index of the first element to add
columnIndex = column index of the first element to add
nbrElement = number of element to add (starting from first element knowing that line i contains n - i + 1)
coefficient = optional global multiplicative factor in front of m1.m2.m3^t.m4^t + m4.m3.m2^t.m1^t
Tr :
prototype: double Tr ()
description:evaluate matrix trace
input parameters:
return value: matrix trace
Det :
prototype: double Det ()
description:evaluate matrix determinant
input parameters:
return value: matrix determinant
Lanczos :
prototype: RealTriDiagonalSymmetricMatrix& Lanczos (int , RealTriDiagonalSymmetricMatrix& , RealVector& V1 )
description:Tridiagonalize an hermitian matrix using Lanczos algorithm without re-orthogonalizing base at each step
input parameters:
dimension = maximum iteration number
M = reference on complex tridiagonal hermitian matrix where result has to be stored
V1 = reference on complex vector used as first vector (will contain last produced vector at the end)
return value: reference on complex tridiagonal hermitian matrix
Lanczos :
prototype: RealTriDiagonalSymmetricMatrix& Lanczos (int , RealTriDiagonalSymmetricMatrix& , RealMatrix& Q )
description:Tridiagonalize an hermitian matrix using Lanczos algorithm without re-orthogonalizing base at each step
input parameters:
dimension = maximum iteration number
M = reference on real tridiagonal symmetric matrix where result has to be stored
Q = matrix where new orthonormalized base will be stored (first column is used as first vector)
return value: reference on complex tridiagonal hermitian matrix
OrthoLanczos :
prototype: RealTriDiagonalSymmetricMatrix& OrthoLanczos (int , RealTriDiagonalSymmetricMatrix& , RealMatrix& ,
double err = 0.00000001 )
description:Tridiagonalize an hermitian matrix using Lanczos algorithm without re-orthogonalizing base at each step, if during process a
null vector appears then new random vector is evaluated
input parameters:
dimension = maximum iteration number
M = reference on real tridiagonal symmetric matrix where result has to be stored
Q = matrix where new orthonormalized base will be stored (first column is used as first vector)
err = absolute error on vector norm
return value: reference on complex tridiagonal hermitian matrix
Householder :
prototype: RealTriDiagonalSymmetricMatrix& Householder (RealTriDiagonalSymmetricMatrix& , double err )
description:Tridiagonalize a real symmetric matrix using Householder algorithm
input parameters:
M = reference on real tridiagonal symmetric matrix where result has to be stored
err = absolute error on matrix element
return value: reference on real tridiagonal symmetric matrix
Householder :
prototype: RealTriDiagonalSymmetricMatrix& Householder (RealTriDiagonalSymmetricMatrix& , double , RealMatrix& Q )
description:Tridiagonalize a real symmetric matrix using Householder algorithm and evaluate transformation matrix
input parameters:
M = reference on real tridiagonal symmetric matrix where result has to be stored
err = absolute error on matrix element
Q = matrix where transformation matrix has to be stored
return value: reference on real tridiagonal symmetric matrix
operator << :
prototype: friend ostream& operator << (ostream& , const RealSymmetricMatrix& P )
description:Output Stream overload
input parameters:
Str = reference on output stream
P = matrix to print
return value: reference on output stream
operator << :
prototype: friend MathematicaOutput& operator << (MathematicaOutput& , const RealSymmetricMatrix& P )
description:Mathematica Output Stream overload
input parameters:
Str = reference on Mathematica output stream
P = matrix to print
return value: reference on output stream
operator >> :
prototype: friend ifstream& operator >> (ifstream& , RealSymmetricMatrix& matrix )
description:output file stream overload
input parameters:
file = reference on output file stream
matrix = reference on matrix to save
return value: reference on output file stream
friend ofstream& operator << (ofstream& file, const RealSymmetricMatrix& matrix);
input file stream overload
input parameters:
file = reference on output file stream
matrix = reference on matrix to load
return value: reference on output file stream
Back to index.