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