7.4 Static Methods (.NET, C#, CSharp, VB, Visual Basic, F#)
As a convenience, NMath provides static methods on class NMathFunctions for solving linear systems, and for computing determinants, inverses, and condition numbers. All methods accept a matrix.
The following static methods are provided:
● NMathFunctions.Solve() solves linear systems for single or multiple right-hand sides.
● NMathFunctions.Inverse() computes the inverse of a given matrix.
● NMathFunctions.Determinant() computes the determinant of a given matrix.
● NMathFunctions.EstimateConditionNumber() estimates the condition number of a given matrix in the specified norm type.
● NMathFunctions.ConditionNumber() directly computes the condition number of a given matrix in the specified norm type.
For instance:
Code Example – C# LU factorization
var A = new DoubleMatrix( "3x3 [2 1 1 4 1 0 -2 2 1]" );
var b = new DoubleVector( "[8 11 3]" );
DoubleVector x = NMathFunctions.Solve( A, b );
var B = new DoubleMatrix( "3x2[8 3 11 11 3 8]" );
DoubleMatrix X = NMathFunctions.Solve( A, B );
DoubleMatrix AInv = NMathFunctions.Inverse( A );
double ADet = NMathFunctions.Determinant( A );
double ACond =
NMathFunctions.ConditionNumber( A, NormType.InfinityNorm );
Code Example – VB LU factorization
Dim A As New DoubleMatrix("3x3 [2 1 1 4 1 0 -2 2 1]")
Dim B As New DoubleVector("[8 11 3]")
Dim X As DoubleVector = NMathFunctions.Solve(A, B)
Dim B As New DoubleMatrix("3x2[8 3 11 11 3 8]")
Dim X As DoubleMatrix = NMathFunctions.Solve(A, B)
Dim AInv As DoubleMatrix = NMathFunctions.Inverse(A)
Dim ADet As Double = NMathFunctions.Determinant(A)
Dim ACond As Double =
NMathFunctions.ConditionNumber(A, NormType.InfinityNorm)
Note that an an LU factorization instance is created with each call to NMathFunctions.Solve(). If you are calling Solve() repeatedly (inside a loop, for example), and the coefficient matrix is not changing between calls, this is more efficient:
Code Example – C# LU factorization
var fact = new DoubleLUFact( A, false );
...
fact.Solve( B );
Code Example – VB LU factorization
Dim Fact As New DoubleLUFact(A, False)
...
Fact.Solve(B)