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 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:
enjoy!!!
Lenguaje: C# Nivel: Básico 1) Se desea desarrollar un programa que permita introducir una oración por teclado y contar l[...]
Microsoft el gigante de la tecnología está tratando de hacer que Python sea más fácil de comprender para aquellos intere[...]
Uno de los cambios principales introducidos a las interfaces en Java 8 fue que estos puedan tener métodos concretos, es[...]
Los objetos como JLabel o JButton nos permiten hacer uso de código CSS en su propiedad TEXT, asi podemos adornar el text[...]
Código Único de Factura para el Nuevo Sistema de Facturación Electrónica en Bolivia desarrollado en el lenguaje PHP 7 (H[...]
El juego de las tragamonedas o tragaperras es un juego muy popular de azar que se puede encontrar tanto en los casinos o[...]