#include <iostream>
using namespace std;
int main()
{
float matriz[3][3]={},matriz2[3][3]={};
float MI[3][3]={1,0,0,0,1,0,0,0,1},MI2[3][3]={};
cout<<"Metodo de Gauss Jordan"<<endl;
for (int i=0 ; i<3 ; i++)
{
cout<<"Ingrese los valores para la fila "<<i+1<<endl;
for (int j=0 ; j<3 ; j++)
{
cin>>matriz[i][j];
matriz2[i][j]=matriz[i][j];
}
cout<<endl;
}
if (matriz[0][0]==0 or matriz[1][1]==0 or matriz[2][2]==0)
{
cout<<"La matriz no tiene inversa";
exit (0);
}
else
{
system("cls");
cout<<"Metodo de Gauss Jordan"<<endl;
cout<<"La matriz a calcular es:"<<endl;
for (int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<endl;
}
}
cout<<endl;
//Se inicia el paso 1, matriz[2][0]*matriz[1][1]
if (matriz[2][0]!=0)
{
for (int i=0 ; i<3 ; i++)
{
matriz2[2][i]= ((matriz[2][0]*-1)* matriz[1][i])+(matriz[1][1]*matriz[2][i]);
MI2[2][i]= ((matriz[2][0]*-1)*MI[2][i])+(matriz[1][1]*MI[2][i]);
}
for (int i=0 ; i<3 ; i++)
{
matriz[2][i]=matriz2[2][i];
MI[2][i]= MI2[2][i];
}
}
cout<<"Paso 1: "<<endl;
for (int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<" ";
for (int k=0 ; k<3 ; k++)
{
cout<<MI[i][k]<<" ";
}
cout<<endl;
}
//Se termina de calcular el paso 1
//Se inicia el paso 2, matriz[1][0]*matriz[0][0]
if (matriz[1][0]!=0)
{
for (int i=0 ; i<3 ; i++)
{
matriz2[1][i]= ((matriz[1][0]*-1)* matriz[0][i])+(matriz[0][0]*matriz[1][i]);
MI2[1][i]= ((matriz[1][0]*-1)*MI[1][i])+(matriz[0][0]*MI[1][i]);
}
for (int i=0 ; i<3 ; i++)
{
matriz[1][i]=matriz2[1][i];
MI[1][i]= MI2[1][i];
}
}
cout<<"Paso 2: "<<endl;
for (int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<" ";
for (int k=0 ; k<3 ; k++)
{
cout<<MI[i][k]<<" ";
}
cout<<endl;
}
//Se termina de calcular el paso 2
//Se inicia el paso 3, matriz[2][1]*matriz[1][1]
if (matriz[2][1]!=0)
{
for (int i=0 ; i<3 ; i++)
{
matriz2[2][i]= ((matriz[2][1]*-1)* matriz[1][i])+(matriz[1][1]*matriz[2][i]);
MI2[2][i]= ((matriz[2][1]*-1)*MI[2][i])+(matriz[1][1]*MI[2][i]);
}
for (int i=0 ; i<3 ; i++)
{
matriz[2][i]=matriz2[2][i];
MI[2][i]= MI2[2][i];
}
}
cout<<"Paso 3: "<<endl;
for (int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<" ";
for (int k=0 ; k<3 ; k++)
{
cout<<MI[i][k]<<" ";
}
cout<<endl;
}
//Se termina de calcular el paso 3
//Se inicia el paso 4, matriz[0][2]*matriz[1][1]
if (matriz[0][2]!=0)
{
for (int i=0 ; i<3 ; i++)
{
matriz2[0][i]= ((matriz[0][2]*-1)* matriz[1][i])+(matriz[1][1]*matriz[0][i]);
MI2[0][i]= ((matriz[0][2]*-1)*MI[0][i])+(matriz[1][1]*MI[0][i]);
}
for (int i=0 ; i<3 ; i++)
{
matriz[0][i]=matriz2[0][i];
MI[0][i]= MI2[0][i];
}
}
cout<<"Paso 4: "<<endl;
for (int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<" ";
for (int k=0 ; k<3 ; k++)
{
cout<<MI[i][k]<<" ";
}
cout<<endl;
}
//Se termina de calcular el paso 4
//Se inicia el paso 5, matriz[1][2]*matriz[2][2]
if (matriz[1][2]!=0)
{
for (int i=0 ; i<3 ; i++)
{
matriz2[1][i]= ((matriz[1][2]*-1)* matriz[2][i])+(matriz[2][2]*matriz[1][i]);
MI2[1][i]= ((matriz[1][2]*-1)*MI[1][i])+(matriz[2][2]*MI[1][i]);
}
for (int i=0 ; i<3 ; i++)
{
matriz[1][i]=matriz2[1][i];
MI[1][i]= MI2[1][i];
}
}
cout<<"Paso 5: "<<endl;
for (int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<" ";
for (int k=0 ; k<3 ; k++)
{
cout<<MI[i][k]<<" ";
}
cout<<endl;
}
//Se termina de calcular el paso 5
//Se inicia el paso 6, matriz[0][1]*matriz[1][1]
if (matriz[0][1]!=0)
{
for (int i=0 ; i<3 ; i++)
{
matriz2[0][i]= ((matriz[0][1]*-1)* matriz[1][i])+(matriz[1][1]*matriz[0][i]);
MI2[0][i]= ((matriz[0][1]*-1)*MI[0][i])+(matriz[1][1]*MI[0][i]);
}
for (int i=0 ; i<3 ; i++)
{
matriz[0][i]=matriz2[0][i];
MI[0][i]= MI2[0][i];
}
}
cout<<"Paso 6: "<<endl;
for (int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz[i][j]<<" ";
}
cout<<" ";
for (int k=0 ; k<3 ; k++)
{
cout<<MI[i][k]<<" ";
}
cout<<endl;
}
//Se termina de calcular el paso 6
//inicia paso 7 convertir matriz 0,0 : 1,1 : 2,2 a 0
matriz2[0][0]=matriz[0][0]/matriz[0][0];
MI2[0][0]=MI[0][0]/MI[0][0];
matriz2[1][1]=matriz[1][1]/matriz[1][1];
MI2[1][1]=MI[1][1]/MI[1][1];
matriz2[2][2]=matriz[2][2]/matriz[2][2];
MI2[2][2]=MI[2][2]/MI[2][2];
cout<<"Matriz inversa:"<<endl;
for(int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<matriz2[i][j]<<" ";
}
cout<<endl;
}
cout<<"Matriz, metodo de Gauss Jordan:"<<endl;
for(int i=0 ; i<3 ; i++)
{
for (int j=0 ; j<3 ; j++)
{
cout<<MI2[i][j]<<" ";
}
cout<<endl;
}
return 0;
}