#include <iostream>
#include <cmath>
// Función para imprimir una matriz
void imprimirMatriz(float matriz[][3], int filas, int columnas) {
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
std::cout << matriz[i][j] << " ";
}
std::cout << std::endl;
}
}
// Función para calcular la matriz inversa
void matrizInversa(float matriz[][3], int n) {
// Crear una matriz identidad del mismo tamaño que la matriz original
float matrizIdentidad[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
// Realizar operaciones de eliminación gaussiana para convertir la matriz original en la matriz identidad
for (int i = 0; i < n; i++) {
float pivote = matriz[i][i];
// Dividir la fila por el pivote para hacer el elemento diagonal igual a 1
for (int j = 0; j < n; j++) {
matriz[i][j] /= pivote;
matrizIdentidad[i][j] /= pivote;
}
// Restar múltiplos de la fila actual a las demás filas para hacer los elementos debajo y encima del pivote igual a 0
for (int k = 0; k < n; k++) {
if (k != i) {
float factor = matriz[k][i];
for (int j = 0; j < n; j++) {
matriz[k][j] -= factor * matriz[i][j];
matrizIdentidad[k][j] -= factor * matrizIdentidad[i][j];
}
}
}
}
// Imprimir la matriz inversa
std::cout << "Matriz inversa:" << std::endl;
imprimirMatriz(matrizIdentidad, n, n);
}
int main() {
// Definir la matriz original
float matriz[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// Calcular la matriz inversa
matrizInversa(matriz, 3);
return 0;
}