Linear
Linear::Schur< T, N, Flags > Struct Template Reference

Struct for Schur decomposition. More...

#include <Decomp.h>

Public Member Functions

template<size_t M2, size_t N2, unsigned int Flags2>
 Schur (const Matrix< T, M2, N2, Flags2 > &A, unsigned int max_iterations=100)
 Constructor. More...
 
template<size_t M2, size_t N2, unsigned int Flags2>
void Compute (const Matrix< T, M2, N2, Flags2 > &A, unsigned int max_iterations=100)
 Computes the real Schur decomposition. More...
 

Public Attributes

SquareMatrix< T, N, Flags > Q
 
SquareMatrix< T, N, Flags > U
 
SquareMatrix< T, N, Flags > Qh
 

Detailed Description

template<typename T, size_t N, unsigned int Flags = 0>
struct Linear::Schur< T, N, Flags >

Struct for Schur decomposition.

This struct NxN matrix Q and NxN matrix U such that \(A=QUQ^*\) where Q is unitary and U is block upper triangular with block sizes 1x1 and 2x2.

Parameters
TType to store matrix entries as.
NNumber of rows/columns for Q and U (both square). Dynamic is allowed for N.
FlagsFlags to pass to the matrices (default = row major).

Constructor & Destructor Documentation

◆ Schur()

template<typename T , size_t N, unsigned int Flags = 0>
template<size_t M2, size_t N2, unsigned int Flags2>
Linear::Schur< T, N, Flags >::Schur ( const Matrix< T, M2, N2, Flags2 > &  A,
unsigned int  max_iterations = 100 
)
inline

Constructor.

Just calls Compute.

Parameters
AM2xN2 Matrix

Member Function Documentation

◆ Compute()

template<typename T , size_t N, unsigned int Flags = 0>
template<size_t M2, size_t N2, unsigned int Flags2>
void Linear::Schur< T, N, Flags >::Compute ( const Matrix< T, M2, N2, Flags2 > &  A,
unsigned int  max_iterations = 100 
)
inline

Computes the real Schur decomposition.

If A is not square or Q != N, then an exception is thrown.

Parameters
AM2xN2 Matrix

Member Data Documentation

◆ Q

template<typename T , size_t N, unsigned int Flags = 0>
SquareMatrix<T,N,Flags> Linear::Schur< T, N, Flags >::Q

Unitary matrix

◆ Qh

template<typename T , size_t N, unsigned int Flags = 0>
SquareMatrix<T,N,Flags> Linear::Schur< T, N, Flags >::Qh

Qh=ConjugateTranspose(Q)

◆ U

template<typename T , size_t N, unsigned int Flags = 0>
SquareMatrix<T,N,Flags> Linear::Schur< T, N, Flags >::U

Block upper triangular with block sizes 1x1 and 2x2.


The documentation for this struct was generated from the following file: