# VB LU Factorization Example

← All NMath Code Examples

```Imports System

Imports CenterSpace.NMath.Core
Imports Range = CenterSpace.NMath.Core.Range

Namespace CenterSpace.NMath.Core.Examples.VisualBasic

' A .NET example in Visual Basic showing how to use the LU factorization class to solve linear systems,
' and to compute matrix inverses, condition numbers and determinants.
Module LUFactorizationExampple

Sub Main()

Dim A As New DoubleMatrix("3x3 [2 1 1  4 1 0 -2 2 1]")
Dim lu As New DoubleLUFact(A)

Console.WriteLine()

' Check to see if the input matrix is singular.
If (lu.IsSingular) Then
Console.WriteLine("Sorry, A is singular.")
Return
End If

' A is not singular, so we can look at the LU components.
Console.WriteLine("L...")
Console.WriteLine(lu.L.ToTabDelimited())

Console.WriteLine("U...")
Console.WriteLine(lu.U.ToTabDelimited())

' And the permutation matrix P.
Console.WriteLine("P...")
Console.WriteLine(lu.P.ToTabDelimited())

' We can also compute the determinant and condition number.
Console.WriteLine("Determinant of A = {0}", lu.Determinant())

' We can choose to estimate the condition number (quick), or
' compute it directly (accurate). For small matrices these
' are usually the same.
Dim estCond As Double = lu.ConditionNumber(NormType.InfinityNorm, True)
Dim computedCond As Double = lu.ConditionNumber(NormType.OneNorm, False)
Console.WriteLine("Estimated condition number, infinity-norm = {0}", estCond.ToString("F3"))
Console.WriteLine("Computed condition number, 1-norm = {0}", computedCond.ToString("F3"))

' Finally, we can compute the inverse of A.
Console.WriteLine()
Console.WriteLine("A inverse =")
Console.WriteLine(lu.Inverse().ToTabDelimited())
Console.WriteLine()

' We can use the LU factorization to solve for one right-hand side.
Dim v As New DoubleVector("[8 11 3]")
Dim u As DoubleVector = lu.Solve(v)
Console.WriteLine("The solution, u, Au=v is...")
Console.WriteLine(u)
Console.WriteLine()

' Or we can solve for multiple right hand sides.
Dim B As New DoubleMatrix(3, 3)

' Set all the columns of B to be the vector v.
Dim i As Integer
For i = 0 To 2
B.Col(i)(Range.All) = v
Next

' Now solve for AX=B. The columns of A should have the same values as
' the vector u from above.
Dim X As DoubleMatrix = lu.Solve(B)
Console.WriteLine("The solution, X, to AX=B is...")
Console.WriteLine(X.ToTabDelimited())

Console.WriteLine()
Console.WriteLine("Press Enter Key")