SchurDecomposition<T> Class

Represents the Schur decomposition of a dense matrix.

Definition

Namespace: Numerics.NET.LinearAlgebra
Assembly: Numerics.NET (in Numerics.NET.dll) Version: 9.0.0
C#
public abstract class SchurDecomposition<T> : Decomposition<T>
Inheritance
Object  →  LinearOperator<T>  →  Decomposition<T>  →  SchurDecomposition<T>
Derived

Type Parameters

T

Remarks

The Schur decomposition of a real (complex) square matrix A rewrites the matrix in the form A= QTQ*, where Q is an orthogonal (unitary) matrix and T, the Schur form, is an upper triangular matrix. The diagonal elements of T are the eigenvalues of A.

For a real matrix, the eigenvalues are either real or come in complex conjugate pairs. When there are complex eigenvalues, the matrix T is modified to be quasi-triangular, where 2x2 blocks on the diagonal indicate complex conjugate pairs of eigenvalues. This is sometimes referred to as the real Schur form.

The Schur form of a complex matrix is always upper triangular.

The Schur form of a real symmetric or complex Hermitian matrix is a diagonal matrix. Therefore, the Schur decomposition of such a matrix is the same as the eigenvalue decomposition.

SchurDecomposition<T> inherits from LinearOperator<T>. However, unlike most other decompositions, the Schur decomposition does not offer a speed advantage when performing most calculations. For example, solving an equation using the eigenvalue decomposition itself requires the solution of a system of equations. For this reason, the Solve(Vector<T>), GetInverse(Boolean) and EstimateConditionNumber() and similar methods simply call the corresponding method on the base matrix.

Constructors

SchurDecomposition<T> Constructs a new SchurDecomposition<T> object.

Properties

BaseMatrix Gets the underlying matrix of the decomposition.
(Inherited from Decomposition<T>)
ColumnCount Gets the number of columns in the matrix.
(Inherited from LinearOperator<T>)
ColumnIndex Gets or sets the index of labels for the columns of the matrix.
(Inherited from LinearOperator<T>)
Preliminary
ComplexEigenvalues Gets the eigenvalues of the matrix as a complex vector.
Done Gets or sets a value that indicates whether the decomposition has been performed.
(Inherited from Decomposition<T>)
Eigenvalues Gets the eigenvalues of the matrix.
ElementType Gets the element type of the matrix.
(Inherited from LinearOperator<T>)
Factors Gets a collection of the matrix factors that make up the decomposition.
(Overrides Decomposition<T>.Factors)
HasComplexEigenvalues Indicates whether the matrix has any complex eigenvalues.
Overwrite Gets or sets whether the BaseMatrix should be overwritten by its decomposition.
(Inherited from Decomposition<T>)
RowCount Gets the number of rows in the matrix.
(Inherited from LinearOperator<T>)
RowIndex Gets or sets the index of labels for the rows of the matrix.
(Inherited from LinearOperator<T>)
Preliminary
SchurForm Gets the Schur form of the matrix.
SchurVectors Gets the Schur vectors of the matrix.

Methods

Decompose Performs the actual decomposition.
(Inherited from Decomposition<T>)
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
EstimateConditionNumber Calculates an estimate for the condition number of a matrix.
(Inherited from LinearOperator<T>)
FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
GetDeterminant Calculates the determinant of the decomposed matrix.
(Overrides LinearOperator<T>.GetDeterminant())
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetInverse() Calculates the inverse matrix..
(Inherited from LinearOperator<T>)
GetInverse(Boolean) Calculates the inverse of the factorized matrix.
(Overrides LinearOperator<T>.GetInverse(Boolean))
GetObjectData Populates a SerializationInfo with the data needed to serialize the target object.
(Inherited from LinearOperator<T>)
Obsolete.
GetTypeGets the Type of the current instance.
(Inherited from Object)
IsSingular Gets whether the BaseMatrix of this decomposition is singular.
(Inherited from Decomposition<T>)
LeastSquaresSolve(Matrix<T>) Solves the system of linear equations for the specified right-hand side matrix in the least squares sense.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(DenseMatrix<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense matrix in the least squares sense and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
LeastSquaresSolve(DenseVector<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense vector in the least squares sense and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
LeastSquaresSolveInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides in the least squares sense.
(Inherited from LinearOperator<T>)
LeastSquaresSolveInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side in the least squares sense.
(Inherited from Decomposition<T>)
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
Multiply(Matrix<T>)Applies the linear operator to a matrix.
(Inherited from LinearOperator<T>)
Multiply(Vector<T>)Applies the linear operator to a vector.
(Inherited from LinearOperator<T>)
MultiplyAndAddAsLeftFactorCore Multiplies the matrix with a vector, adds the scaled result to another scaled vector, and returns the result.
(Inherited from Decomposition<T>)
MultiplyAsLeftCore(TransposeOperation, Matrix<T>, Matrix<T>) Multiplies a matrix by the linear operator and returns the result.
(Inherited from Decomposition<T>)
MultiplyAsLeftCore(TransposeOperation, Vector<T>, Vector<T>) Multiplies a vector by the linear operator and returns the result.
(Inherited from Decomposition<T>)
MultiplyTranspose(Matrix<T>)Applies the transpose of the linear operator to a matrix.
(Inherited from LinearOperator<T>)
MultiplyTranspose(Vector<T>)Applies the (conjugate) transpose of the linear operator to a vector.
(Inherited from LinearOperator<T>)
Rank() Returns the numerical rank of a matrix.
(Inherited from LinearOperator<T>)
Rank(T) Returns the numerical rank of a matrix using the specified tolerance.
(Overrides LinearOperator<T>.Rank(T))
SetSingular Sets a flag that indicates the underlying matrix of this decomposition is singular.
(Inherited from Decomposition<T>)
Solve(Matrix<T>) Solves the system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperator<T>)
Solve(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
Solve(DenseMatrix<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense matrix and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
Solve(DenseVector<T>, Boolean) Solves the system of linear equations for the specified right-hand side dense vector and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperator<T>)
SolveInto(TransposeOperation, Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Overrides LinearOperator<T>.SolveInto(TransposeOperation, Matrix<T>, Matrix<T>))
SolveInto(TransposeOperation, Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Overrides LinearOperator<T>.SolveInto(TransposeOperation, Vector<T>, Vector<T>))
SolveTranspose(Matrix<T>) Solves the transposed system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperator<T>)
SolveTranspose(Vector<T>) Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperator<T>)
SolveTranspose(DenseMatrix<T>, Boolean) Solves the transposed system of linear equations for the specified right-hand side dense matrix and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveTranspose(DenseVector<T>, Boolean) Solves the transposed system of linear equations for the specified right-hand side dense vector and optionally overwrites the right-hand side with the solution.
(Inherited from LinearOperator<T>)
SolveTransposeInto(Matrix<T>, Matrix<T>) Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperator<T>)
SolveTransposeInto(Vector<T>, Vector<T>) Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperator<T>)
ToStringReturns a string that represents the current object.
(Inherited from Object)

See Also