Aplicación de funciones en Python 3.7


En esta sesión, dejando para más adelante el uso de módulos, vamos a desarrollar un ejemplo de operaciones matriciales mediante el uso de funciones.

El objetivo es, definir una o dos matrices en la forma de listas numéricas en la consola y luego invocar a la función que fuera necearia y que estuviera definida.

Las funciones que vamos a desarrollar son:
- smat(A, B): Que se ocupará de la suma de matrices
- rmat(A, B): Que restará la matriz B de la matriz A
- prmat(A, B): Que nos permitirá obtener el producto de las dos matrices
- mulmat(A; B): Que nos devlverá la multiplicación matricial, con A(n,m) y B(m,p)
- mdet(A): Que nos devolverá la determinante de una matriz cuadrada
- minv(A): Que nos devolverá la inversa de la matriz A
- impre(A, msg): Que nos permitirá imprimir una matriz usando a msg como el título del reporte.

Para ello vamos a abrir un nuevo file para grabar con el nombre opmat.py

El siguiente es el código:

import numpy as np
def smat(A,B):
    C=[]
    A = np.array(A)
    B = np.array(B)
    for i in range(np.shape(A)[0]):
        t = []
        for j in range(np.shape(A)[1]):
            t.append(A[i][j]+B[i][j])
        C.append(t)
    return C

def rmat(A,B):
    C=[]
    A = np.array(A)
    B = np.array(B)
    for i in range(A.shape[0]):
        t = []
        for j in range(A.shape[1]):
            t.append(A[i][j]-B[i][j])
        C.append(t)
    return C

def prmat(A,B):
    C=[]
    A = np.array(A)
    B = np.array(B)
    for i in range(A.shape[0]):
        t = []
        for j in range(A.shape[1]):
            t.append(A[i][j]*B[i][j])
        C.append(t)
    return C
def mulmat(A,B):
    C=[]
    A = np.array(A)
    B = np.array(B)
    C = np.matmul(A,B)
    return C
def mdet(A):
    return np.linalg.det(A)

def minv(A):
    return np.linalg.inv(A)

def impre(c,msg):
    print("\n\n"+msg)
    for i in range(np.shape(c)[0]):
        for j in range(np.shape(c)[1]):
            print("{0:8.2f}".format(c[i][j]), end=" " )
        print()
#
#
# Programa principal
#

a = [[2,5,7,3],[3,6,3,-6],[2,-8,6,4]]
b = [[8,4,8,2],[-2,5,-4,8],[2,5,7,1]]
d = [[4,8,3],[2,8,3],[1,5,2],[-5,3,8]]

impre(smat(a,b),"Matriz Suma")
impre(rmat(a,b),"Matriz Difeencia")
impre(prmat(a,b),"Matriz Producto")
impre(mulmat(a,d),"Multiplicación matricial")
impre(minv(mulmat(a,d)),"Matriz inversa")

Ingrese este código y grabe con el nombre arriba indicado

Luego ejecute usando [Run] - [Run module]

En la consola obtendrá los resultados

Tenga presente que, para multiplicar dosmatrices, el orden de las dos matrices deben estar adeccuadmente definidas; es decir, tener a(n,m) y b(m, r) para obtener una matriz resultante c(n,r).
Igualmente, para invertir una matriz, debe definirse la matriz cuadrada; es decir, debe ser a(n,n).

Las imágenes siguientes nos muestran el código. Recuerde que la indentación es fundamental en el código.


Observe que antes de invocar a las funciones, se debe tener las matrices en forma de lista de listas. Al ser invocada una función, ésta convierte a la lista enviada, en arreglo, como se puede ver.



Continuar en la siguiente sesión