Calcular una Matriz Inversa en Java no es tan sencillo, aunque si lo analizas es muy simple, aquí te

dejo un programa que hizo un amigo:
import java.util.*;
public class Matriz{
public static double[][] matrizInversa(double[][] matriz) {
double det=1/determinante(matriz);
double[][] nmatriz=matrizAdjunta(matriz);
multiplicarMatriz(det,nmatriz);
return nmatriz;
}
public static void multiplicarMatriz(double n, double[][] matriz) {
for(int i=0;i<matriz.length;i++)
for(int j=0;j<matriz.length;j++)
matriz[i][j]*=n;
}
public static double[][] matrizAdjunta(double [][] matriz){
return matrizTranspuesta(matrizCofactores(matri…
}
public static double[][] matrizCofactores(double[][] matriz){
double[][] nm=new double[matriz.length][matriz.length];
for(int i=0;i<matriz.length;i++) {
for(int j=0;j<matriz.length;j++) {
double[][] det=new double[matriz.length-1][matriz.length-1]…
double detValor;
for(int k=0;k<matriz.length;k++) {
if(k!=i) {
for(int l=0;l<matriz.length;l++) {
if(l!=j) {
int indice1=k<i ? k : k-1 ;
int indice2=l<j ? l : l-1 ;
det[indice1][indice2]=matriz[k][l];
}
}
}
}
detValor=determinante(det);

} } . if(j<i) indice=j. i++){ double[][] nm=new double[matriz. i++){ for(int j=0. k<matriz. for(int i=0.length-1][matriz.pow(-1. j<matriz. j++) nuevam[i][j]=matriz[j][i]. } double suma=0. else if(j>i) indice=j-1.length. } } return nm. j<matriz.length. } return nuevam.length-1]… for(int j=0. if(matriz. k++){ int indice=-1. nm[indice][k-1]=matriz[j][k]. i<matriz.length. } public static double[][] matrizTranspuesta(double [][] matriz){ double[][]nuevam=new double[matriz[0]. } public static double determinante(double[][] matriz){ double det. i+j+2). i<matriz. j++){ if(j!=i){ for(int k=1.length==2){ det=(matriz[0][0]*matriz[1][1])-(matri… return det. for(int i=0.length].length.nm[i][j]=detValor * (double)Math.length.length][matriz.

} public static void imprimirMatriz(double[][] mat) { for(int i=0.-1.0 } }.-2.-1. System.1.30.1.0. {1. {-1.0 }.1.0. else suma-=matriz[i][0] * determinante(nm). System. {1.0 } }.0.0.println( determinante(deltaD)/determinante( deltaS)).0.length.-1.println( determinante(deltaE)/determinante( deltaS)). System.0.1.0 } }. {14.-1.1.30.1.1 }.0.println( determinante(deltaC)/determinante( deltaS)).0.-1 }.0.0.-1.0 } }. System.1.30 }.1.1 }.0 }.1. System. {0.0 }. {0.0 }.0 }.0. {0.0.-2. double[][] deltaB= { {1.out.1.0.0.-2.out.0. {1.1.0.1.0 }. {0.1.0.10. {1.out.1. {0.10.0.14.1.println( determinante(deltaB)/determinante( deltaS)). {10.0. } return suma.10 } }.0.1. {0.1.1. {0.0 } }.30.0 }.toString(mat… } } public static void main(String[]args){ double[][] deltaS= { {1.-1. {1.-2. {0.out.1 }.1.1.1.0.0.1 }.1.0.1.1 }.0.14.out. {0.1.1. {0.1 }.1.1. } } .1.1.0. double[][] deltaA= { {30.i++) { System.-1.1 }.1.1.out.0.1 }.0.println( determinante(deltaA)/determinante( deltaS)).} if(i%2==0) suma+=matriz[i][0] * determinante(nm).0 }.1.0. double[][] deltaC= { {1.14.0.14 }. {0.0 }.-1.1. {0. double[][] deltaD= { {1.0.i<mat.1 }.1.println(Arrays.-2. {0. {0.0 }.1.1 }.1 }.1.10. double[][] deltaE= { {1.1. {1. {0.1.

Sign up to vote on this title
UsefulNot useful