Matrices y determinantes

Estamos desarrollando un programa en Java que trabaja con matrices. Nos gustaría que alguien nos facilitara los algoritmos para el calculo de la inversa de una matriz, así como del determinante. Las matrices son de cualquier orden, pero siempre cuadradas.
El algoritmo nos sirve tanto si esta hecho para C, como para Pascal, Java,...
Respuesta
Existen diferentes soluciones a los problemas que planteas. Ahí va la primera entrega:
La inversa de una matriz es aquella tal que el resultado de multiplicar la matriz original por la inversa (que es la que queremos calcular) es una matriz unidad (matriz diagonal en la que la diagonal principal está formada por unos). Digamos que la matriz original es A, la inversa que calculamos es I, y la matriz unidad es U. La matriz A es una matriz n*m., la inversa, m*n, y la unidad es n*n El primer método para calcular la inversa de una matriz consiste en resolver el siguiente sistema de ecuaciones:
A[1,1] * I[1,1] + A[1,2] * I[2,1] + ... + A[1,m] * I[m,1] = 1 = U[1,1]
A[1,1] * I[1,2] + A[1,2] * I[2,2] + ... + A[1,m] * I[m,2] = 0 = U[1,2]
A[1,1] * I[1,3] + A[1,2] * I[2,3] + ... + A[1,m] * I[m,3] = 0 = D[1,3]
...
A[1,1] * I[1,n] + A[1,2] * I[2,n] + ... + A[1,m] * I[m,n] = 0 = D[1,n]
A[2,1] * I[1,1] + A[2,2] * I[2,1] + ... + A[2,m] * I[m,1] = 0 = D[2,1]
A[2,1] * I[1,2] + A[2,2] * I[2,2] + ... + A[2,m] * I[m,2] = 1 = D[2,2]
A[2,1] * I[1,3] + A[2,2] * I[2,3] + ... + A[2,m] * I[m,3] = 0 = D[2,3]
...
A[2,1] * I[1,n] + A[2,2] * I[2,n] + ... + A[2,m] * I[m,n] = 0 = D[2,n]
...
...
A[n,1] * I[1,1] + A[n,2] * I[2,1] + ... + A[n,m] * I[m,1] = 0 = D[n,1]
A[n,1] * I[1,2] + A[n,2] * I[2,2] + ... + A[n,m] * I[m,2] = 1 = D[n,2]
A[n,1] * I[1,3] + A[n,2] * I[2,3] + ... + A[n,m] * I[m,3] = 0 = D[n,3]
...
A[n,1] * I[1,n] + A[n,2] * I[2,n] + ... + A[n,m] * I[m,n] = 0 = D[n,n]
Como puedes ver, es un sistema con n*m ecuaciones y m*n incógnitas, que son los I[fila,columna]. Si el sistema de ecuaciones es compatible y determinado, tené una única solución, y ésta forma la matriz inversa. La verdad es que esto puede ser un poco plasta, pero es un método general para matrices n*m.
Para matrices cuadradas, hay un método más sencillo. Supongamos que tenemos una matiz cuadrada A de dimensión n. Vamos a crear una matriz unidad U de dimensiones n*n. El método consiste en sunar a las líneas de la matriz original combinaciones lineales del esto de las filas hasta conseguir que A sea una matriz unidad. A la vez, sumamos las mismas combinaciones lineales a la matriz U. Cuando A sea una matriz unidad, en U tendremos la matriz inversa. Por supuesto, sólo para el caso de que la matriz inversa exista.
Intenta digerir esto. Si no lo consigues, ya te pasaré elalgoritmo (cuando lo escriba).
Dentro de poco (cuando vuelva a tener otro rato), la segunda entrega.
SkullGirl

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas