Ej. 3 Matrices inversas

El ejercicio nos pide lo siguiente:

Realiza un programa que convierta una matriz a su matriz inversa.

Solución

Para la resolución de este programa, se utilizarán matrices, así como operaciones aritméticas y algebraicas básicas.

Primero declararemos nuestros variables <int> (i,j,k,n) y nuestras matrices Original(A) e Identidad (I), y las variables pivote y aux, recordar que las matrices se especifican con la siguiente sintaxis “float Matriz [n][n”]. Posterior a ello, pediremos al usuario un valor de n para el tamaño de nuestras matrices. Después de eso, rellenáramos el valor de nuestra matriz A (matriz ingresada) e I (matriz identidad) con un ciclo for, en el caso de la matriz I se utilizará un if para rellenar con 1 y o las filas y columnas correspondientes. A continuación, se muestran las matrices A e I. Por último, se realizan operaciones mediante la variable pivote y la variable aux, esto con el objetivo de cambiar las filas y columnas de las matrices A e I. Obtenidas las matrices, la matriz I será por consiguiente la matriz inversa de la matriz A dada originalmente, por ello se muestra al último la matriz I.

Se muestra el programa para convertir una matriz a su matriz inversa:

#include <iostream>

using namespace std;

int main()

{

//Matrices

short int i,j,k,n;

cout << "Ingrese una valor para la matriz nxn: " << endl;

cin >> n;


float I[n][n],A[n][n], aux, pivote;


for(int i=0; i<n; i++){    

   for(int j=0; j<n; j++){

      cout << "Valores matriz: ";

      cin >> A[i][j];

      I[i][j] = 0 ;

      

      if(i==j){

      I[i][j]=1;

  }

   }

   cout << endl;

}


for(int i=0; i<n; i++){    

   for(int j=0; j<n; j++){

    cout << A[i][j] << " ";

   }

   cout << endl;

}


for(int i=0; i<n; i++){    

   for(int j=0; j<n; j++){

    cout << I[i][j] << " ";

   }

   cout << endl;

}




//Pivote

   for(int i=0;i<n;i++){

    pivote=A[i][i];

   

      for(int k=0;k<n;k++){

      A[i][k]=A[i][k]/pivote;

      I[i][k]=I[i][k]/pivote;

  }  

  for(int j=0;j<n;j++){

  if(i!=j){

  aux=A[j][i];

 

  for(int k=0;k<n;k++){

  A[j][k]=A[j][k]-aux*A[i][k];

  I[j][k]=I[j][k]-aux*I[i][k];

  }

  }

  }

   }

   

   for(int i=0;i<n;i++){

    for(int j=0;j<n;j++){

    cout<< I[i][j] << " ";

}

cout<< endl;

   }


}

Comentarios

Entradas populares