Programa para el Método de Gauss Seidel (Matemática Computacional)

El método de Gauss Seidel es un proceso iterativo para resolver un sistema cuadrado de (múltiples) ecuaciones lineales. También se le conoce de forma destacada como método de ‘Liebmann’ . En cualquier método iterativo de análisis numérico, cada intento de solución se inicia con una solución aproximada de una ecuación y se realiza una iteración hasta que se obtiene la precisión deseada. En el método de Gauss-Seidel, los valores más recientes se utilizan en iteraciones sucesivas. El método de Gauss-Seidel permite al usuario controlar el error de redondeo.
El método de Gauss Seidel es muy similar al método de Jacobi y se denomina método de desplazamiento sucesivo.. (Dado que los valores obtenidos recientemente se utilizan en las ecuaciones posteriores). Los criterios de convergencia de Gauss Seidel dependen de las dos propiedades siguientes: (debe satisfacerse). 
 

  • La array es diagonalmente dominante.
  • La array es simétrica y positiva.

Pasos involucrados: 
 

  • Paso 1: Calcular el valor de todas las ecuaciones lineales para Xi. (La array inicial debe estar disponible)
  • Paso 2: Calcule cada Xi y repita los pasos anteriores.
  • Paso 3: utilice el error aproximado relativo absoluto después de cada paso para comprobar si el error se produce dentro de una tolerancia preespecificada.

Código para el método de Gauss Seidel: 
 

C

#include <stdio.h>
 
int main()
{
    int count, t, limit;
    float temp, error, a, sum = 0;
    float matrix[10][10], y[10], allowed_error;
     
    printf("\nEnter the Total Number of Equations:\t");
    scanf("%d", & limit);
    // maximum error limit till which errors are considered,
    // or desired accuracy is obtained)
     
    printf("Enter Allowed Error:\t");
    scanf("%f", & allowed_error);
    printf("\nEnter the Co-Efficients\n");
     
    for(count = 1; count < = limit; count++)
    {
        for(t = 1; t < = limit + 1; t++)
        {
            printf(" Matrix[%d][%d] = " , count, t);
            scanf(" %f" , & matrix[count][t]);
        }
    }
     
    for(count = 1; count < = limit; count++)
    {
        y[count] = 0;
    }
    do
    {
        a = 0;
        for(count = 1; count < = limit; count++)
        {
            sum = 0;
            for(t = 1; t  a)
            {
                a = error;
            }
            y[count] = temp;
            printf("\nY[%d]=\t%f", count, y[count]);
        }
        printf("\n");
    }
    while(a > = allowed_error);
     
    printf("\n\nSolution\n\n");
     
    for(count = 1; count < = limit; count++)
    {
        printf(" \nY[%d]:\t%f" , count, y[count]);
    }
    return 0;
}

Producción: 
 

Enter the Total Number of Equations:   1
Enter Allowed Error:   0.5

Enter the Co-Efficients
Matrix[1][1] = 1
Matrix[1][2] = 4

Y[1]=   4.000000

Y[1]=   4.000000

Solution

Y[1]:   4.000000  

ventajas: 
 

  • Proceso de iteración más rápido. (que otros métodos)
  • Simple y fácil de implementar.
  • Bajos requisitos de memoria.

Desventajas: 
 

  • Tasa de convergencia más lenta. (que otros métodos)
  • Requiere un gran número de iteraciones para alcanzar el punto de convergencia.

Publicación traducida automáticamente

Artículo escrito por Anirban166 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *