[TOC]
Imports System
Imports CenterSpace.NMath.Core
Imports CenterSpace.NMath.Matrix
Namespace CenterSpace.NMath.Matrix.Examples.VisualBasic
' A .NET example in VB.NET demonstrating the features of the eigenvalue decomposition classes.
Module EigDecompExample
Sub Main()
' A general m x n system with random entries.
Dim RNG As New RandGenUniform(-1, 1)
RNG.Reset(&H75)
Dim Rows As Integer = 4
Dim Cols As Integer = 4
Dim A As New FloatMatrix(Rows, Cols, RNG)
' Construct an eigenvalue decomposition of A.
Dim Decomp As New FloatEigDecomp(A)
' Is it good?
Console.WriteLine()
Console.Write("Good? ")
Console.WriteLine(Decomp.IsGood)
' Look at the eigenvalues
Console.WriteLine()
Console.Write("Eigenvalues = ")
Console.WriteLine(Decomp.EigenValues)
' Look at the left eigenvectors
Console.WriteLine()
Console.Write("Left eigenvectors = ")
Console.WriteLine(Decomp.LeftEigenVectors)
' Look at the right eigenvectors
Console.WriteLine()
Console.Write("Right eigenvectors = ")
Console.WriteLine(Decomp.RightEigenVectors)
' The class FloatEigDecompServer allows more control over the computation.
' Suppose that you are only interested in the singular values, not the
' vectors. You can configure a DoubleComplexSVDecompServer object to
' compute just the singular values.
Dim EigServer As New FloatEigDecompServer()
EigServer.ComputeLeftVectors = False
EigServer.ComputeRightVectors = False
EigServer.Balance = BalanceOption.Permute
Decomp = EigServer.Factor(A)
Console.WriteLine()
Console.Write("Number of left vectors computed: ")
Console.WriteLine(Decomp.NumberOfLeftEigenVectors) ' 0
Console.WriteLine()
Console.Write("Number of right vectors computed: ")
Console.WriteLine(Decomp.NumberOfRightEigenVectors) ' 0
' Is it good?
Console.WriteLine()
Console.Write("Good? ")
Console.WriteLine(Decomp.IsGood)
' Look at the eigenvalues
Console.WriteLine()
Console.Write("Eigenvalues = ")
Console.WriteLine(Decomp.EigenValues)
Console.WriteLine()
Console.WriteLine("Press Enter Key")
Console.Read()
End Sub
End Module
End Namespace
[TOC]