Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Kotlin / Multiplicación de matrices en Kotlin

Multiplicación de matrices en Kotlin

Por 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 código multiplica 2 matrices NxM o NxN e imprime el resultado por consola:

fun main(args : Array<String>){
 	
    //2x2
    val matrizA = arrayOf(intArrayOf(1,3),
                         intArrayOf(5, -2))
    //2x3
    val matrizB = arrayOf(intArrayOf(2, -1, 6),
                          intArrayOf(3, 4, -5))
    /**
     * Multiplicacion de matrices
     * @param ma Matriz A
     * @param mb Matriz B
     * @return Array Producto de A*B
     */
    fun multiplicar(ma:Array<IntArray>, mb:Array<IntArray>):Array<IntArray>{
       val producto = Array(matrizA.size) { IntArray(matrizB.get(0).size) }
       for (i in 0..matrizA.size - 1) {
          for (j in 0..matrizB.get(0).size - 1) {
             for (k in 0..matrizA.get(0).size - 1) {
                producto[i][j] += ma[i][k] * mb[k][j]
             }
          }
       }
       return producto
    }
 	
    /**
     * Impresión de matriz
     * @param m Matriz
     */
    fun imprimir(m:Array<IntArray>){
      for (i:Int in 0..m.size-1) {
          for (j:Int in 0..m.get(0).size-1){
             print( m[i][j] )
             print("   ")
          }
          println()
       }
    }
 	
    //----------------------------------------------------------
    println("Matriz A " + matrizA.size + "x"+matrizA.get(0).size)
    imprimir(matrizA);
 	
    println("Matriz B " + matrizB.size + "x"+matrizB.get(0).size)
    imprimir(matrizB);
 	
    if(matrizA.get(0).size ==  matrizB.size){ //Col A = fila B
       val filA:Int = matrizA.size
       val colB:Int = matrizB.get(0).size
       println( "Resultado matriz $filA x $colB" )
       val resultado = multiplicar(matrizA,matrizB);
       imprimir(resultado);	
    }else{
       println("No se puede multiplicar")
    }
 	
 }

Y probando la aplicación tenemos:

consola kotlin

enjoy!!!

Tags

Artículos similares

Envía mensajes temporales y cifrados

Secret (https://getsecret.now.sh/) es una aplicación web gratuita que te permite enviar mensajes temporales cifrados que[...]

Formulario de login personalizado

Hola, en este oportunidad dejo a disposición un formulario de logueo que se me ocurrió de repente creo inspirado en las[...]

Conexion Access con PHP

Para poder conectar PHP con una base de datos de microsoft Access debemos seguir los siguientes pasos: 1. Crea una base[...]

MVC: Modelo, Vista y Controlador en PHP

EL patrón MVC (Model, View, Controller) o Modelo, Vista Controlador, es un tipo de diseño que separa en capas bien defin[...]

Ejercicio resuelto: Personalizar JTable

PROBLEMA: Se tiene un JTable con 19 columnas y 50 registros, se desea personalizar el JTable de la siguiente manera:[...]

Botones circulares de Google Plus en java

Continuación del tutorial «Google Circles en java» o.O 🙂 La Interfaz El proyecto consta de una sola interfaz la cual es[...]