VB N Math Functions Example

← All NMath Code Examples


Imports System
Imports System.Globalization
Imports System.Threading

Imports CenterSpace.NMath.Core

Namespace CenterSpace.NMath.Core.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. 


      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]

      ' 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)]

      ' 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]

      ' 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)

      ' 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...")

        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...")

        Dim conditionNumber As Double = NMathFunctions.EstimateConditionNumber(AConjImag, NormType.OneNorm)
        Console.WriteLine("The condition number of AConjImag in the 1-norm is...")
        Console.WriteLine("Sorry, matrix is singular")
      End If

      Console.WriteLine("Press Enter Key")

    End Sub

  End Module

End Namespace

← All NMath Code Examples