Álgebra de vectores


Continuando con los datos de tipo lista, lo que nos permite definir arreglos vectoriales y matriciales, vamos a trabajar con dos o más listas, para extendernos al uso de dos o más vectores.

Empecemos cargando a memoria la librería numpy
>>>import numpy as np

Ahora definamos dos listas numéricas: a y b:
>>>a = [12,16,18,25,36]
>>>b = [8.5,-5,10,6.2,0]

Un nuevo vector de unos de tamaño 5 será:
>>>c=np.repeat(1,5)
Un vector de números aleatorios de tamaño 5
>>>d=np.random.random_sample(5)
Otro vector aleatorio del mismo tamaño generado con otra función de numpy
>>>e=np.repeat(np.random.rand(),5)
Usando np.arange(...)
>>>f = np.arange(5)

Los objetos c, d y e son vectores pero a y b son listas
Los convertiremos en vectores sobre sí mismos
>>>a = np.array(a)
>>>b = np.array(b)
Y la forma clásica de generar un vector: Digitando la lista como argumento de np.array(...):
>>>g = np.array([10, 15, 20, 25, 30])

Sería bueno comprobar que todos estos objetos son arreglos vectoriales usando print(type(a)) o viendo sus elementos.

Ahora vamos a llevar a cabo diferentes operacione con estos vectores:

La suma de a+b y dejándolo r1
>>>r1 = a+b
>>>r1
Para comprobar, veamos a y b
>>>a
>>>b
La diferencia a-b
r2 = a-b
El producto de un escalar por una constante
>>>r3 = a*10
El producto de ai*bi
>>>r4 = a*b
>>>r4
>>>r5 = f*g

El producto escalar de a y b
>>>r6 = a@b
>>>r6
Se obtiene lo mismo si calculamos
>>>sum(a*b)

Otras ejemplos

>>>res01 = 10*f+g*g-12*a

 

Ejemplo 1

Supongamos que las variables Cantidad y precio contienen la cantidad y precio unitario en la ventas registradas en un diá cualquiera en Global Comerce S.A. La variable prod contiene los nombres de los productos y descuento contiene los descuentos por producto.

Se requiere saber el monto bruto, venta y neto, sabiendo que el IGV es de 18%. Se debe imprimir el monto total de las ventas, vTotal y Neto total, nTotal y total de los descuentos tdesc

Solución

Simularemos datos:
La lista de los nombres de producto:
>>>prod = ["Star War SI","Trolls en vehiculo","Scrabble original","Fortnite Drift","Harley Davidson","AOC smart led 32","LG 49UB8500","Camara Canon EOS 80D","Camara Canon 6DMKII","Play Station 4Pro"]
>>>precio = [169.90,79.90, 104,59.90,89.90,669,2129,6499,11099,1899]
>>>cantidad = [10,12,18,5,2,32,8,4,2,15
>>>descuento = [8,12,15,4,6,5,5,8,10,4]
>>>IGV = 0.18

A continuación, convertiremos a las tres listas en arreglos en sus propios nombres
>>>precio = np.array(precio)
>>>cantidad = np.array(cantidad)
Simultáneamente con lo conversión, a los descuentos los dividimos entre 100 para que esté en decimales
>>>descuento = np.array(descuento)/100
>>>descuento
array([0.08, 0.12, 0.15, 0.04, 0.06, 0.05, 0.05, 0.08, 0.1 , 0.04])

Pasmos a realizar los cálculos adecuados

>>>venta = precio*cantidad
Calculamos el descuento, desc
>>>desc = precio*cantidad*descuento
>>>neto = precio*cantidad-desc+precio*cantidad*IGV

Toca ahora obtener los totales del día

>>>vTotal = np.sum(venta)
>>>vTotal
120128.1
>>>nTotal = sum(neto)
>>>nTotal
133835.734
>>>tdesc = sum(desc)
7915.424000000001
Podemos comprobar si todo está correcto:
>>>120128.1-7915.424+120128.1*0.18
133835.734
Nro de ventas del día
>>>n = len(precio)
Venta neta promedio
>>>promNeto = nTotal/n

Impresión de resultados:
>>>print("\n\nEstadisticas de la venta del día: \n\nVenta total:",vTotal, "\nTotal de la venta neta:",nTotal, "\nMonto de los descuentos:",tdesc, "\nProductos vendidos:",n, "\nVenta Neta promedio:",promNeto)

La siguiente imagen muestra el procedimiento


Vamos a extraer todas las instrucciones desde "import ...." en un nuevo archivo. Para ello, usamos: [File] - [New File]
Alli digitamos todas las instrucciones ejecutables sin el prompt ">>>".

Al final se debe grabar el archivo como <b>mymod05.py</b>

La siguiente imagen muestra este módulo

 


Sería interesante pensar en la impresión de una planilla de las ventas del día. Esto lo haremos más adelante.

Continuar en la siguiente sesión