En este enlace:
se propone código C++ para calcular la inversa de una matriz NxN. El cálculo del determinante se usa para decidir si se ejecuta o no dicho código porque si el determinante es cero la matriz no es invertible.
En Linux, desempaqueten, muevánse al directorio INVERSA, compilen y ejecuten (también pueden usar geany) con:
g++ inversa.c++ -o inversa ./inversa
El resultado será:
Imprime la matriz de origen 1 2 3 4 2 1 5 6 3 5 1 7 4 6 7 1 Imprime la matriz inversa -1.205426 0.507752 0.236434 0.120155 0.507752 -0.368217 0.019380 0.042636 0.236434 0.019380 -0.158915 0.050388 0.120155 0.042636 0.050388 -0.089147
Ahora, modifiquen la última fila del archivo datos.in
por esta:
3 5 1 7
para tener un sistema linealmente dependiente. El resultado será:
Imprime la matriz de origen 1 2 3 4 2 1 5 6 3 5 1 7 3 5 1 7 La matriz no tiene inversa
Este código es portable; tanto en Linux como en Windows. Para que pueda visualizarse el resultado en Windows es necesario colocar antes de:
return 0;
las instrucciones siguientes:
cout << “Pulse cualquier tecla para continuar…\n”;
cin.get();
Con el Dev-C++ (para Windows), simplemente abran el archivo inversa.c++ y modifíquenlo tal como se señala anteriormente. Este se compila y ejecuta en el Dev-C++ con F9.

Funciona de maravilla, mil y mil gracias.
Gracias por tu comentario.
Saludos
No me va tio :S
es decir me va pero no me deja visualizarlo y pongo el código ese de:
cout << “Pulse cualquier tecla para continuar…\n”;
cin.get();
y no me compila
Entonces el cin.get(); cámbialo por:
system (“pause”);
Debería compilar.
Genius
gran aporte me ayudo a entender muy bien el algoritmo de gauss…. THX!!!!
Gracias a ti por tu comentario.
Saludos
estoy teniendo problemas con el programa, ya que en ocasiones se utiliza por ejemplo L[n], pero si el tamaño de la matriz es n, lo indices solo pueden ir de 0 a n-1. He sustituido todas las n, por n-1 y mas o menos funciona, de hecho el determinante lo calcula bien, pero a la hora de hacer la inversa, no sale. Agradeceria muchisimo tu contestacion
Cuando dices que la inversa “no sale” probablemente es que el determinante es muy pequeño (casi cero). Eso significa que la matriz no está muy bien condicionada. Es ese el caso?
si, pero aun asi, si pongo que X[n-2] = a[n-2][n-1]/a[n-2][n-2] en vez de X[n-1] = a[n-1][n]/a[n-1][n-1] que es lo que viene en el codigo, para solucionar lo del indice que he comentado antes, entonces el determinante, en este caso de 5×5 lo genera bien, pero deja la ultima columna y la ultima fila a 0, es decir, me faltan esos valores
No sé si entiendo lo que quieres hacer pero si estás modificando mi código para que los índices comiencen desde 1 y no desde cero entonces es a tu riesgo los resultados que obtengas. Yo lo programé en C++ y si lo quieres para cualquier otro lenguaje tendrás que buscarte un libro de análisis numérico; tal como hice yo. El determinante te da bien porque la complejidad de la programación es baja. Pero la inversa requiere un mayor esfuerzo de programación pero si tienes mi código como referencia no te será difícil encontrar por tu cuenta el resultado correcto. Plánteate una matriz más pequeña (3×3, por ejemplo) y ejecútala manualmente en pseudo código y verás que encuentras como tienen que variar los índices.
Saludos
Al contrario, al restarles 1 los indices van de 0 a n-1. Solo he cambiado las matrices de punteros por vectores de n elementos. Si compilo el codigo tal cual (sin restar 1 a las n’s) me da error al intentar aceder al elemento n. Se que es dificil de explicar… Te agradezco enormemente tu ayuda, y por supuesto tu codigo