#include <permscale.h>
Inherits ScalingPermutation< T >< T >, and Matrix< T >< T >.
Inheritance diagram for PermScaleMatrix< T >:
Public Member Functions | |
PermScaleMatrix () | |
Default constructor; constructs a null permutation. | |
PermScaleMatrix (itype n) | |
Constructs the identity permutation on n elements. | |
PermScaleMatrix (const Permutation &other) | |
Constructs the PermScaleMatrix corresponding to a given permutation, with identity scaling. | |
PermScaleMatrix (const ScalingPermutation< T > &other) | |
Quasi-copy Constructor; constructs the PermScaleMatrix corresponding to a given scaling permutation. | |
PermScaleMatrix (const PermScaleMatrix< T > &other) | |
Copy Constructor; constructs a PermScaleMatrix identical to other . | |
PermScaleMatrix (const std::vector< itype > &vec) | |
Constructs a permutation from a STL vector of indices. | |
PermScaleMatrix (const std::vector< itype > &vec, const std::vector< T > &scal) | |
Constructs a permutation from a STL vector of indices, and an STL vector of scaling coefficients. | |
virtual | ~PermScaleMatrix () |
The destructor doesn't do anything. | |
virtual itype | Rows () const |
Returns the number of rows = size of permutation. (Mandatory override of pure virtual from Matrix). | |
virtual itype | Columns () const |
Returns the number of columns = size of permutation. (Mandatory override of pure virtual from Matrix). | |
virtual itype | Size () const |
Returns the number of nonzero elements = size of permutation. (Mandatory override of pure virtual from Matrix). | |
virtual T & | operator() (itype r, itype c) |
Returns a dummy copy of the requested element. (Mandatory override of pure virtual from Matrix). | |
virtual T | operator() (itype r, itype c) const |
Returns a copy of the requested element. (Mandatory override of pure virtual from Matrix). | |
bool | isSquare () const |
Identifies the matrix as being square. (Mirrors a method in DenseMatrix). | |
T | Trace () const |
Returns the trace, or sum of the diagonal elements. (Mirrors a method in DenseMatrix). | |
PermScaleMatrix< typename linalg_traits< T >::conjugate_type > & | Conjugate () |
Conjugates the matrix in place, and returns a reference to it. (Mirrors a method in DenseMatrix). | |
linalg_traits< T >::norm_type | Norm () |
Returns the square of the 2-norm = Tr( Adjoint(M).M) . (Mirrors a method in DenseMatrix). | |
linalg_traits< T >::abs_type | Abs () |
Returns the 2-norm = sqrt( Tr( Adjoint(M).M) ). (Mirrors a method in DenseMatrix). | |
PermScaleMatrix< T > & | Normalize () |
Normalizes the matrix, so that Norm() and Abs() will return 1. (Mirrors a method in DenseMatrix). | |
PermScaleMatrix< T > & | operator *= (T scalar) |
Multiplies the matrix by a scalar, and returns a reference. (Mirrors a method in DenseMatrix). | |
PermScaleMatrix< T > & | operator/= (T scalar) |
Divides the matrix by a scalar, and returns a reference. (Mirrors a method in DenseMatrix). | |
T | Scale (itype i) const |
void | SetScale (itype i, complex s) |
ScalingPermutation & | reset () |
ScalingPermutation & | reset (itype newsize) |
ScalingPermutation & | swap (itype i, itype j) |
ScalingPermutation & | operator *= (const ScalingPermutation &other) |
ScalingPermutation & | operator *= (const Permutation &other) |
ScalingPermutation | inverse () const |
void | Print (std::ostream &out=std::cout) const |
bool | operator== (const Permutation &other) const |
bool | operator== (const ScalingPermutation &other) const |
ScalingPermutation | operator * (const Permutation &two) const |
ScalingPermutation | operator * (const ScalingPermutation &two) const |
itype | operator[] (itype n) const |
void | PrintCycles (std::ostream &out=std::cout) const |
Permutation & | randomize () |
virtual void | print (std::ostream &os=std::cout) const |
Prettyprints the Matrix to a stream, but without justification. | |
Protected Member Functions | |
bool | badrange (itype i) const |
bool | valid () const |
Protected Attributes | |
T * | scale |
itype * | map |
C-style array containing the action of the permutation as: ![]() | |
itype | N |
PermScaleMatrix defines the class of square matrices where each row and each column have exactly one element. The action of a PermScaleMatrix on a vector is thus to permute the elements, and scale each one by some constant factor. These matrices are closed under multiplication, and therefore form a semigroup.
PermScaleMatrix objects can be constructed from:
N
(creates the N
-dimensional identity matrix)PermScaleMatrix objects have all the inherited functionality of a Permutation or ScalingPermutation. They also support a restricted subset of basic linear algebra (although since they inherit from Matrix, they can always be converted to a DenseMatrix). Things you can do with a PermScaleMatrix include:
Note that you cannot add or subtract two PermScaleMatrix objects -- the result iss not a PermScaleMatrix. To do so, convert first to DenseMatrix.
|
Returns a dummy copy of the requested element. (Mandatory override of pure virtual from Matrix). If the requested element is not one of the nonzero ones, then we have to return a reference to a dummy. However, it's not clear what we should do if the requested element is nonzero. Currently we return a dummy copy of the element, so that it's not possible to change an element directly. This behavior is open to debate -- as it stands, we cannot change an element directly, although it could be done rather awkwardly through multiplication by another matrix. Implements Matrix< T >. |