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
  • 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

Skip Navigation LinksHome»Documentation»Vector and Matrix Library User's Guide»Matrix Decompositions»Solving Linear Systems

Solving Linear Systems and Related Operations

Extreme Optimization Numerical Libraries for .NET Professional

All decomposition classes inherit from the LinearOperatorT abstract base class, which defines common methods for solving systems of simultaneous linear equations and related operations. All these methods call the Decompose method as needed. Unlike for matrix types, there is no performance penalty for calling several of these methods in succession. The decomposition is only calculated once.

The Solve method is overloaded. To solve for one right-hand side, pass this value as a VectorT as the first argument. To solve for multiple right-hand sides, store the vectors in the columns of a MatrixT. An optional second argument specifies whether the right-hand sides should be overwritten with the solution. By default, a new vector or matrix instance is created of the same dimensions as the right-hand side. The SolveInto method is the same, but lets you specify the array that is to hold the result.

To solve for the transpose of a matrix, use the SolveTranspose or SolveTransposeInto method.

To compute a least squares solution for an over-determined system, use the LeastSquaresSolve or LeastSquaresSolveInto method.

A matrix is singular when not all of its rows or columns are linearly independent. The IsSingular method returns a Boolean value that indicates this condition.

The inverse matrix is returned by the GetInverse method.

The condition number of a matrix is defined as the ratio of its largest to its smallest singular value. Because the calculation of singular values is a very expensive operation, an estimate that is cheaper to calculate is usually preferred. The EstimateConditionNumber method returns such an estimate.

The condition number gives an indication of the worst case loss of precision when solving a system of simultaneous linear equations. The condition number of a singular matrix is infinite, which is returned as DoublePositiveInfinity.

The determinant of a matrix is returned by the GetDeterminant method. The determinant is only defined for square matrices.

Copyright (c) 2004-2023 ExoAnalytics Inc.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2004-2023, 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.