Extreme Optimization™: Complexity made simple.

Math and Statistics
Libraries for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Blog
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Partners
    • Contact us
Introduction
Deployment Guide
Nuget packages
Configuration
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Data Analysis Library User's GuideData Analysis Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand Data Access Library User's GuideData Access Library User's Guide
Expand ReferenceReference
  • Extreme Optimization
    • Features
    • Solutions
    • Documentation
    • QuickStart Samples
    • Sample Applications
    • Downloads
    • Technical Support
    • Download trial
    • How to buy
    • Blog
    • Company
    • Resources
  • Documentation
    • Introduction
    • Deployment Guide
    • Nuget packages
    • Configuration
    • Using Parallelism
    • Mathematics Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Data Access Library User's Guide
    • Reference
  • Reference
    • Extreme
    • Extreme.Collections
    • Extreme.Data
    • Extreme.Data.Json
    • Extreme.Data.Matlab
    • Extreme.Data.R
    • Extreme.Data.Stata
    • Extreme.Data.Text
    • Extreme.DataAnalysis
    • Extreme.DataAnalysis.Linq
    • Extreme.DataAnalysis.Models
    • Extreme.Mathematics
    • Extreme.Mathematics.Algorithms
    • Extreme.Mathematics.Calculus
    • Extreme.Mathematics.Calculus.OrdinaryDifferentialEquations
    • Extreme.Mathematics.Curves
    • Extreme.Mathematics.Curves.Nonlinear
    • Extreme.Mathematics.Distributed
    • Extreme.Mathematics.EquationSolvers
    • Extreme.Mathematics.Generic
    • Extreme.Mathematics.LinearAlgebra
    • Extreme.Mathematics.LinearAlgebra.Implementation
    • Extreme.Mathematics.LinearAlgebra.IterativeSolvers
    • Extreme.Mathematics.LinearAlgebra.IterativeSolvers.Preconditioners
    • Extreme.Mathematics.Optimization
    • Extreme.Mathematics.Optimization.LineSearches
    • Extreme.Mathematics.Random
    • Extreme.Mathematics.SignalProcessing
    • Extreme.Providers
    • Extreme.Providers.InteropServices
    • Extreme.Statistics
    • Extreme.Statistics.Distributions
    • Extreme.Statistics.Multivariate
    • Extreme.Statistics.Tests
    • Extreme.Statistics.TimeSeriesAnalysis
  • Extreme.Mathematics.LinearAlgebra
    • BandMatrix(T) Class
    • BlockVector(T) Class
    • CholeskyDecomposition(T) Class
    • CloningMethod Enumeration
    • ColumnCollection(T) Structure
    • ComplexSingularValueDecomposition(T) Class
    • ComponentReadOnlyException Class
    • ComposedComplexMatrix(T) Class
    • ComposedComplexVector(T) Class
    • ConstantMatrix(T) Class
    • ConstantVector(T) Class
    • Decomposition(T) Class
    • DenseMatrix(T) Class
    • DenseVector(T) Class
    • DiagonalMatrix(T) Class
    • EigenvalueDecomposition(T) Class
    • EigenvalueRange Enumeration
    • GeneralizedDecomposition(T) Class
    • GeneralizedEigenvalueDecomposition(T) Class
    • GeneralizedSingularValueDecomposition(T) Class
    • GeneralizedSingularValueDecompositionFactors Enumeration
    • HermitianMatrix(T) Class
    • IndexedVector(T) Class
    • IndexValuePair(T) Structure
    • IResizableMatrix(T) Interface
    • LeastSquaresSolutionMethod Enumeration
    • LeastSquaresSolver(T) Class
    • LinearAlgebraOperations Class
    • LinearOperator(T) Class
    • LQDecomposition(T) Class
    • LUDecomposition(T) Class
    • MatrixNotPositiveDefiniteException Class
    • MatrixSingularException Class
    • MatrixView(T) Class
    • NonHermitianEigenvalueDecomposition(T) Class
    • NonNegativeMatrixFactorization(T) Class
    • PermutationMatrix Class
    • PivotVector Structure
    • QLDecomposition(T) Class
    • QRDecomposition(T) Class
    • RealEigenvalueDecomposition(T) Class
    • RowCollection(T) Structure
    • RowColumnValueTriplet(T) Structure
    • RQDecomposition(T) Class
    • SingularValueDecomposition(T) Class
    • SingularValueDecompositionFactors Enumeration
    • SparseCompressedColumnMatrix(T) Class
    • SparseMatrix(T) Class
    • SparseVector(T) Class
    • SymmetricIndefiniteDecomposition(T) Class
    • SymmetricMatrix(T) Class
    • TriangularMatrix(T) Class
  • SingularValueDecomposition(T) Class
    • SingularValueDecomposition(T) Constructor
    • Properties
    • Methods

SingularValueDecompositionT Class

Extreme Optimization Numerical Libraries for .NET Professional
Represents the singular value decomposition of a matrix.
Inheritance Hierarchy

SystemObject
  Extreme.Mathematics.LinearAlgebraLinearOperatorT
    Extreme.Mathematics.LinearAlgebraDecompositionT
      Extreme.Mathematics.LinearAlgebraSingularValueDecompositionT

Namespace:  Extreme.Mathematics.LinearAlgebra
Assembly:  Extreme.Numerics (in Extreme.Numerics.dll) Version: 8.1.1
Syntax

C#
VB
C++
F#
Copy
public abstract class SingularValueDecomposition<T> : Decomposition<T>
Public MustInherit Class SingularValueDecomposition(Of T)
	Inherits Decomposition(Of T)
generic<typename T>
public ref class SingularValueDecomposition abstract : public Decomposition<T>
[<AbstractClassAttribute>]
type SingularValueDecomposition<'T> =  
    class
        inherit Decomposition<'T>
    end

Type Parameters

T

The SingularValueDecompositionT type exposes the following members.

Constructors

  NameDescription
Protected methodSingularValueDecompositionT
Constructs a new SingularValueDecompositionT object.
Top
Properties

  NameDescription
Public propertyBaseMatrix
Gets the underlying matrix of the decomposition.
(Inherited from DecompositionT.)
Public propertyColumnCount
Gets the number of columns in the matrix.
(Inherited from LinearOperatorT.)
Public propertyColumnIndex
Gets or sets the index of labels for the columns of the matrix.
(Inherited from LinearOperatorT.)
Protected propertyDone
Gets or sets a value that indicates whether the decomposition has been performed.
(Inherited from DecompositionT.)
Public propertyElementType
Gets the element type of the matrix.
(Inherited from LinearOperatorT.)
Public propertyFactors
Gets a collection of the matrix factors that make up the decomposition.
(Overrides DecompositionTFactors.)
Public propertyLeftSingularVectors
Gets the left singular vectors of the decomposition.
Public propertyOverwrite
Gets or sets a value indicating whether the BaseMatrix should be overwritten by its decomposition.
(Inherited from DecompositionT.)
Public propertyRequestedFactors
Gets or sets which factors of the singular value decomposition should be calculated.
Public propertyRightSingularVectors
Gets the right singular vectors of the decomposition.
Public propertyRowCount
Gets the number of rows in the matrix.
(Inherited from LinearOperatorT.)
Public propertyRowIndex
Gets or sets the index of labels for the rows of the matrix.
(Inherited from LinearOperatorT.)
Public propertySingularValueMatrix
Gets a matrix with the singular values on the diagonal.
Public propertySingularValues
Gets a vector containing the singular values.
Top
Methods

  NameDescription
Public methodAddProductToVector Obsolete.
Multiplies a VectorT by this instance and stores the result in a second vector of type DenseVectorT.
(Inherited from LinearOperatorT.)
Public methodDecompose
Performs the actual decomposition.
(Inherited from DecompositionT.)
Public methodDeconstruct
Deconstructs a singular value decomposition into its component matrices.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodEstimateConditionNumber
Calculates an estimate for the condition number of the matrix.
(Overrides LinearOperatorTEstimateConditionNumber.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetDeterminant
Calculates the determinant of the decomposed matrix.
(Overrides LinearOperatorTGetDeterminant.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetInverse
Calculates the inverse matrix..
(Inherited from LinearOperatorT.)
Public methodGetInverse(Boolean)
Calculates the inverse of the factorized matrix.
(Overrides LinearOperatorTGetInverse(Boolean).)
Public methodGetObjectData
Populates a SerializationInfo with the data needed to serialize the target object.
(Inherited from LinearOperatorT.)
Public methodGetPseudoInverse
Calculates the pseudo-inverse of the factorized matrix.
Public methodGetPseudoInverse(T)
Calculates the pseudo-inverse of the factorized matrix.
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodIsSingular
Gets a value indicating whether the BaseMatrix of this decomposition is singular.
(Inherited from DecompositionT.)
Public methodLeastSquaresSolve(MatrixT)
Solves the system of linear equations for the specified right-hand side matrix in the least squares sense.
(Inherited from LinearOperatorT.)
Public methodLeastSquaresSolve(VectorT)
Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperatorT.)
Public methodLeastSquaresSolve(DenseMatrixT, 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 LinearOperatorT.)
Public methodLeastSquaresSolve(DenseVectorT, 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 LinearOperatorT.)
Public methodLeastSquaresSolveInto(MatrixT, MatrixT)
Solves a system of equations defined by the matrix and multiple right-hand sides in the least squares sense.
(Overrides LinearOperatorTLeastSquaresSolveInto(MatrixT, MatrixT).)
Public methodLeastSquaresSolveInto(VectorT, VectorT)
Solves a system of equations defined by the matrix and the specified right-hand side in the least squares sense.
(Overrides DecompositionTLeastSquaresSolveInto(VectorT, VectorT).)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodMultiply(MatrixT)
Applies the linear operator to a matrix.
(Inherited from LinearOperatorT.)
Public methodMultiply(VectorT)
Applies the linear operator to a vector.
(Inherited from LinearOperatorT.)
Public methodMultiply(TransposeOperation, MatrixT) Obsolete.
Multiplies a matrix on the left by this matrix.
(Inherited from LinearOperatorT.)
Public methodMultiply(TransposeOperation, VectorT) Obsolete.
Multiplies a vector on the left by this vector.
(Inherited from LinearOperatorT.)
Protected methodMultiplyAndAddAsLeftFactorCore
Multiplies the matrix with a vector, adds the scaled result to another scaled vector, and returns the result.
(Inherited from DecompositionT.)
Protected methodMultiplyAsLeftCore(TransposeOperation, MatrixT, MatrixT)
Multiplies a matrix by the linear operator and returns the result.
(Inherited from DecompositionT.)
Protected methodMultiplyAsLeftCore(TransposeOperation, VectorT, VectorT)
Multiplies a vector by the linear operator and returns the result.
(Inherited from DecompositionT.)
Public methodMultiplyTranspose(MatrixT)
Applies the transpose of the linear operator to a matrix.
(Inherited from LinearOperatorT.)
Public methodMultiplyTranspose(VectorT)
Applies the (conjugate) transpose of the linear operator to a vector.
(Inherited from LinearOperatorT.)
Public methodRank
Returns the numerical rank of a matrix.
(Inherited from LinearOperatorT.)
Public methodRank(T)
Returns the numerical rank of a matrix using the specified tolerance.
(Overrides LinearOperatorTRank(T).)
Public methodSetRank
Sets the smallest singular values to zero so the matrix has at most the specified rank.
Protected methodSetSingular
Sets a flag that indicates the underlying matrix of this decomposition is singular.
(Inherited from DecompositionT.)
Public methodSolve(MatrixT)
Solves the system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperatorT.)
Public methodSolve(VectorT)
Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperatorT.)
Public methodSolve(DenseMatrixT, 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 LinearOperatorT.)
Public methodSolve(DenseVectorT, 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 LinearOperatorT.)
Public methodSolveInto(MatrixT, MatrixT)
Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperatorT.)
Public methodSolveInto(VectorT, VectorT)
Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperatorT.)
Public methodSolveInto(TransposeOperation, MatrixT, MatrixT)
Solves a system of equations defined by the matrix and multiple right-hand sides.
(Overrides LinearOperatorTSolveInto(TransposeOperation, MatrixT, MatrixT).)
Public methodSolveInto(TransposeOperation, VectorT, VectorT)
Solves a system of equations defined by the matrix and the specified right-hand side.
(Overrides LinearOperatorTSolveInto(TransposeOperation, VectorT, VectorT).)
Public methodSolveTranspose(MatrixT)
Solves the transposed system of linear equations for the specified right-hand side matrix.
(Inherited from LinearOperatorT.)
Public methodSolveTranspose(VectorT)
Solves the system of linear equations for the specified right-hand side vector.
(Inherited from LinearOperatorT.)
Public methodSolveTranspose(DenseMatrixT, 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 LinearOperatorT.)
Public methodSolveTranspose(DenseVectorT, 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 LinearOperatorT.)
Public methodSolveTransposeInto(MatrixT, MatrixT)
Solves a system of equations defined by the matrix and multiple right-hand sides.
(Inherited from LinearOperatorT.)
Public methodSolveTransposeInto(VectorT, VectorT)
Solves a system of equations defined by the matrix and the specified right-hand side.
(Inherited from LinearOperatorT.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Remarks

The singular value decomposition (SVD) of a matrix A rewrites the matrix in the form A= USVT, where U and V are orthogonal matrices, and S is a diagonal matrix whose diagonal contains the singular values of the matrix.

QRDecompositionT can operate in two modes. In overwrite mode, the original matrix is overwritten by the decomposition. In preserve mode, the original matrix is preserved, and a new matrix is created to hold the decomposition. You can set the mode through the Overwrite property.

SingularValueDecompositionT inherits from LinearOperatorT. This means you can use it to solve systems of linear equations. You can solve for a single right-hand side, or for multiple right-hand sides using the Solve(VectorT) method. You can also calculate the determinant, the inverse, and an estimate for the EstimateConditionNumber.

In addition, the SingularValueDecompositionT class provides some unique methods. The GetPseudoInverse method calculates the pseudo-inverse of the matrix. This is a matrix A+ such that AA+A = A.

The managed implementation of the singular value decomposition is based on the LINPACK routine DSVDC. The native version uses the LAPACK routine ?GESDD.

See Also

Reference

Extreme.Mathematics.LinearAlgebra Namespace
Extreme.Mathematics.LinearAlgebraDenseMatrixT
Extreme.Mathematics.LinearAlgebraLinearOperatorT

Copyright (c) 2004-2021 ExoAnalytics Inc.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2004-2021, Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual Studio.NET, and the Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.