Está en la página 1de 11

INSTITUTO TECNOLÓGICO DE SANTO DOMINGO

VECTORES Y MATRICES

”Todo el mundo deberı́a aprender como programar una computadora, porque te enseña como
pensar”

Steve Jobs (1955-2011)

Colecciones
Además de los tipos de datos simples, numéricos, booleanos y caracteres, python posee
tipos más complejos que admiten una colección de datos, se trata de las tuplas, las listas y los
diccionarios.
Una tupla es una secuencia que permite almacenar una colección de datos inmutables (no
pueden ser modificados una vez creados). Los datos pueden ser de tipos diferentes y se puede
acceder a cada uno de ellos mediante su ı́ndice correspondiente, el ı́ndice 0 corresponde al primer
elemento de la tupla. Se puede acceder a un rango de la tupla y utilizar ı́ndices negativos para
empezar por el final:

tupla = ( ’ hola ’ ,1 ,22.5 , ’a ’ , ’ True ’)


print ( tupla [0]) hola
print ( tupla [0:4]) ( ’ hola ’ , 1 , 22.5 , ’a ’)
print ( tupla [ -1]) True

Las listas comparten las propiedades de las tuplas, pero con la posibilidad de modificar y añadir
elementos.

lista =[ ’ hola ’ ,1 ,22.5 , ’a ’ , ’ True ’]


lista [1]=7
print ( lista ) [ ’ hola ’ , 7 , 22.5 , ’a ’ , ’ True ’]
lista . append ( ’u ’)
print ( lista ) [ ’ hola ’ , 7 , 22.5 , ’a ’ , ’ True ’ , ’u ’]

Para eliminar un elemento de una lista se pueden usar los comandos remove y del.

lista . remove ( ’u ’)
print ( lista ) [ ’ hola ’ , 7 , 22.5 , ’a ’ , ’ True ’]
del ( lista [0])
print ( lista ) [7 , 22.5 , ’a ’ , ’ True ’]

Javier Garcı́a Maimó, PhD


2 Vectores y matrices

Los diccionarios usan una clave en vez de un ı́ndice para acceder a sus elementos.

dic ={ ’ c1 ’ :21 , ’ c2 ’: ’a ’}
print ( dic ) { ’ c2 ’: ’a ’ , ’ c1 ’: 21}
dic [ ’ c1 ’ ]=23
print ( dic [ ’ c1 ’ ]) 23
del ( dic [ ’ c1 ’ ])
print ( dic ) { ’ c2 ’: ’a ’}
dic [ ’ c1 ’ ]= ’ nueva ’
print ( dic ) { ’ c2 ’: ’a ’ , ’ c1 ’: ’ nueva ’}

Actividades
1. Crear una lista que contenga 10 nombres

(a) Mostrar la lista por pantalla


(b) Seleccionar el primer y el último elemento
(c) Seleccionar los tres primeros elementos
(d) Eliminar el último elemento

2. Crear un diccionario que contenga los nombres de los 4 componentes de una familia y el
dia de su cumpleaños.

(a) Mostrar el diccionario por pantalla


(b) Modificar la fecha del segundo miembro de la familia
(c) Añadir un nuevo miembro de la familia al diccionario

Tuplas, listas y diccionarios son elementos básicos del lenguaje, a continuación se verán
estructuras más especializadas en el manejo de objetos matemáticos.

Vectores y matrices en python


La librerı́a numpy proporciona objetos de alto rendimiento computacional para manejar
vectores y matrices, y también contiene funciones para crear matrices especiales. Para crear un
vector se puede usar el comando array.

import numpy as np
a = np . array ([2 ,3 ,5 ,8 ,9])
print ( a ) [2 3 5 8 9]

De la misma forma para definir matrices

b = np . array ([[1 ,2 ,3] ,[4 ,5 ,6]]) [[1 2 3]


print ( b ) [4 5 6]]

Se pueden obtener las dimensiones de un array usando la propiedad shape.

print ( a . shape ) (5 ,)
print ( b . shape ) (2 , 3)

Una capacidad muy útil de la librerı́a numpy es la de crear vectores equiespaciados, se pueden
usar los comandos linspace y arange.

Javier Garcı́a Maimó, PhD


3 Vectores y matrices

data = np . linspace (0 ,10 ,5)


print ( data ) [ 0. 2.5 5. 7.5 10. ]

data = np . arange (0 ,10 ,2)


print ( data ) [ 0. 2. 4. 6. 8. ]

En linspace el tercer parámetro es el número de puntos que se desea en el intervalo formado


por los dos primeros parámetros, mientras que en arange el tercer parámetro es el tamaño de
paso a utilizar entre los dos extremos del intervalo.
Es importante notar que tanto linspace como arange crean vectores con una sola dimension,
en caso de querer añadir otra dimensión se puede usar el comando newaxis.

a = np . linspace (0 ,1 ,10)
print ( a . shape ) (10 ,)
a = a [: , np . newaxis ]
print ( a . shape ) (10 , 1)

También existen funciones para crear matrices especiales, como una matriz de ceros, de unos
o la matriz identidad.

z = np . zeros ((2 ,2)) [[0. 0.]


[0. 0.]]

o = np . ones ((2 ,2)) [[1. 1.]


[1. 1.]]

e = np . eye (2) [[1. 0.]


[0. 1.]]

print (z ,o , e )

Se pueden buscar en la matriz datos que cumplan una determinada condición. En el ejemplo
se crea una matriz con valores aleatorios y se buscan los valores mayores que 0.5.

d = np . random . random ((2 ,2))

print ( d ) [[0.6228805 0.00993848]


[0.91127732 0.11444967]]

print ( d [d >0.5]) [0.6228805 0.91127732]

Operaciones con matrices


Por defecto las operaciones entre matrices se toman como operaciones elemento a elemento.
En caso de que se desee efectuar el producto matricial se usa el comando dot o bien la operación
@.

x = np . array ([[1 ,2] ,[3 ,4]]) [[ 6 8]


y = np . array ([[5 ,6] ,[7 ,8]]) [10 12]]

print ( x +y , x * y ) [[ 5 12]
[21 32]]

print ( np . dot (x , y )) [[19 22]


print ( x@y ) [43 50]]

Javier Garcı́a Maimó, PhD


4 Vectores y matrices

El paquete numpy contiene versiones vectorizadas de las funciones matemáticas usuales. La


librerı́a math no soporta operaciones con vectores, es importante importar los módulos con un
alias para evitar confusiones con funciones que tengan el mismo nombre en módulos diferentes.

Actividades
3. Definir el vector a = (2, 3, 5, 8, 9) y realizar las siguientes operaciones
(a) Calcular el cuadrado de cada elemento de a
(b) Encontrar el seno de a
(c) Agregar 3 a cada elemento de a
(d) Dividir cada elemento de a entre 2

4. Definir el vector b = (5, 2, 3, 14, 2)


(a) Sumar elemento por elemento los elementos de a con los de b
(b) Multiplicar cada elemento en a por el elemento correspondiente de b
(c) Calcular el producto punto entre a y b

5. Usar la función linspace para crear un vector de seis valores uniformemente espaciados
de 10 a 20

6. Usar la función a para crear un vector cuyos elementos vayan entre 1 y 49 con un
incremento de 3
 
1
4
 
5
7. Definir los vectores X = (1, 5, 6, 7, 3), Y = (3, 5, 0, 1, 6), Z =  
2
6
   
1 6 2 4 1
y las matrices A = 4 5 0, B = 2 5.
3 7 8 3 3

Javier Garcı́a Maimó, PhD


5 Vectores y matrices

(a) Realizar las siguientes operaciones en caso de ser posible:

i. XY xi. A2
ii. XZ xii. B2
iii. X+Z (X + Y )
xiii.
iv. X+Y 4
v. BA xiv. El cuadrado de cada elemento de X
vi. AAB xv. El cuadrado de cada elemento de B
vii. AAA xvi. X sin(Y )
viii. BB xvii. Sustituir el tercer elemento de X por
ix. 5X el quinto
x. 3Z + 1 xviii. Sumar todos los elementos de X

(b) Seleccionar los siguientes elementos:

i. El quinto elemento de X segunda fila de A


ii. Primeros tres elementos de X
vi. Primera y la tercera columna de A
iii. Elemento de la fila 2 columna 3 de A
iv. Tercera fila de A vii. Los cuatro elementos de las esquinas
v. Primera y tercera columna de la de A

(c) Eliminar la última fila de la matriz A

 
1 1 1 ··· 1
8. a) Definir la matriz M =  2 4 6 ··· 200  donde la última
3.0001 4.8976 4.2117 · · · 3.8876
fila son valores aleatorios entre 3 y 5
b) Seleccionar los elementos de la columna 10
c) Sumar los elementos de la segunda fila

9. Un grupo de amigos en un restaurante ordenaron cuatro hamburguesas a $0.99, tres


refrescos a $1.49, un batido de leche a $2.50, dos servicios de papas fritas a $0.99, y dos
servicios de aros de cebolla a $1.29. Todos los precios son por unidad. Plantear los vectores
correspondientes y utilizar el producto escalar para determinar el valor de la cuenta.

10. Definir la siguiente matriz y realizar las operaciones correspondientes:


 
0.1 0.3 0.3
M = 2 3 9 
2 4 1

(a) Calcular la inversa de la matriz M.


(b) Seleccionar los elementos de la tercera fila.
(c) Sumar los elementos de la primera columna.
(d) Localizar los elementos menores que 2 y sustituirlos por 0.
1 n
 
11. Comprobar que: e = lim 1 + de la siguiente forma: Crear una variable vectorial
n→∞ n
n que contenga los elementos: 1 10 100 500 1000 2000 4000 8000 y seguidamente crear
un nuevo vector y cuyas componentes sean los valores correlativos de la sucesión en los
ı́ndices de n. Comparar los valores de las componentes de y con el auténtico valor de e.

Javier Garcı́a Maimó, PhD


6 Vectores y matrices

12. En 1873, Johannes van der Diderik Waals propuso una versión modificada de la ley del
gas ideal con la que se modela mejor el comportamiento de los gases reales en un rango
más amplio de temperatura y presión.

n2 a
 
P + 2 (V − nb) = nRT
V

En esta ecuación las variables adicionales a y b representan valores caracterı́sticos de los


gases.

(a) Usar la ley de los gases ideales y la ecuación de van der Waals para calcular la
temperatura de vapor de agua (vapor), dados los siguientes datos:

Presión, P 220 bar


Moles, n 2 mol
Volumen, V 1L
2 bar
a 5.536 Lmol 2
L
b 0.03049 mol
Lbar
Constante del gas ideal, R 0.08314472 Kmol

(b) Encuentre el valor de la temperatura (T) para:


• 10 valores de la presión de 0 a 400 bar para el volumen de 1L.
• 10 valores de volumen entre 0.1 L y 10 L para una presión de 220 bar.

13. Los datos cientı́ficos acostumbran a expresarse en unidades del Sistema Internacional.
Sin embargo, gran parte de la infraestructura en los Estados Unidos se ha fabricado en
unidades Sistema Anglosajón. Los ingenieros deben tener fluidez en ambos sistemas y
deben tener especial cuidado al compartir datos con otros ingenieros.
Tal vez el ejemplo más notorio de la confusión de unidades es el M ars Climate Orbiter.
En septiembre de 1999: la nave se quemó en la órbita de Marte a causa de que la tabla
de datos, probablemente generada a partir de las pruebas de túnel de viento, expresaba
la fuerza en libras cuando el programa esperaba los valores en newtons.
Crear una tabla de conversión de libras a newtons. La tabla debe comenzar desde 0 hasta
1,000 lb, en intervalos de 100 lb. El factor de conversión es 1 lb=4.4482216 N.

14. Quemar un galón de gasolina en su coche produce unas 19.4 libras de CO2 . Calcular la
cantidad de CO2 emitida durante un año para los siguientes vehı́culos, suponiendo que
todos recorren 12,000 millas al año.

2010 Smart Car Fortwo 37 mpg∗


2010 Civic Coupe 29 mpg
2010 Civic Hybrid 43 mpg
2010 Chevrolet Cobalt 31 mpg
2010 Toyota Prius (Hybrid) 48 mpg
2010 Toyota Yaris 32 mpg
*mpg significa millas por galón

En Europa el consumo de los vehı́culos suele expresarse en litros por 100 km. Completar
la tabla anterior para añadir una columna en la que se muestre el consumo en litros por
100 km.

Javier Garcı́a Maimó, PhD


7 Vectores y matrices

15. La fuerza de fricción que sufre una masa m sobre una superficie horizontal es Froz = µmg,
donde µ es el coeficiente de fricción, que es una constante que depende fundamentalmente
de los materiales que componen la masa y la superficie.

a) Calcular la fuerza de rozamiento que experimentará una masa de 2 kg sobre una


superficie de madera
b) Crear una tabla que muestre la fuerza de rozamiento para masas entre 1 y 5 kg sobre
una superficie de madera
c) Crear una tabla que muestre la fuerza de rozamiento para masas entre 1 y 5 kg sobre
madera, acero y cemento

material µ
madera 0.4
acero 0.7
cemento 1

16. En aplicaciones de corriente continua, la energı́a eléctrica se calcula utilizando la ley de


Joule: P = V I, donde P es la potencia en Watts, V es la diferencia del potencial en
volts, I es la corriente eléctrica medida en amperes. Podemos combinar esta ley con la
ley de Ohm: V = IR, lo que nos da que la potencia es: P = I 2 R. La resistencia de
l
un conductor con sección transversal uniforme es R = ρ , donde ρ es la resistividad
A
del conductor medido en ohm − metro, l es la longitud del conductor y A es su sección
l
transversal. Entonces, resulta que la potencia eléctrica es: P = I 2 ρ .
A

material ρ (Ω/m)
plata 1.59 · 10−8
cobre 1.68 · 10−8
oro 2.44 · 10−8
aluminio 2.82 · 10−8
hierro 1.00 · 10−7

(a) Calcular la potencia que se disipa a través de un cable con diámetro de 0.001 m y
longitud 2.00 m para cada uno de los materiales mencionados en la tabla. Suponga
que el cable lleva una corriente de 120 amperios.
(b) Repetir el inciso a) para 10 longitudes de cable, desde 1 m hasta 1 km. Usar
espaciamiento logarı́tmico.

Gráficos
La librerı́a que contiene las capacidades gráficas se llama matplotlib.

Javier Garcı́a Maimó, PhD


8 Vectores y matrices

import numpy as np
import matplotlib . pyplot as plt
from math import pi

x = np . linspace ( -3* pi ,3* pi )


y = np . sin ( x )

plt . plot (x , y )
plt . show ()

Se puede personalizar la apariencia de la gráfica añadiendo parámetros adicionales

import matplotlib . pyplot as plt

y1 =[1.02 , 1.24 , 1.22 ,1.38 ,1.44 , 1.35]


y2 =[1.17 , 1.14 , 1.12 ,1.08 ,1.14 , 1.15]
x =[2014 ,2015 ,2016 ,2017 ,2018 ,2019]

plt . plot (x , y1 , ’r ’ ,x , y2 , ’ --g ’)


plt . axis ([2013 ,2020 ,0.8 ,1.8])
plt . title ( ’ Titulo ’)
plt . legend ([ ’1 ’ , ’2 ’ ])
plt . xlabel ( ’ Year ’)
plt . ylabel ( ’ Cost ’)
plt . show ()

Para más información acerca de la librerı́a se puede consultar este enlace

Ficheros de texto
A menudo es conveniente guardar o cargar información en fichero de texto, la librerı́a numpy
cuenta con las funciones savetxt y loadtxt que permiten almacenar o recuperar una matriz
de un archivo de texto.
El siguiente código guarda diez valores aleatorios entre 0 y 1 en el archivo datos.txt, para
recuperarlos de nuevo del archivo y graficarlos.

Javier Garcı́a Maimó, PhD


9 Vectores y matrices

import numpy as np
import matplotlib . pyplot as plt

N = 10
n = np . arange (1 , N +1)
r = np . random . random (10)
M = np . array ([ n , r ])
print ( M )

np . savetxt ( ’ datos . txt ’ , np . transpose ( M ))

M2 = np . loadtxt ( ’ datos . txt ’)


print ( M2 )

plt . plot ( M2 [: ,0] , M2 [: ,1])


plt . show ()

Gráficas múltiples. El comando subplot


Para crear diferentes gráficas ordenadas en una misma figura se puede usar el comando
subplot(m, n). Este comando divide el área de la figura en subareas formando una matriz de
m × n, el resultado se asigna a una variable axis, que define la posición donde de desea colocar
cada una de las gráficas según la componente de la matriz

import numpy as np
import matplotlib . pyplot as plt

x = np . linspace (0 , 2 * np . pi , 400)
y = np . sin ( x ** 2)

fig , axs = plt . subplots (2 ,2)


fig . suptitle ( ’ Subplot ’)
axs [0 ,0]. plot (x , y , ’r ’)
axs [0 ,1]. plot (x , -y , ’b ’)
axs [1 ,0]. plot (x , y , ’g ’)
axs [1 ,1]. plot (x , -y , ’y ’)

Gráficas 3D
Comando mesh
La gráficas 3D muestran una superficie, dada por las coordenadas z de los valores de la
función evaluada sobre una malla en el plano xy, utilizando lı́neas rectas para conectar los
puntos adyacentes.
Previamente al uso de las funciones gráficas es necesario construir la malla de valores donde
se evaluará la función de dos variables con el comando meshgrid.
La función plot surf ace muestra superficies en tres dimensiones. En este ejemplo se grafica
sin r p
la función sinc f (r) = donde r = x2 + y 2
r

Javier Garcı́a Maimó, PhD


10 Vectores y matrices

from mpl_toolkits . mplot3d import Axes3D


import matplotlib . pyplot as plt
import numpy as np

fig = plt . figure ()


ax = fig . gca ( projection = ’3 d ’)

X = np . arange ( -5 , 5 , 0.25)
Y = np . arange ( -5 , 5 , 0.25)
X , Y = np . meshgrid (X , Y )
R = np . sqrt ( X **2 + Y **2)
Z = np . sin ( R )

surf = ax . plot_surface (X , Y , Z )
plt . show ()

Curvas de nivel. Comando contour


El comando contour grafica las curvas de nivel de una función de varias variables:

import numpy as np
import matplotlib . pyplot as plt
x = np . linspace ( -2 ,2 ,100)
y = np . linspace ( -2 ,2 ,100)
X , Y = np . meshgrid (x , y )
Z = np . exp ( X * Y )
fig = plt . figure ()
plt . contour (X ,Y , Z )

Actividades
17. Utilizar la librerı́a matplotlib para graficar la función y = ex entre -2 y 3.

18. (a) Graficar en una misma gráfica las funciones y1 = sin x e y2 = cos x en el intervalo de
0 a 2π con un incremento de 0.1π. Añadir un tı́tulo.
(b) Rehacer el inciso anterior pero haciendo que la lı́nea de sin x sea de color rojo y la
lı́nea de cos x de color verde y salpicado. Agregue nombres a los ejes y una leyenda.
(c) Ajuste los ejes de modo que el eje x vaya de −1 a 2π + 1 y el eje y de −1.5 a 1.5.

19. Graficar las 6 funciones trigonométricas básicas en una misma ventana dividida en 3 filas
y dos columnas.

20. Un proyectil lanzado verticalmente a una velocidad inicial v0 tiene como posición y =
y0 + v0 t − 12 gt2 donde g = 9.8.

a) Crear un vector llamado t con valores equiespaciados entre 0 y 5 con un tamaño de


paso de 0.2.
b) Tomar y0 = 0 y v0 = 25 para graficar los valores de y respecto a t y escribir los
nombres de los ejes en la gráfica.
c) Guardar los datos de y para cada instante t en un fichero de texto.

Javier Garcı́a Maimó, PhD


11 Vectores y matrices

Mm 2
21. La ley de gravitación universal establece que F = G donde G = 6.67 × 10−11 Nkgm2 y
r2
M = 5.97 × 1024 kg.

a) Calcular la fuerza en Newtons que sufrirá una masa m = 75kg que esté a una distancia
r = 6400km.
b) Construir una tabla que muestre la fuerza para r entre 6400 y 10400 km con un
tamaño de paso de 50.
c) Graficar F frente a r.
q1 q2
22. La ley de Coulomb establece que la fuerza entre dos cargas es F = k , donde k =
r2
9 × 109 , qi son las cargas en Coulombs y r es la distancia que las separa. Además, F tiene
la dirección del radio vector que une las dos cargas.

a) Escribir un script que calcule la fuerza entre dos cargas dadas sus magnitudes y
posiciones.
b) Usar el script para calcular la fuerza entre una carga q1 = 2 × 10−5 C situada en la
posición (0,0) y q2 = 3 × 10−5 C situada en (2,2).
c) Graficar las dos cargas y el vector que representa la fuerza de Coulomb. Para graficar
un vector se puede usar la función quiver.

Javier Garcı́a Maimó, PhD

También podría gustarte