Introducción
En entradas anterior vimos cómo definir matrices en programación y cargarle datos, en este artículo veremos cómo sumar y restar dos matrices utilizando arreglos bidimensionales.
Para poder sumar o restar dos matrices se necesita que ambas tengan el mismo tamaño, es decir la misma cantidad de filas y la misma cantidad de columnas, de lo contrario no se puede resolver la operación. Esto lo tendremos en cuenta en nuestro algoritmo, al momento de realizar la operación comprobaremos que se cumplan estas condiciones y si todo está en orden se resolverá la suma, caso contrario la matriz devuelta tendrá valor null y este resultado se puede utilizar para hacer comprobaciones posteriores, por ejemplo si la matriz resultante es distinta de null consideramos que la operación fue un éxito.
Datos iniciales
Partiremos de dos matrices A y B con sus datos precargados y analizaremos un método que realizará la suma de dos matrices que se envíen como parámetro y devuelve la matriz resultado, para más detalles sobre métodos en programación, sintaxis y parámetros de entrada y salida consultar este vídeo.
En la figura 1 vemos la declaración de dos matrices de 2×2 y la carga de sus datos, luego en las líneas 28, 29 y 30 se hacen las llamadas a los métodos que se encargarán de sumar, restar o hacer una combinación lineal entre las matrices que se envíen cómo parámetro y devolverán la matriz resultante.
Algoritmo para sumar dos matrices en programación, lenguaje C#
Para hacer la suma de dos matrices primero debemos asegurarnos de que ambas matrices tengan el mismo tamaño, si esto es correcto se procede a recorrer cada elemento de las matrices y realizar la suma elemento a elemento, asignando el resultado a una nueva matriz previamente declarada.
Análisis del algoritmo que realiza la suma de dos matrices
Entre las líneas 30 y 56 hemos definido un método que recibe como parámetros dos arreglos bidimensionales («matA» y «matB») y devuelve otro array bidimensional.
En la línea 32 se declara la matriz resultado y se devuelve en la línea 55, al finalizar el procedimiento.
Luego en la línea 34 tenemos una sentencia IF para comprobar si es posible resolver la suma de las matrices, la condición es que las matrices coincidan en cantidad de filas y columnas, si esto es verdadero se procede a resolver la suma, sino se imprime un mensaje en consola indicando que no es posible resolver la operación y a la variable resultado se le asigna null (líneas 51 y 52).
Si se puede resolver la suma de matrices vamos a determinar el número de filas y columnas de la matriz resultado y vamos a crear la estructura de datos para esa matriz, esto lo hacemos en las líneas 36, 37 y 39 respectivamente.
La suma de las matrices se realiza elemento a elemento, por lo tanto usaremos dos bucles anidados, el primero recorrerá cada fila y el bucle del interior recorrerá cada columna, de modo que comenzaremos con una fila y pasaremos por cada una de las columnas, al finalizar pasaremos a la siguiente fila. Dentro del bucle interno simplemente se resuelve la suma de los elementos ij de cada matriz y se lo asigna al elemento ij de la matriz resultado.
Algoritmo para restar dos matrices en programación, lenguaje C#
Para restar dos matrices en programación, el algoritmo es prácticamente igual que el de la suma, solo que cuando se recorren sus elementos, en lugar de sumarlos se los resta, podemos ver una implementación del algoritmo en la figura 3.
Algoritmo para realizar la combinación lineal de dos matrices en programación, lenguaje C#
Dado que el algoritmo para sumar y restar matrices es muy similar, se podría definir una función que realice una combinación lineal entre las dos matrices indicadas junto con sus coeficientes, es decir que resuelva la operación:
MatrizC = a * MatrizA + b * MatrizB
De esta forma para realizar la resta de la matriz A menos la matriz B se podría llamar a esta función pasando como parámetro 1 para el coeficiente que acompaña la matriz A y -1 para el coeficiente que acompaña la matriz B, pero además contamos con una función con mayores prestaciones. En la figura 4 vemos el algoritmo que resuelve la combinación lineal entre ambas matrices.