Metodo Iterativo Gauss-Seidel en Visual Basic
Un cordial saludo programadores y matemáticos a fin. En esta entrega hacemos mención a la resolución de ecuaciones simultaneas por métodos iterativos y es así que el método de Gauss-Seidel se acopla muy bien como una mejora al método de Jacobi, sin embargo la condicion fundamental que su diagonal principal debe ser mayor a las demas. Por todo lo expresado aqui presento un poco de teoria tomado de http://www.jldelafuenteoconnor.es/Clase_itera_2016.pdf en el cual se expresan algunos métodos más pero para este tema analizaremos solamente el mencionado.
La implementación en visual Basic 2015
Module Module1
Dim A(500, 500) As Single
Dim B(500, 500) As Single
Dim X(500, 500) As Single
Dim n, iter As Integer
Dim cError, Tol, sum As Double
Sub Main()
Console.BackgroundColor = ConsoleColor.White
Console.Clear()
Console.ForegroundColor = ConsoleColor.Black
Console.Title = "METODO ITERATIVO GAUSS-SEIDEL"
Console.Write(vbLf) 'Da un enter al titulo
Console.Write("" & vbTab & "METODO ITERATIVO GAUSS-SEIDEL")
Console.Write(vbLf)
Console.Write(vbLf)
Ingresar()
Presentar()
GSEIDEL()
End Sub
Sub Ingresar()
Console.Write("" & vbTab & "Ingrese el orden de la matriz: ", n)
n = Integer.Parse(Console.ReadLine())
'--------------------Lectura de la Matriz ---------
Console.WriteLine("" & vbLf & " * Ingrese los elementos de la matriz A : " & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To n
Console.Write("" & vbTab & "Elemento [{0},{1}] : ", i, j)
A(i, j) = Double.Parse(Console.ReadLine())
Next
Next
'-----------------------------Lee el vector columna B------------------------------
Console.WriteLine("" & vbLf & " * Ingrese los elementos del vector B : " & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To 1
Console.Write("" & vbTab & "Elemento [{0},{1}] : ", i, 1)
B(i, 1) = Double.Parse(Console.ReadLine())
Next
Next
''-----------------------------Tolerancia ------------------------------
Console.Write("" & vbLf & " * Ingrese la tolerancia : ", Tol)
Tol = Double.Parse(Console.ReadLine())
''-----------------Lee el vector de valor iteraciones--------------------
Console.Write("" & vbLf & " * Ingrese el número de iteraciones : ", iter)
iter = Integer.Parse(Console.ReadLine())
'' -----------------------Lee el vector de valores iterativos iniciales----
Console.WriteLine("" & vbLf & " * Ingrese valores iniciales para iterar : " & vbLf & "")
For i As Integer = 1 To n
Console.Write("" & vbTab & "Elemento [{0},{1}] : ", 1, i)
X(1, i) = Double.Parse(Console.ReadLine())
Next
End Sub
Sub Presentar()
'-----------Presentar la Matriz A en pantalla -------------------
Console.WriteLine("" & vbLf & " * La matriz A ingresada es : " & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To n
Console.Write("" & vbTab & "{0,2:F2}", A(i, j))
Next
Console.Write("" & vbLf & "")
Next
' -------------Presentar el vector B en pantalla-----------------------
Console.WriteLine("" & vbLf & " *El vector B ingresado es : " & vbLf & "")
For i As Integer = 1 To n
For j As Integer = 1 To 1
Console.Write("" & vbTab & "{0,2:f2}", B(i, 1))
Next
Console.Write("" & vbLf & "")
Next
End Sub
Sub GSEIDEL()
Console.WriteLine("" & vbLf & " * La solución del sistema : " & vbLf & "")
Console.Write("" & vbLf & " * Cálculo del Error:" & " Tolerancia = " & Tol)
Console.Write("" & vbLf & "------------------------------------------------")
Console.Write("" & vbLf & "")
For k As Integer = 1 To iter
sum = 0
For i As Integer = 1 To n
sum = B(i, 1)
For j As Integer = 1 To n
If i <> j Then
sum = sum + (-1) * A(i, j) * X(1, j)
End If
Next j
sum = sum / A(i, i)
cError = cError + Math.Abs(sum - X(1, i))
X(1, i) = sum
Console.Write("" & vbTab & "{0,2:f5}" & " i" & "[" & k & "]", cError)
cError = cError / n
Next i
Console.Write("" & vbLf & "")
If cError < Tol Then
Console.Write("" & vbLf & " * Solución:")
Console.Write("" & vbLf & "")
Console.Write("" & vbLf & "")
For r As Integer = 1 To n
For p As Integer = 1 To 1
Console.Write("" & vbTab & "X" & r & "=" & "{0,2:F3}" & " i" & "[" & k & "]", X(p, r))
Next
Console.Write("" & vbLf & "")
Next
Console.Write("" & vbLf & " Fín del cálculo")
Exit For
End If
Next k
Console.ReadLine()
End Sub
End Module
De acuerdo al ejemplo corremos el programa y obtenemos:
Y llegamos al final, un gusto y comentarios y/o preguntas a mi correo, nos vemos






creperebgi_Las Vegas David Townes WinScan2PDF 8.11
ResponderEliminarWindscribe
Sketchup
iZotope VocalSynth
fitugwardvirb