Está en la página 1de 8

10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.

ipynb - Colaboratory

Álgebra lineal
Laboratorio sobre vectores en R2 y R3

Presentado por Rafael Ángel Montoya Gutiérrez

Fecha: noviembre 12 de 2021

Ciudad: Bogotá, D.C.

Ejercicio No. 1
Traza la gráfica del triángulo con vértices A(−2, 2), B(4, 1) y C (1, 5). Luego calcula el área
usando la siguiente fórmula:

x ∣ y1 1 ∣
⎛⎡ 1 ⎤⎞
∣ 1 ∣
A = det ⎜⎢ x y2 1 ⎥⎟
2∣ 2

⎝⎣ ⎦⎠
∣ x3 y3 1 ∣

Desarrollo

a). Gráfica del triángulo usando Matplotlib:

import matplotlib.pyplot as plt
x = [-2, 4, 1, -2]
y = [2, 1, 5, 2]
plt.plot(x, y, "r")
plt.plot(x, y, "ro")
plt.grid()

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 1/8
10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.ipynb - Colaboratory

b). Cálculo del área del triángulo usando NumPy:

import numpy as np

M = np.array([[-2, 2, 1], [4, 1, 1], [1, 5, 1]])

detM = np.linalg.det(M)
A = (1/2)*np.abs(detM)

print("El área del triángulo es de", A, "unidades cuadradas")

El área del triángulo es de 10.5 unidades cuadradas

Ejercicio No. 2
(1.0 punto) a). Traza la gráfica del triángulo con vértices A(−3, 3), B(−1, −1) y C (4, 2).
(1.0 punto) b). Calcula el área del triángulo usando la fórmula del determinante.
(1.0 punto) c). Comprueba el resultado usando otro método de cálculo.

Ejercicio No.
Traza la gráfica del triángulo con vértices A(−3, 3), B(−1, −1) y C (4, 2). Luego calcula el área
usando la siguiente fórmula:

∣ x1 y1 1 ∣
⎛⎡ ⎤⎞
1 ∣ ∣
A = det ⎜⎢ x2 y2 1 ⎥⎟
2 ∣ ∣
⎝⎣ ⎦⎠
∣ x3 y3 1 ∣

Desarrollo

a).

import matplotlib.pyplot as plt

x = [-3, -1, 4, -3]

y = [3, -1, 2, 3]

plt.plot(x, y, "r")

plt.plot(x, y, "ro")

plt.grid()

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 2/8
10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.ipynb - Colaboratory

b).

import numpy as np

M = np.array([[-3, 3, 1], [-1, 1, 1], [4, 2, 1]])

detM = np.linalg.det(M)

B = (1/2)*np.abs(detM)

print("El área del triángulo es de",detM, "unidades cuadradas")

El área del triángulo es de 12.0 unidades cuadradas

c).

Ejercicio No. 3
(Kolman, B. & Hill, D. (2006). Álgebra lineal. Octava edición. PEARSON. P. 221.)

a). Codifica el mensaje CITAELMARTES usando la siguiente matriz:

1 2 3
⎡ ⎤

⎢1 1 2⎥
⎣ ⎦
0 1 2

Y la transformación lineal: L : R
3 3
→ R  como L(x) = Ax

b). Decodifica el siguiente mensaje:

51 34 22 78 59 37 74 47 42 48 34 15 75 55 39

Desarrollo

a). Codificación del mensaje CITAELMARTES

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 3/8
10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.ipynb - Colaboratory

for i in "CITAELMARTES":
  print(ord(i)-64, end=" ")

3 9 20 1 5 12 13 1 18 20 5 19

x1 = np.array([3, 9, 20])
x2 = np.array([1, 5, 12])
x3 = np.array([13, 1, 18])
x4 = np.array([20, 5, 19])

A = np.array([[1, 2, 3], [1, 1, 2], [0, 1, 2]])
A

array([[1, 2, 3],

[1, 1, 2],

[0, 1, 2]])

x1_cod = np.matmul(A, x1)
x2_cod = np.matmul(A, x2)
x3_cod = np.matmul(A, x3)
x4_cod = np.matmul(A, x4)

mensaje_cod = np.append(x1_cod, [x2_cod, x3_cod, x4_cod])
mensaje_cod = " ".join([str(i) for i in mensaje_cod])
print("Al codificar el mensaje CITAELMARTES, se obtiene", mensaje_cod)

Al codificar el mensaje CITAELMARTES, se obtiene 81 52 49 47 30 29 69 50 37 87 63 43

b). Decodificación del mensaje 51 34 22 78 59 37 74 47 42 48 34 15 75 55 39

y1_cod = np.array([51, 34, 22])

y2_cod = np.array([78, 59, 37])

y3_cod = np.array([74, 47, 42])

y4_cod = np.array([48, 34, 15])

y5_cod = np.array([75, 55, 39])

y1_cod

array([51, 34, 22])

invA = np.linalg.inv(A)

y1 = np.matmul(invA, y1_cod)

y2 = np.matmul(invA, y2_cod)

y3 = np.matmul(invA, y3_cod)

y4 = np.matmul(invA, y4_cod)

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 4/8
10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.ipynb - Colaboratory

y5 = np.matmul(invA, y5_cod)

y1

array([12., 12., 5.])

mensaje_decod = np.append(y1, [y2, y3, y4, y5])

for i in mensaje_decod:

  print(chr(int(i+64)), end="") 

LLEVARELOSMAPAS

Ejercicio No. 4
(2.0 puntos) a). Plantea un ejercicio similar al anterior. Tanto la matriz de codificación
como los mensajes deben ser diferentes al Ejercicio 3.
(4.0 puntos) b). Resuelve el ejercicio que planteaste, explicando el procedimiento paso a
paso.

Ejercicio No. 4
(Kolman, B. & Hill, D. (2006). Álgebra lineal. Octava edición. PEARSON. P. 221.)

a). Codifica el mensaje FUTBOLJUEVES usando la siguiente matriz:

2 1 2
⎡ ⎤

⎢3 2 1⎥
⎣ ⎦
1 2 0

Y la transformación lineal: L : R
3 3
→ R  como L(x) = Ax

b). Decodifica el siguiente mensaje:

51 41 14 37 34 14 61 80 31 67 92 53

Desarrollo

a). Codificación del mensaje FUTBOLJUEVES

import numpy as np

for i in "FUTBOLJUEVES":

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 5/8
10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.ipynb - Colaboratory

  print(ord(i)-64, end=" ")

6 21 20 2 15 12 10 21 5 22 5 19

Tomamos los números generados por el comando ord y lo añadimos a una matriz 3x4

x1 = np.array([6, 21, 20])

x2 = np.array([2, 15, 12])

x3 = np.array([10, 21, 5])

x4 = np.array([22, 5, 19])

Tomamos la matriz que creamos para decodificarl el texto

A = np.array([[2, 1, 2], [3, 2, 1], [1, 2, 0]])

array([[2, 1, 2],

[3, 2, 1],

[1, 2, 0]])

Se multiplica el numero generado por ord con la matriz que creamos

x1_cod = np.matmul(A, x1)

x2_cod = np.matmul(A, x2)

x3_cod = np.matmul(A, x3)

x4_cod = np.matmul(A, x4)

mensaje_cod = np.append(x1_cod, [x2_cod, x3_cod, x4_cod])

mensaje_cod = " ".join([str(i) for i in mensaje_cod])

print("Al codificar el mensaje FUTBOLJUEVES, se obtiene", mensaje_cod)

Al codificar el mensaje FUTBOLJUEVES, se obtiene 73 80 48 43 48 32 51 77 52 87 95 32

b). Decodificación del mensaje 51 41 14 37 34 14 61 80 31 67 92 53

Decodificamos las respuesta con la misma matriz llamada A

y1_cod = np.array([51, 41, 14])

y2_cod = np.array([37, 34, 14])

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 6/8
10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.ipynb - Colaboratory

y3_cod = np.array([61, 80, 31])

y4_cod = np.array([67, 92, 53])

invA = np.linalg.inv(A)

Esta línea invierte los números que trae la respuesta

y1 = np.matmul(invA, y1_cod)

y2 = np.matmul(invA, y2_cod)

y3 = np.matmul(invA, y3_cod)

y4 = np.matmul(invA, y4_cod)

Finalmente se muestra el mensaje DESDELUEGOSI

mensaje_decod = np.append(y1, [y2, y3, y4])

for i in mensaje_decod:

  print(chr(int(i+64)), end="")

DESDELUEGOSI

Conclusiones
(1.0 punto) Registra las conclusiones del laboratorio, considerando, entre otras cosas:

La aplicación del determinante en el cálculo de áreas.


En este punto lastimosamente por falta
de tiempo no puede hacer el código diferente para calcular el área esto requiere de un análisis
el cual no logre comprender.

La utilidad de las tranformaciones lineales para codificar/decodificar información.

En el ejercicio de codificación fue difícil entender como generar el código de respuesta


afortunadamente logre comprender la esencia del código así genera el resultado esperado.

El uso de transformaciones lineales para generar textos codificados es una herramienta muy
poderosa hoy en día que el uso de herramientas digitales va en alza igual que los programas para
hackear la información

El uso de Google Colaboratory.

Haz doble clic (o pulsa Intro) para editar

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 7/8
10/3/22, 21:49 Copia de Copia de Laboratorio_inicio.ipynb - Colaboratory

https://colab.research.google.com/drive/1s_3NggShlbP9IoqYmcd6zPC7gkiUpF7T#printMode=true 8/8

También podría gustarte