Crea una calculadora de matrices con numpy

Como es costumbre, lo primero que haremos será importar las librerías que vamos a necesitar para hacer funcionar nuestro programa. Así importaremos la librería “numpy” (la cual tendremos que tener previamente instalada, de modo, que de no ser así, procederemos a su instalación mediante el comando “pip install numpy“). Si trabajamos en windows, podremos también importar “subprocess” para la limpieza de pantalla tras cada ejecución:

Diseñaremos nuestro programa, de modo que, tras mostrar en pantalla las distintas operaciones con matrices que va a poder realizar, pedirá al usuario que introduzca las dimensiones (definidas por el número de columnas) de la primera matriz con la que va a operar. Ambos datos se almacenarán en las variables “fil” (para el número de filas) y “col” (para el número de columnas):

Puesto que queremos que nuestro usuario solo pueda introducir un valor entero para “fil” y “col” utilizaremos una función creada por nosotros (de nombre “OKI“) que no permita la introducción de ningún otro tipo de dato:

Con los datos proporcionados referentes al número de filas y de columnas, nuestro programa usará la función “crea_matriz()” (de la que hablaremos más adelante) para construir la matriz con la que va a operar. Dicha matriz será almacenada en la variable “acum“.

A su vez, y puesto que nuestro programa va a poder trabajar tanto con matrices como con valores numéricos, definiremos una función (“dato()“), que, a partir del resultado generado por otra función (“val()“), activará la función “crea_matriz()“, si el valor generado por “val()” es “M” (matriz) o pedirá un valor numérico, si el resultado devuelto por “val()” es “N” (número).

Nuestro programa también podrá efectuar operaciones entre matrices y valores naturales.

Así, nuestra función “dato()“, generará la matriz o número con el que va a trabajar a partir del valor devuelto por “val()” con la que acotaremos las posibles respuestas del usuario (“M” para matriz y “N” para dato numérico) almacenado la respuesta en la variable “tipo_de_dato“. De modo que si el input introducido es “M” (“if tipo_de_dato==”M”: “) se ejecutara una nueva función (a la que hemos llamado “crea_matriz()“) que tomará como argumentos el número de filas (“fil“) y de columnas (“col“),

previamente establecidos por el usuario). Por contra, de no ser así (“else:“) por haber introducido “N“, el programa nos pedirá que ingresemos un valor numérico.

Función “val()”: Para establecimiento del tipo de dato.

Tal y como hemos dicho, si el input introducido para “dato()” es “M“, se ejecutará la función “crea_matriz()” a través de la cual el programa nos pedirá los valores que conforman la matriz, cuyas dimensiones vienen dadas por las variables “fil” y “col“:

Tras la introducción de los elementos de la matriz, el programa mostrará la matriz recién creada.

Esta función lo que hará será recorrer cada columna (“for c in range (col):“) para cada fila (“for f in range (fil):“) e ir almacenando (mediante el correspondiente input) cada uno de los valores de la matriz, los

cuales, primero se almacenaran en una lista “e_col” (“e_col.append(valor)“), la cual, a su vez, luego se añadirá a la lista “e_fil” (“e_fil.append(e_col)“), para, finalmente, crear la matriz, la cual, a continuación, se almacenará en la variable “matri“, con “np.array()” (“matri=np.array(e_fil,float)“) Esta variable “matri” es la finalmente devolverá la funcióm (“return matri“).

Una vez que nuestro programa tenga la información referente a la matriz (o al valor numérico) con la que va a trabajar, lo siguiente que hará será pedir a nuestro usuario que introduzca el operador correspondiente a la operación que desea realizar. Dicha información se almacenará en una variable a la que hemos llamado “oper“:

Una vez que el programa tenga el operador con el que trabajar, para el caso de la suma y de la resta, procederá nuevamente a pedir el tipo de dato (“matr=dato()“). Tras lo cual, se efectuará la suma o la resta a la variable “acum” de la matriz, generada con la función “crea_matriz()“.

Como sabemos, para sumar y restar matrices es necesario que ambas tengan las mismas dimensiones (mismo número de dilas y de columnas). Siendo por ello por lo que el programa ha trabajado con las mismas dimensiones, inicialmente establecidas al comienzo (variables “fil” y “col“). No obstante, para el caso de la multiplicación (que efectuaremos con el método “.dot()“)

debemos tener en cuenta que el número de filas de la segunda matriz ha de ser el mismo que el número de columnas de la primera:

Error al intentar multiplicar dos matrices de iguales dimensiones.

Es por ello que, para esta operación, vamos a empezar haciendo que el numero de columnas, establecido con anterioridad (“col“) sea igual al de filas (“fil“), tras lo cual, solo, pediremos el número de columnas que va a tener la nueva matriz. Con tal información, volveremos a aplicar la función “crea_matriz()“, cuyo resultado (la nueva matriz) se almacenará en la variable “matr“:

Tras esto, ya solo quedará multiplicar el valor matricial acumulado de operaciones anteriores (variable “acum“) por la nueva matriz creada. Tal multiplicación entre matrices lo llevaremos a cabo mediante el método “.dot()” (por ello escribiremos “acum=np.dot(acum,matr)“).

Finalmente, si el operador introducido fuera “=“, nuestro programa simplemente mostrará el valor acumulado, durante la ejecución del mismo, en la variable “acum” tal y como se ve en la imagen.

Una vez que se haya mostrado la matriz resultado, el programa nos pedirá que le indiquemos si queremos continuar con la ejecución del mismo, mediante la variable “conti“, la cual, ya hemos utilizado en ocasiones anteriores:

Y con esto tendríamos creada nuestra calculadora de matrices, con el módulo “numpy” de python.

Como viene siendo habitual, podéis ver el código en mi página de github

Repositorio:

https://github.com/antonioam82/calculadora-de-matrices

Saludos.

 

Antonio Alfonso MartínezProgramador y desarrollador autodidacta. Semanalmente publica en el blog El programador Chapuzas (wordpress) y también colaboro en las páginas “Código Comentado” y “Algoritmos MathPy” de Facebook.

 

 

Si quieres formar parte de la comunidad JustCodeIt, compartiendo información relevante sobre desarrollo Web, Mobile, Big Data o Blockchain puedes escribirnos a [email protected] .

Share this:

Leave a comment