Reverse of a matrix

0

Good, I'm doing a program that shows the inverse matrix, the determinant, the cofactors etc ... But I can not print the resulting matrix of each one on the screen. How can I call each function and draw the resulting matrix of each of the functions so that it is visually like a matrix? The code is as follows:

package inversamatriz;
import java.util.Scanner;

public class InversaMatriz {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int numCarx = 0;
        int numCary = 0;
        System.out.print("Introduzca el número de caracteres de filas de la primera matriz: ");
        numCarx = scan.nextInt();
        System.out.print("Introduzca el número de caracteres de columnas de la primera matriz: ");
        numCary = scan.nextInt();
        double M1[][] = new double[numCarx][numCary];
        for(int x=0; x<numCarx; x++){
            for(int i=0; i<numCary; i++){
                System.out.print("x"+(i+1)+" = ");
                M1[x][i]=scan.nextInt();
            }

        }
        System.out.print("Introduzca el número de caracteres de filas de la segunda matriz: ");
        numCarx = scan.nextInt();
        System.out.print("Introduzca el número de caracteres de columnas de la segunda matriz: ");
        numCary = scan.nextInt();
        double M2[][] = new double[numCarx][numCary];
        for(int x=0; x<numCarx; x++){
            for(int i=0; i<numCary; i++){
                System.out.print("x"+(i+1)+" = ");
                M2[x][i]=scan.nextInt();
            }
        }


    }

    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(matriz));
    }

    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);
                nm[i][j]=detValor * (double)Math.pow(-1, i+j+2);
            }
        }
        return nm;
    }

    public static double[][] matrizTranspuesta(double [][] matriz){
        double[][]nuevam=new double[matriz[0].length][matriz.length];
        for(int i=0; i<matriz.length; i++){
            for(int j=0; j<matriz.length; j++)
                nuevam[i][j]=matriz[j][i];
        }
        return nuevam;
    }

    public static double determinante(double[][] matriz){
        double det;
        if(matriz.length==2){
            det=(matriz[0][0]*matriz[1][1])-(matriz[1][0]*matriz[0][1]);
            return det;
        }
        double suma=0;
        for(int i=0; i<matriz.length; i++){
        double[][] nm=new double[matriz.length-1][matriz.length-1];
            for(int j=0; j<matriz.length; j++){
                if(j!=i){
                    for(int k=1; k<matriz.length; k++){
                        int indice=-1;
                        if(j<i)
                            indice=j;
                        else if(j>i)
                            indice=j-1;
                            nm[indice][k-1]=matriz[j][k];
                    }
                }
            }
            if(i%2==0)
                suma+=matriz[i][0] * determinante(nm);
            else
                suma-=matriz[i][0] * determinante(nm);
        }
        return suma;
    }
}
    
asked by Nicolás Figueras Parras 08.01.2018 в 21:48
source

1 answer

0

If I have understood your question correctly, it would be enough to call this method at the end of the execution of each method.

public void printMatriz(double[][] mat) {
    for (int i = 0; i < mat.length; i++) {
        for (int j = 0; j < mat[i].length; j++) {
            System.out.print(mat[i][j] + " ");
        }

        System.out.println();
    }

}
    
answered by 09.01.2018 / 18:15
source