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