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! :)
EL patrón MVC (Model, View, Controller) o Modelo, Vista Controlador, es un tipo de diseño que separa en capas bien defin...
Continuación del tutorial «Google Circles en java» o.O 🙂 La Interfaz El proyecto consta de una sola interfaz la cual es...
Maria DB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL, pero con un rendimiento similar...
El Método Congruencial Lineal Mixto es el más utilizado en simulación en computadoras digitales y esta basado en una rel...
En este post crearemos un botón swing que reproducirá un sonido cuando este sea presionado por el usuario. Sin mas que...
En este post dejo el código fuente de un blog en PHP desarrollado siguiendo el patrón de diseño MVC (Modelo, Vista y Con...
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...