Extreme Optimization >
Mathematics Library for .NET >
QuickStart Samples >
BasicVectors QuickStart Sample (VB.NET)
Extreme Optimization Mathematics Library for .NET
BasicVectors QuickStart Sample (VB.NET)
Illustrates the basic use of the Vector class
(Extreme.Mathematics.LinearAlgebra namespace) for working with vectors in Visual Basic .NET.
C# code Back
to QuickStart Samples
' The Vector class resides in the Extreme.Mathematics.LinearAlgebra namespace.
Imports Extreme.Mathematics.LinearAlgebra
Namespace Extreme.Mathematics.QuickStart.VB
' Illustrates the use of the Vector class in the
' Extreme.Mathematics.LinearAlgebra namespace of the Extreme Optimization
' Mathematics Library for .NET.
Module BasicVectors
Sub Main()
'
' Constructing vectors
'
' Option #1: specify the number of elements. All
' components are set to 0.
Dim v1 As Vector = New GeneralVector(5)
' Option #2: specify the components:
Dim v2 As Vector = New GeneralVector(1, 2, 3, 4, 5)
' Option #3: specify the components as a Double array.
' By default, the components are copied to a storage
' area internal to the Vector.
Dim components As Double() = _
New Double() {1, 2, 3, 4, 5}
Dim v3 As Vector = New GeneralVector(components)
' Option #4: same as above, but specify whether
' to copy the components, or use the array as
' internal storage.
Dim v4 As Vector = New GeneralVector(components, False)
' Changing a value in the original vector changes
' the resulting vector.
Console.WriteLine("v4 = {0}", v4)
components(3) = 1
Console.WriteLine("v4 = {0}", v4)
' Option #5: same as #3, but specify the length of
' the Vector. The remaining elements in the component
' array will be ignored.
Dim v5 As Vector = New GeneralVector(4, components)
' Option #6: same as #5, but specify whether
' to copy the components, or use the array as
' internal storage.
Dim v6 As Vector = New GeneralVector(4, components, False)
'
' Vector properties
'
' The Length property gives the number of components
' of a Vector:
Console.WriteLine("v1.Length = {0}", v1.Length)
' The Components property returns a Double array
' that contains the components of the vector.
' This is always a copy:
components = v2.GetComponents()
Console.WriteLine("Effect of shared storage:")
Console.WriteLine("v2(2) = {0}", v2(2))
components(2) = 1
Console.WriteLine("v2(2) = {0}", v2(2))
'
' Accessing vector elements
'
' The Vector class defines an indexer property that
' takes a zero-based index.
Console.WriteLine("Assigning with private storage:")
Console.WriteLine("v1(2) = {0}", v1(2))
' You can assign to this property:
v1(2) = 7
Console.WriteLine("v1(2) = {0}", v1(2))
' The vectors v4 and v6 had the copy parameter in the
' constructor set to false. As a result, they share
' their component storage. Changing one vector also
' changes the other:
Console.WriteLine("Assigning with shared storage:")
Console.WriteLine("v4(1) = {0}", v4(1))
v6(1) = 7
Console.WriteLine("v4(1) = {0}", v4(1))
' The SetValue method sets all components of a vector
' to the same value:
v1.SetValue(1)
Console.WriteLine("v1 = {0}", v1)
' The Zero method sets all components to 0:
v1.Zero()
Console.WriteLine("v1 = {0}", v1)
'
' Copying and cloning vectors
'
' A shallow copy of a vector constructs a vector
' that shares the component storage with the original.
' This is done using the ShallowCopy method:
Console.WriteLine("Shallow copy vs. clone:")
Dim v7 As Vector = v2.ShallowCopy()
' The clone method creates a full copy.
Dim v8 As Vector = v2.Clone()
' When we change v2, v7 changes, but v8 is left
' unchanged.
Console.WriteLine("v2(1) = {0}", v2(1))
v2(1) = -2
Console.WriteLine("v7(1) = {0}", v7(1))
Console.WriteLine("v8(1) = {0}", v8(1))
' We can give a vector its own component storage
' by calling the CloneData method:
Console.WriteLine("CloneData:")
v7.CloneData()
' Now, changing the original v2 no longer changes v7:
v2(1) = 4
Console.WriteLine("v7(1) = {0}", v7(1))
' The CopyTo method copies the components of a Vector
' to a variety of destinations. It may be a Vector:
Console.WriteLine("CopyTo:")
v6.CopyTo(v1)
Console.WriteLine("v6 = {0}", v6)
Console.WriteLine("v1 = {0}", v1)
' You can specify an index where to start copying
' in the destination vector:
v6.CopyTo(v1, 1)
Console.WriteLine("v1 = {0}", v1)
' Or you can copy to a Double array:
v6.CopyTo(components)
Console.Write("Press Enter key to exit...")
Console.ReadLine()
End Sub
End Module
End Namespace
Copyright 2004-2008,
Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M
Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual
Studio.NET, and the Visual Studio Logo are registered trademarks of Microsoft Corporation