No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Distancia entre vectores

20/28
Recursos

Aportes 17

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

No tengo hoja cuadriculada y la verdad me encanta geogebra así que esto fue lo que hice:

El sumar un 0 o multiplicar por 1 lo conocía como el teorema del japones: “Nikita Nipone” 😉

Para aquellos que no escucharon nunca de las normas y los tomó por sorpresa la utilización de las mismas en la clase a pesar de que no fueron apropiadamente explicadas, comparto la diferencia entre las mismas

  • Norma L0: el número de elementos distintos de cero en el vector.

  • Norma L1: la suma de los valores absolutos de los elementos del vector.

  • Norma L2: la raíz cuadrada de la suma de cuadrados de los elementos del vector.

  • Norma L3 (orden inf) = Elemento máximo del vector.

Vectores de ejemplo y el uso de las siguientes normas

a = np.array([1,2])
b = np.array([2,3])
c = np.array([4,2])
d1 = np.linalg.norm(a-c)
d2 = np.linalg.norm(a-b) + np.linalg.norm(b-c)
d1,d2


prueba = d1 <= d2

output:
(3.0, 3.6502815398728847)

output:
True

import numpy as np
a=np.array([1,1])
b=np.array([2,3])
c=np.array([4,2])
d=np.linalg.norm(a-c) #calculo de la norma usando solo numpy
u=np.linalg.norm(a-b)
v=np.linalg.norm(b-c)
print('d =',d)
print('u =',u)
print('v =',v)
print('|a-b|+|b-c| =', u+v)

d = 3.1622776601683795
u = 2.23606797749979
v = 2.23606797749979
|a-b|+|b-c| = 4.47213595499958

||a-c|| ≤ ||a-b|| + ||b-c||

Usando quiver de la librería matplotlib 📕

Lo hice solo en código

import numpy as np

a = np.array([1,1])
b = np.array([2,3])
c = np.array([4,2])

v = np.linalg.norm(a-c)
x = np.linalg.norm(a-b)
y = np.linalg.norm(b-c)

print("v =", v)
print("x =", x)
print("y =", y)
print("a-b + b-c", x+y)
print("a-c es menor o igual qué a-b + b-c",v <= x+y)

Aplicable:
• La norma L0: devuelve la cantidad de elementos diferentes de 0 del vector.
• La norma L1: devuelve la suma de los valores absolutos de los elementos del vector.
• La norma L2: La magnitud del vector desde su origen.
• La norma infinito: devuelve el valor absoluto más grande del vector

Hola amigos,
Acá mi código para demostrar la desigualdad triangular con respecto a la distancia entre vectores. Utilizando los datos dados por el profesor:
||a−c||=||a−b+b−c||≤||a−b||+||b−c||

a = np.array([1,1])
b = np.array([2,3])
c = np.array([4,2])
print("¿Se cumple que ||a-c|| <= que ||a-b||+||b-c||?: ", np.linalg.norm(a-c) <= np.linalg.norm(a-b)+np.linalg.norm(b-c) )

¿Se cumple que ||a-c|| <= que ||a-b||+||b-c||?: ** True**

Por separado, si |a-c|=d1 y ||a-b||+||b-c|| = d2, entonces:

d1 = np.linalg.norm(a-c)
d2 = np.linalg.norm(a-b)+np.linalg.norm(b-c)
print("¿Es verdad que d1 <= que d2?: ", d1 <= d2 )

¿Es verdad que d1 ** <=** que d2?: ** True**

import numpy as np
from numpy.linalg import norm
a = np.array([1,1])
b = np.array([2,3])
c = np.array([4,2])
a_b = norm(a-b)
a_c = norm(a-c)
b_c = norm(b-c)

print(a_c<=a_b+b_c)
import numpy as np

a = np.array([1, 1])
b = np.array([2, 3])
c = np.array([4, 2])

distance_ab = np.linalg.norm(a - b)
distance_bc = np.linalg.norm(b - c)
distance_ac = np.linalg.norm(a - c)

print(distance_ab)
print(distance_bc)
print(distance_ac)
inequality_check = distance_ac <= distance_ab + distance_bc
print(inequality_check)

Lotananza: Parte más alejada de un lugar.

  • La norma Euclidiana es también conocida como la norma L2

Por alguna razón no me da lo mismo, creía haciendo a mano estaba errado pero tampoco en python. Algo hice mal?, los otros si me dan igual. Bueno casi!

Lo grafique con plt.quiver

  • para graficar los vectores de distancia entre vectores se da como origen uno de los vectores pero como dirección se da la resta entre este vector y el vector hacia donde le estamos calculando la distancia, no se si este proceso se pueda redactar en términos de la norma , entiendo que tiene algo que ver ya que la dirección es la resta de los vectores
import matplotlib.pyplot as plt
import seaborn as sns
a = np.array([1,1])
b = np.array([2,3])
c = np.array([4,2])

fig, ax = plt.subplots()

plt.quiver([0,0,0,a[0],a[0],b[0]],
          [0,0,0,a[1],a[0],b[1]],
          [a[0],b[0],c[0],1,3,2],
          [a[1],b[1],c[1],2,1,-1], angles = 'xy', scale_units ='xy', scale = 1,color = sns.color_palette())

plt.xlim(0,4)
plt.ylim(0,3.5)

Se comprueba la propiedad triangular mediante el siguiente código:

import numpy as np

a = np.array([1,1])
b = np.array([2,3])
c = np.array([4,2])

d1 = np.linalg.norm(a-c)
d2 = np.linalg.norm(a-b+b-c)
d3 = np.linalg.norm(a-b) + np.linalg.norm(b-c)

d1,d2,d3

El resultado fue el siguiente:

d1= 3.16
d2 = 3.16
d3= 4.47

d1 = d2 <= d3

Y la representación gráfica de los vectores es la siguiente: