VB N Math Functions Example

← 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. 


      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