En este post implementaremos el código necesario para multiplicar matrices con el lenguaje Kotlin, pero para realizar esta tarea debemos tener en cuenta las siguientes reglas:
Solo se puede multiplicar dos matrices si sus dimensiones son compatibles, esto significa que el número de columnas en la primera matriz debe ser igual al número de renglones en la segunda matriz. Por ejemplo, si tenemos las siguientes matrices A y B:
A[3×4] B[2×3] Columnas de A(4) es diferente a las filas de B(2): No se puede multiplicar
A[1×4] B[4×2] Columnas de A(4) es igual a filas de B(4): Se puede multiplicar
El resultado del producto de 2 matrices A[nxm] y B[rxq] es otra matriz que tiene orden nxq,es decir el número de filas de A y el número de columnas de B.
Cada elemento de la matriz resultante se obtiene multiplicando escalarmente la fila i de la Matriz A por la columna j de la matriz B. Es decir:
Por ejemplo:
donde los componentes de la matriz C se calculan del modo siguiente:
Dicho esto, el siguiente codigo multiplica 2 matrices NxM o NxN e imprime el resultado por consola:
1 fun main(args : Array<String>){ 2 3 //2x2 4 val matrizA = arrayOf(intArrayOf(1,3), 5 intArrayOf(5, -2)) 6 //2x3 7 val matrizB = arrayOf(intArrayOf(2, -1, 6), 8 intArrayOf(3, 4, -5)) 9 /** 10 * Multiplicacion de matrices 11 * @param ma Matriz A 12 * @param mb Matriz B 13 * @return Array Producto de A*B 14 */ 15 fun multiplicar(ma:Array<IntArray>, mb:Array<IntArray>):Array<IntArray>{ 16 val producto = Array(matrizA.size) { IntArray(matrizB.get(0).size) } 17 for (i in 0..matrizA.size - 1) { 18 for (j in 0..matrizB.get(0).size - 1) { 19 for (k in 0..matrizA.get(0).size - 1) { 20 producto[i][j] += ma[i][k] * mb[k][j] 21 } 22 } 23 } 24 return producto 25 } 26 27 /** 28 * Impresión de matriz 29 * @param m Matriz 30 */ 31 fun imprimir(m:Array<IntArray>){ 32 for (i:Int in 0..m.size-1) { 33 for (j:Int in 0..m.get(0).size-1){ 34 print( m[i][j] ) 35 print(" ") 36 } 37 println() 38 } 39 } 40 41 //---------------------------------------------------------- 42 println("Matriz A " + matrizA.size + "x"+matrizA.get(0).size) 43 imprimir(matrizA); 44 45 println("Matriz B " + matrizB.size + "x"+matrizB.get(0).size) 46 imprimir(matrizB); 47 48 if(matrizA.get(0).size == matrizB.size){ //Col A = fila B 49 val filA:Int = matrizA.size 50 val colB:Int = matrizB.get(0).size 51 println( "Resultado matriz $filA x $colB" ) 52 val resultado = multiplicar(matrizA,matrizB); 53 imprimir(resultado); 54 }else{ 55 println("No se puede multiplicar") 56 } 57 58 }
Y probando la aplicación tenemos:
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
En post anteriores vimos lo que son los parámetros IN y los parámetros OUT pero existe otro tipo de parámetro que es la...
En este tutorial veremos un poco lo que es el diseño de interfaces en android, en lugar de colocar el ejemplo de uso de...
Una cola doblemente terminada o deque es una estructura de datos lineal que permite insertar y eliminar elementos por am...
Cuando queremos presentar un programa hecho en java y darle un toque de profesionalidad, a veces no queremos que el clie...
¿Qué es una transición? Una transición es un efecto de movimiento que se da entre una imagen y la siguiente en una prese...
Continuación del tutorial «Utiliza 2 bases de datos diferentes en una aplicación» La Interfaz frmSelected.java: Haciendo...
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...