← All NMath Code Examples
Imports System
Imports System.Globalization
Imports System.Threading
Imports CenterSpace.NMath.Core
Namespace CenterSpace.NMath.Examples.VisualBasic
A .NET example in Visual Basic showing some of the functionality of the NMathFunctions class.
Module NMathFunctionsExample
Sub Main()
Most common mathematical functions have been overloaded to accept
vector and matrix types. These functions are provided as static
methods in the class CenterSpace.NMath.Core.NMathFunctions. The
result of invoking one of these methods with a vector or matrix
argument is a new vector or matrix object of the same size whose
values are the result of applying the function to each element
of its argument.
Console.WriteLine()
Dim Original As CultureInfo = Thread.CurrentThread.CurrentCulture
This example uses strings representing numbers in the US locale
so change the current culture info. For example, "$4.30"
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Dim v As New FloatVector(1.2F, -4.5F, 9.1F, -10.01F)
Create a vector whose values are the absolute values of v.
Dim absV As FloatVector = NMathFunctions.Abs(v)
Dim A As New DoubleComplexMatrix("2x2 [(1,-1) (2,-.5) (2.2,1.1) (7,9)]")
Back to original culture
Thread.CurrentThread.CurrentCulture = Original
Console.WriteLine("absV = {0}", absV.ToString()) absV = [1.2 4.5 9.1 10.01]
Console.WriteLine()
Use the NMathFunctions Conj method to obtain a matrix whose elements are
the complex conjugates of the complex matrix A.
Dim AConj As DoubleComplexMatrix = NMathFunctions.Conj(A)
AConj = 2x2 [(1,1) (2,0.5) (2.2,-1.1) (7,-9)]
Console.WriteLine("AConj...")
Console.WriteLine(AConj)
Console.WriteLine()
Now use the Imag method to create a real matrix containing
the imaginary parts of AConj.
Dim AConjImag As DoubleMatrix = NMathFunctions.Imag(AConj)
AConjImag = 2x2 [1 0.5 -1.1 -9]
Console.WriteLine("AConjImag...")
Console.WriteLine(AConjImag)
Console.WriteLine()
The NMathFunctions class also provides static methods for solving
linear systems, computing determinants, matrix inverses, and
matrix condition numbers. See the LU factorization example
to see how re-use the LU factorization of a matrix to compute
these quantities.
Dim detAConjImag As Double = NMathFunctions.Determinant(AConjImag)
Console.WriteLine("The determinant of AConjImag = {0}", detAConjImag)
Console.WriteLine()
If the determinant is non-zero, the matrix is invertible. So we
can compute inverses and solve linear systems.
If (Not detAConjImag.Equals(0)) Then
Dim inv As DoubleMatrix = NMathFunctions.Inverse(AConjImag)
Console.WriteLine("The inverse of AConjImag...")
Console.WriteLine(inv.ToString("F3"))
Console.WriteLine()
Dim b As New DoubleVector("[0 -1]")
Dim x As DoubleVector = NMathFunctions.Solve(AConjImag, b)
Console.WriteLine("The solution, x to AConjImag*x=b is...")
Console.WriteLine(x.ToString("F3"))
Console.WriteLine()
Dim conditionNumber As Double = NMathFunctions.EstimateConditionNumber(AConjImag, NormType.OneNorm)
Console.WriteLine("The condition number of AConjImag in the 1-norm is...")
Console.WriteLine(conditionNumber.ToString("F5"))
Else
Console.WriteLine("Sorry, matrix is singular")
End If
Console.WriteLine()
Console.WriteLine("Press Enter Key")
Console.Read()
End Sub
End Module
End Namespace
← All NMath Code Examples