New Version 6.0!

Try it for free with our fully functional 60-day trial version.

Download now!

QuickStart Samples

Vector Operations QuickStart Sample (Visual Basic)

Illustrates how to perform operations on Vector objects, including construction, element access, arithmetic operations in Visual Basic.

C# code F# code IronPython code Back to QuickStart Samples

Option Infer On

' The Vector class resides in the Extreme.Mathematics.LinearAlgebra namespace.
Imports Extreme.Mathematics.LinearAlgebra
' The delegate classes reside in the Extreme.Mathematics 
' namespace.
Imports Extreme.Mathematics

Namespace Extreme.Numerics.QuickStart.VB
    ' Illustrates operations on Vector objects from the
    ' Extreme.Mathematics.LinearAlgebra namespace of the Extreme Optimization
    ' Numerical Libraries for .NET.
    Module VectorOperations

        Sub Main()
            ' For details on the basic workings of Vector 
            ' objects, including constructing, copying and
            ' cloning vectors, see the BasicVectors QuickStart
            ' Sample.
            '
            ' Let's create some vectors to work with.
            Dim v1 = Vector.Create(New Double() {1, 2, 3, 4, 5})
            Dim v2 = Vector.Create(New Double() {1, -2, 3, -4, 5})
            Dim v3 = Vector.Create(New Double() {3, 2, 1, 0, -1})
            ' This one will hold results.
            Dim v As Vector(Of Double)

            '
            ' Vector Arithmetic
            '
            ' The Vector class defines static methods for
            ' addition and subtraction:
            Console.WriteLine("v1 = {0:F4}", v1)
            Console.WriteLine("v2 = {0:F4}", v2)
            Console.WriteLine("Basic arithmetic:")
            v = Vector.Negate(v1)
            Console.WriteLine("-v1 = {0:F4}", v)
            v = Vector.Add(v1, v2)
            Console.WriteLine("v1 + v2 = {0:F4}", v)
            v = Vector.Subtract(v1, v2)
            Console.WriteLine("v1 - v2 = {0:F4}", v)
            ' Vectors can only be multiplied or divided by
            ' a real number. For dot products, see the
            ' DotProduct method.
            v = Vector.Multiply(5, v1)
            Console.WriteLine("5 * v1 = {0:F4}", v)

            ' You can also apply these methods to Vector objects.
            ' In this case, they change the first operand.
            Console.WriteLine("v3 = {0:F4}", v3)
            v3.AddInPlace(v1)
            ' Note that this is different from the += operator!
            ' The += operator creates a new Vector object, 
            ' whereas the Add method above does not.
            Console.WriteLine("v3+v1 -> v3 = {0:F4}", v3)
            ' This method is overloaded so you can directly
            ' add a scaled vector:
            v3.AddScaledInPlace(-2, v1)
            Console.WriteLine("v3-2v1 -> v3 = {0:F4}", v3)
            Console.WriteLine()

            '
            ' Norms, dot products, etc.
            '
            Console.WriteLine("Norms, dot products, etc.")
            ' The dot product is calculated in one of two ways:
            ' Using the static DotProduct method:
            Dim a As Double = Vector.DotProduct(v1, v2)
            ' Or using the DotProduct method on one of the two
            ' vectors:
            Dim b As Double = v1.DotProduct(v2)
            Console.WriteLine("DotProduct(v1, v2) = {0} = {0:F4}", _
                a, b)
            ' The Norm method returns the standard two norm 
            ' of a Vector:
            a = v1.Norm()
            Console.WriteLine("|v1| = {0}", a)
            ' .the Norm method is overloaded to allow other norms,
            ' including the one-norm:
            a = v1.Norm(1)
            Console.WriteLine("one norm(v1) = {0}", a)
            ' ...the positive infinity norm, which returns the
            ' absolute value of the largest component:
            a = v1.Norm(Double.PositiveInfinity)
            Console.WriteLine("+inf norm(v1) = {0}", a)
            ' ...the negative infinity norm, which returns the
            ' absolute value of the smallest component:
            a = v1.Norm(Double.NegativeInfinity)
            Console.WriteLine("-inf norm(v1) = {0}", a)
            ' ...and even the zero norm, which simply returns
            ' the number of components of the vector:
            a = v1.Norm(0)
            Console.WriteLine("zero-norm(v1) = {0}", a)
            ' You can get the square of the two norm with the
            ' NormSquared method.
            a = v1.NormSquared()
            Console.WriteLine("|v1|^2 = {0}", a)
            Console.WriteLine()

            '
            ' Largest and smallest elements
            '
            ' The Vector class defines methods to find the
            ' largest or smallest element or its index.
            Console.WriteLine("v2 = {0:F4}", v2)
            ' The Max method returns the largest element:
            Console.WriteLine("Max(v2) = {0}", v2.Max())
            ' The AbsoluteMax method returns the element with
            ' the largest absolute value.
            Console.WriteLine("Absolute max(v2) = {0}", _
                v2.AbsoluteMax())
            ' The Min method returns the smallest element:
            Console.WriteLine("Min(v2) = {0}", v2.Min())
            ' The AbsoluteMin method returns the element with
            ' the smallest absolute value.
            Console.WriteLine("Absolute min(v2) = {0}", _
                v2.AbsoluteMin())
            ' Each of these methods has an equivalent method
            ' that returns the zero-based index of the element 
            ' instead of its value, for example:
            Console.WriteLine("Index of Min(v2) = {0}", _
                v2.MinIndex())

            ' Finally, the Map method lets you apply
            ' an arbitrary function to each element of the
            ' vector:
            v3.Map(AddressOf Math.Exp)
            Console.WriteLine("Exp(v3) = {0:F4}", v3)
            ' There is also a static method that returns a 
            ' new Vector object:
            v = Vector.Map(AddressOf Math.Exp, v3)

            Console.Write("Press Enteruner key to exit...")
            Console.ReadLine()
        End Sub

    End Module

End Namespace