Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Kotlin / Multiplicación de matrices en Kotlin

Multiplicación de matrices en Kotlin

Autor jc mouse lunes, julio 30, 2018

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:

matrix

Por ejemplo:

producto

donde los componentes de la matriz C se calculan del modo siguiente:

multi matriz

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:

consola kotlin

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Código Único de Factura en C Sharp

Código Único de Factura en C Sharp

En este post implementamos el “Código Único de Factura” según la documentación otorgada por Impuestos Bolivi...

Minimizar aplicación al SystemTray/Bandeja del Sistema

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama “Área de Notificación” es la sección de la barr...

Método de la Regla Falsa o Regula Falsi

Método de la Regla Falsa o Regula Falsi

Este método, también conocido como método de interpolación lineal, es un método iterativo de resolución numérica de ecua...

Juego de memoria para niños (Código Fuente)

Juego de memoria para niños (Código Fuente)

En un post anterior, desarrollamos un swing para simular un efecto FLIP  y recibí algunos mensajes pidiéndome un ejemplo...

Simulador de Urna Electrónica en java

Simulador de Urna Electrónica en java

Hola 🙂 en esta ocasión un amigo del Brasil nos envía un proyecto java de una Urna Electrónica o Voto Electronico, desarr...

Colocar imagenes en un JComboBox

Colocar imagenes en un JComboBox

Para agregar imágenes a un JComboBox, partiremos de un proyecto Netbeans con la siguiente estructura: Tenemos dos clases...

Comparte lo que sabes

Categorias

Últimas entradas

Los números narcisistas o números de Armstrong son aquellos números enteros positivos  cuya suma de las n-ésimas potenci...

En la convención de Chain React  en Portland (Oregon), Marc Horowitz ingeniero de software en Facebook presentó el motor...

En un post anterior [Introducción a VueJS framework para el desarrollo FrontEnd] realizamos una breve introducción a Vue...

La programación y la electrónica están a la orden del día. Cada vez son más importantes y prácticamente forman parte de...

Android Bolivia

MAUS