Ir al contenido principal

Operaciones con matrices II

Como les comenté la semana pasada, seguimos con las operaciones con matrices. Ya vimos lo sencilla que puede ser la suma y la resta pero ¿la multiplicación? puede parecer un poco complicado al principio así que vamos por partes.

A diferencia de la suma y resta en la multiplicación se hace "fila por columna" y se suman los productos. Ya que se hace fila por columna es  necesario que las matrices a multiplicar sigan la siguiente forma:

(n x m)(m x p) = (n x p)

Es decir, el numero de columnas en la primera matriz debe ser igual al numero de filas en la segunda matriz. La matriz resultante será del número de filas de la primera por el número de columnas de la segunda.

Para este caso veremos una matriz de 3x3 así que no tendremos problemas.

Como pueden ver en la imagen primero se multiplica el primer elemento de A con el primer elemento de B, luego se suma a la multiplicación del segundo elemento de A por el segundo de B... etc.

 (Tomando las matrices como A[i][j]; B[i][j])
Basados en lo anterior y pensando más enfocados en programación podemos observar que en A el índice j (eje y) no cambia durante la operación mientras que para B el que permanece igual es el índice i (eje x). Además, notemos que el índice i de la matriz A siempre es el mismo al de la matriz resultado, y el índice j del resultado es el mismo que el de la matriz B. Planteando esto podemos comenzar a programar. La primera parte es igual a como hemos venido haciendo. simplemente agregamos un for para multiplicar los lugares.


¿Recuerdan que les mencioné que la matriz resultado sería de (n x p)? pues tomé eso como referencia en la multiplicación para no perderme y créanme que resulta bastante conveniente. Se pueden modificar las dimensiones de la matriz, como ya también se comentó pero procuren que se cumpla la forma:

(n x m)(m x p) = (n x p)

Comentarios

Entradas populares de este blog

Listas en java

Si hablamos de la implementación de listas en java, podemos referirnos a diferentes instancias como un Arraylist, linkedList, Vector o Stack. Cada uno de estos con sus propiedades puede resultar más útil para cada caso. Enfoquémonos en el primero: ArrayList Crea una lista vacía con una capacidad inicial de 10 (va creciendo conforme se almacenan elementos). Recordando cómo funcionan los arreglos estáticos (int array [n]) podemos eliminar el valor de una posición, pero no podemos eliminar la posición en si. Es decir, si tenemos un arreglo de tamaño 10 y solo ocupamos 4 espacios, los otros 6, aunque vacios, siguen ahí. y si queremos eliminar una posición y recorrer los datos, ahí se presenta un problema. Pues bien, ArrayList es una lista implementada con arreglos dinámicos, así que cuando eliminamos un elemento (que no sea el último) lo que en realidad se hace es tomar la posición del elemento a eliminar y recorrer los elementos posteriores a este. Y si rebasamos la capacidad actu...

Programación: Variables

A veces necesitamos almacenar datos para que el programa pueda leer la información y utilizarla, cuando asignamos a ese dato una palabra clave, esa palabra clave se llama variable. Antes que otra cosa ¿Qué es una variable? En programación es un espacio reservado en memoria para un dato que puede ser fijo o puede ser establecido por el usuario. Antes de ver los casos y la forma de declararlas vamos a echar un ojo a los tipos de variable. Los tipos de variable hacen referencia a diferentes tipos de dato: Nombre Tipo Declaración Interger Entero Int Float Flotante (o punto decimal) Float Char/String Para caracter o cadena Char/Char[] Boolean Lógico (True/False) Bool Por ejemplo si quiero declarar una variable con el valor de pi necesito una variable de tipo flotante y se declara así: float pi = 3.141592; Si quisiera declarar un número fijo de 10 personas: int x = 10; Si quisiera declarar una letra "C" simplemente: char c = "C";...

Regresamos... ahora en Java.

Después de una breve larga ausencia estamos de regreso, nos quedamos con muchos temas e ideas por discutir a las que no quiero abandonar. Sin embargo y siendo sincero se manejarme un poco mejor en java de lo que lo hago en C++, así que daré este nuevo enfoque. De nuevo a todos, no se asusten es algo muy sencillo y se avanza a buen paso. Empezamos: Notas: Línea 1: package hace referencia al archivo donde tenemos nuestro código. Es decir, si el paquete se llama "holamundo", quiere decir que nuestro archivo se llama "holamundo.java". Línea 3: class se refiere a una estructura de la programación orientada a objetos. Dentro de las clases podemos alojar variables, métodos y otras estructuras. estos métodos y variables los podemos llamar después creando un objeto de ese tipo y asignándole valores. Línea 4: aquí vemos un ejemplo de método (tipo void , no regresa ningún tipo de valor). ATENTO a que el método está situado DENTRO de las llaves que definen la clase ...