MetodoGausJordan-25206bc6

La App Makers

Este articulo esta destinado a Matemáticos y Programadores. Primero explicaremos con un ejemplo el método de Gaus-Jordan, luego implementaremos el código en C++ y por ultimo mostraremos un ejemplo usando este código.

Teoría método de Gauss-Jordan

El método de Gauss-Jordan utiliza operaciones con matrices para resolver sistemas de ecuaciones de n numero de variables.
Para aplicar este método solo hay que recordar que cada operación que se realice ,se aplicara a toda la fila o a toda la columna en su caso.
El objetivo de este método es tratar de convertir la parte de la matriz donde están los coeficientes de las variables en una matriz identidad. Esto se logra mediante simples operaciones de suma, resta y multiplicación.
El procedimiento es el siguiente:
Primero se debe tener ya el sistema de ecuaciones que se quiere resolver y que puede ser de n numero de variables por ejemplo:

Se acomodan los coeficientes y los resultados en una matriz:

En el ejemplo, el -3 de la primera matriz se tiene que convertir en un 1, según la matriz identidad, así que hay que dividir entre -3, pero como una operación se aplica a toda la fila, entonces toda la primera fila se tiene que dividir entre –3

Después, como se ve en la matriz identidad, hay que hacer 0 toda la columna debajo del 1, y se hace multiplicando por algo la fila de arriba y sumándola a la fila de abajo.
En este caso, se multiplica por -4 la fila de arriba y se suma con la correspondiente posición de la fila de abajo:

Para hacer cero el siguiente renglón simplemente hay que multiplicar por 1 al primer renglón sumarlo al tercero:

El siguiente paso para lograr una matriz identidad es obtener el siguiente 1, que en este caso iría en donde esta el 5 en la segunda fila.Para lograrlo hay que dividir toda la segunda fila entre 5:

Después se tienen que hacer 0 los que están arriba y abajo del 1, que en este caso sería, para el que esta arriba R2+R1:

Ahora hay que hacer cero la posición a12. En este caso con hacer R2+R1 es suficiente:

Dividir entre 2 R3 nos permite encontrar el otro 1, el de la posición a33:

Ahora necesitamos ceros en las posiciones a13 y a23. Dividir entre R3 y sumarlo a R1 nos permitirá encontrar uno de ellos:

El último cero lo logramos multiplicando por -⅓R3 y sumándolo a R2.

Al encontrar la matriz identidad se encuentra la solución del sistema de ecuaciones, pues esto se traduce a:

las cuales resuelven el sistema de ecuaciones de forma simultánea. La comprobación es la siguiente:

Implementación de Código

Para resolver  sistemas de ecuaciones de primer grado con una o más incógnitas por el método Gauss-Jordan. (ver en móvil de  forma horizontal)

#include <iostream>
#include <iomanip>
#include <math.h>

using namespace std;

char variables[] = {'p','q','s','t','u','v','w','x','y','z'};
char eleccion;
int n;
float aux;
int main(){   
    //Establecer precisión y escribir valores de punto flotante en notación de punto fijo
    cout<< setprecision(3)<< fixed;

  cout<<"----------------------------------------------------"<<endl;
    cout<<"---------Resolucion de Sitemas de Ecuaciones--------"<<endl;
    cout<<"----------------------------------------------------"<<endl;
    cout<<"Ingrese la cantidad de Incognitas: ";
  cin>>n;
    float a[n+1][n+2], x[n+1];

    //Leyendo los datos de incognitas e resultados de la matriz
  for(int i = 1; i <= n; i++){
        cout<<"nEcuacion "<<i<<endl;
    for(int j = 1; j <= n+1; j++){
      if(j <= n){
                cout<<"     f"<<i<<" ("<<variables[j]<<") = ";
            }else{
                cout<<"     Resultado = ";
            }
            cin>>a[i][j];
            while(a[i][j] == 0 && i == j){
                cout<<"Error. El valor de esta incognita no puede ser 0."<<endl;
                cout<<"Desea corregir el error (S/N): ";
                cin>>eleccion;
                if(eleccion == 'S' || eleccion == 's'){
                    cout<<"Ingrese Correctamente= ";
                    cin>>a[i][j];
                }else{
                    return 0;
                }
            }
    }
  }
    //Aplicando la Eliminacion de Gauss Jordan
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            if(i!=j){
                aux = a[j][i]/a[i][i];
                for(int k = 1; k <= n+1; k++){
                    a[j][k] = a[j][k] - aux*a[i][k];
                }
            }
        }
    }
    
    //Mostrando Soluciones
    cout<<"nSoluciones: "<<endl;
    for(int i = 1; i <= n; i++){
        cout<<"("<<variables[i]<<") = "<<a[i][n+1]/a[i][i]<<endl;
    }
    return 0;
}

Y para  los siguientes  ingreso de datos de entrada, el resultado será:

Para  ver o descargarlo de GitHub:

Haz clic aquí.

Espero que les sirva Matemáticos. Saludos…

  • Tutorial
  • Programas, aplicaciones | Otros
1 Comentario
  1. Mikel
    Mikel 2 meses

    muy buen tuto para matemáticos y programadores

    0

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Nuevo informe

Cerrar

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account