Definición de matriz: En matemáticas, una matriz es un arreglo bidimensional de números, y en su mayor generalidad de elementos de un anillo. Las matrices se usan generalmente para describir sistemas de ecuaciones lineales, sistemas de ecuaciones diferenciales o representar una aplicación lineal (dada una base). Las matrices se describen en el campo de la teoría de matrices.
Pueden sumarse, multiplicarse y descomponerse de varias formas, lo que también las hace un concepto clave en el campo del álgebra lineal.
(Por wikipedia).
Mas informacion sobre multiplicacion de matrices aqui.
Codigo:
Comenta acerca del código.
Pueden sumarse, multiplicarse y descomponerse de varias formas, lo que también las hace un concepto clave en el campo del álgebra lineal.
(Por wikipedia).
Mas informacion sobre multiplicacion de matrices aqui.
Codigo:
//Autor: Rey Salcedo Padilla class MultiplicacionMatrices{ //Me extrae una fila dada de una matriz en forma de vector (arreglo) public static int []filaMatriz(int [][]matriz, int fila){ int []arregloAuxiliar = new int[matriz[fila].length]; for(int i = 0; i < arregloAuxiliar.length; i++){ arregloAuxiliar[i] = matriz[fila][i]; } return arregloAuxiliar; } //Me extrae una columna dada de una matriz en forma de vector (arreglo) public static int []columnaMatriz(int [][]matriz, int columna){ int []arregloAuxiliar = new int[matriz.length]; for(int i = 0; i < arregloAuxiliar.length; i++){ arregloAuxiliar[i] = matriz[i][columna]; } return arregloAuxiliar; } //Me devuelve el valor de una celda segun la multiplicacion de dos matrices public static int valorCelda(int [][]matrizA, int [][]matrizB, int fila, int columna){ int suma = 0; /* Tomo la fila de la primera matriz y la columna de la segunda matriz, para posteriormente multiplicar celda por celda */ int []filaMatrizA = filaMatriz(matrizA, fila); int []columnaMatrizB = columnaMatriz(matrizB, columna); for(int i = 0; i < filaMatrizA.length; i++){ /* * Aqui valido que la longitud de ambos vectores sean iguales, * en terminos mas acordes, que el numero de columnas de la primera matriz, * sea igual al numero de filas de la segunda matriz */ if(filaMatrizA.length == columnaMatrizB.length){ suma += filaMatrizA[i] * columnaMatrizB[i]; }else{ System.out.println("El numero de columnas de la primera matriz es diferente al numero de filas de la segunda matriz"); break; } } return suma; } //Me devuelve una matriz, producto de la multiplicacion de dos matrices public static int [][]multiplicacionMatriz(int [][]matrizA, int [][]matrizB){ int [][]matrizAuxiliar = new int[matrizA.length][matrizA[0].length]; for(int i = 0; i < matrizA.length; i++){ for(int j = 0; j < matrizA[i].length; j++){ matrizAuxiliar[i][j] = valorCelda(matrizA, matrizB, i, j); } } return matrizAuxiliar; } //imprime los valores de una matriz public static void imprimirMatriz(int [][]matriz){ System.out.println("-------------------------------"); for(int i = 0; i < matriz.length; i++){ for(int j = 0; j < matriz[i].length; j++){ System.out.print(matriz[i][j]+"\t"); } System.out.println(); } System.out.println("-------------------------------"); } //imprime el procedimiendo de la 'matriz de recorrido' de una matriz public static void main(String []args){ /* Nota importante: - Sean las matrices A y B; A tenga el mismo número de columnas que B de filas para que exista A*B - Sean las matrices B y A; B tenga el mismo número de columnas que A de filas para que exista A*B */ int [][]matrizA ={{1,0,0,1}, {1,4,0,1}, {1,9,0,11}, {1,5,6,0}}; int [][]matrizB ={{11,0,0,1}, {1,8,0,1}, {0,9,0,5}, {1,7,6,0}}; System.out.println("Matriz A"); imprimirMatriz(matrizA); System.out.println("Matriz B"); imprimirMatriz(matrizB); System.out.println("Matriz A * Matriz B"); imprimirMatriz(multiplicacionMatriz(matrizA,matrizB)); //Note que si A y B son diferentes A*B diferente de B*A (A*B <> B*A) System.out.println("Matriz B * Matriz A"); imprimirMatriz(multiplicacionMatriz(matrizB,matrizA)); } }
Comenta acerca del código.