Extreme Optimization™: Complexity made simple.

Numerical Components
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
    • Statistics Library User's Guide
    • Reference
  • •
  • Support
    • Frequently Asked Questions
    • QuickStart Samples
    • Sample Applications
    • Downloads
  • •
  • Blog
  • •
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Contact us
Introduction
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 Statistics Library User's GuideStatistics Library User's Guide
Expand ReferenceReference
  • Home
  • Documentation
  • Vector and Matrix Library User's Guide
  • Complex Linear Algebra
Collapse imageExpand ImageCopy imageCopyHover image
       




Complex Linear Algebra

The Extreme.Mathematics.LinearAlgebra.Complex namespace contains classes that implement complex valued vectors and matrices. The class hierarchy is almost identical to that of real vectors and matrices. We only highlight the differences here.

Complex Vector Classes

The following table lists the complex equivalent of the real vector classes:

Double Vector Complex Vector
Vector ComplexVector
GeneralVector ComplexGeneralVector
BandVector ComplexBandVector
ConstantVector ComplexConstantVector

The complex dot product uses the conjugate of the first argument, so the dot product of a complex vector with itself is always a real number.

Complex Matrix Classes

Most of the classes for real matrices have an equivalent complex matrix class. Complex symmetric matrices are relatively uncommon. Much more common are hermitian matrices, whose components above the diagonal are the conjugate of the corresponding element below the diagonal. For this reason, there is no ComplexSymmetricMatrix class, but there is a new ComplexHermitianMatrix class that represents hermitian matrices.

Complex matrices have four additional methods. GetRealPart()()() returns a real matrix with the real components of each matrix element. GetImaginaryPart()()() returns a real matrix with the imaginary components of each matrix element. Conjugate()()() returns a complex matrix whose components are the conjugate of the corresponding component in the original matrix. ConjugateTranspose()()() returns a complex matrix whose components are the conjugate of the corresponding component in the transpose of the original matrix.

The following table lists the complex equivalent of the real matrix classes:

Double Matrix Complex Matrix
Matrix ComplexMatrix
GeneralMatrix ComplexGeneralMatrix
SymmetricMatrix (No equivalent)
(No equivalent) ComplexHermitianMatrix
TriangularMatrix ComplexTriangularMatrix
MatrixView ComplexMatrixView

There are some additional differences, mainly related to the ComplexHermitianMatrix class. You can only extract an upper triangular matrix from a Hermitian matrix if the Hermitian matrix' data is stored in the upper triangular part. Likewise, you can only extract a lower triangular matrix if the Hermitian matrix' data is stored in the lower triangular part.

For the same reason, the form of the complex Cholesky decomposition depends on how the data is stored. The TriangularFactor property of the ComplexCholeskyDecomposition class returns a ComplexTriangularMatrix that is upper triangular if the Hermitian matrix' data is stored in the upper triangular part, and lower triangular if the Hermitian matrix' data is stored in the lower triangular part.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2003-2010, 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.