¿Qué son los vectores ortogonales y cómo identificarlos en Python?
Los vectores ortogonales son un concepto fundamental en álgebra lineal, esencial para múltiples aplicaciones en el análisis de datos y la computación gráfica. Dos vectores son ortogonales si el ángulo entre ellos es de 90 grados —en otras palabras, son perpendiculares. En este contenido, abordaremos cómo identificar vectores ortogonales mediante cálculos en Python, proporcionando tanto los fundamentos teóricos como las implementaciones prácticas.
¿Cómo calcular vectores ortogonales?
Para determinar si dos vectores son ortogonales, el producto interno (o producto punto) entre ellos debe ser igual a cero. Este producto es una medida crucial que no solo nos informa del ángulo entre los vectores sino también de su relación en el espacio multidimensional.
import numpy as np
import matplotlib.pyplot as plt
# Definimos los vectoresvector_x = np.array([2,2])vector_y = np.array([2,-2])# Producto internoproducto_interno = np.dot(vector_x, vector_y)print("Producto Interno:", producto_interno)# Resultado: Producto Interno: 0
En este caso, dado que el producto interno es cero, podemos confirmar que los vectores vector_x y vector_y son ortogonales.
¿Qué significa ser ortonormal?
El concepto de vectores ortonormales va un paso más allá. Un conjunto de vectores es ortonormal si son mutuamente ortogonales y, además, cada vector tiene una norma (o longitud) de uno. La normalización se consigue dividiendo cada vector por su propia norma.
# Calculamos la norma de los vectoresnorma_v1 = np.linalg.norm(vector_x)norma_v2 = np.linalg.norm(vector_y)# Verificamos si son ortonormalesprint("Norma de vector_x:", norma_v1)print("Norma de vector_y:", norma_v2)# Normalizaciónvector_x_normal = vector_x / norma_v1
vector_y_normal = vector_y / norma_v2
# Nuevo Producto Interno (de vectores normalizados)producto_interno_norm = np.dot(vector_x_normal, vector_y_normal)print("Producto Interno Normalizado:", producto_interno_norm)# Resultado: Los vectores normalizados pueden seguir siendo ortogonales si el producto sigue siendo 0
Al dividir cada vector por su norma, verificamos que el nuevo producto interno siga siendo cero, lo que conlleva que los vectores son ortonormales.
¿Cómo influye la dimensión del espacio en la ortogonalidad?
En el espacio de dimensión n (R^n), el número máximo de vectores que pueden ser mutuamente ortogonales es n. Por ejemplo, en dos dimensiones (R^2), solo puede haber dos vectores mutuamente ortogonales, ya que cualquier intento de agregar un tercer vector requeriría una dimensión adicional.
La ortogonalidad y ortonormalidad son pilares en áreas como el análisis de datos y el aprendizaje automático, donde te permiten simplificar cálculos al trabajar con bases ortogonales. Continúa explorando aspectos avanzados de álgebra lineal, ya que cada elemento nuevo que aprendas te abrirá más posibilidades en el campo de la computación y el análisis de datos. ¡Sigue adelante!
Un vector no puede ser ortogonal en solitario para serlo debe hacer referencia a otro vector, por lo tanto cuando hablemos de este tipo de vector nos estaremos refiriendo a dos mas vectores.
Ser ortogonal es que el angulo que formen estos vectores sea de 90 grados.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
A = np.array([0,0,2,2])B = np.array([0,0,2,-2])plt.quiver([A[0], B[0]],[A[1], B[1]],[A[2], B[2]],[A[3], B[3]], angles='xy', scale_units='xy', scale=1,)plt.xlim(-2,4)plt.ylim(-3,3)plt.show()# Muestra dos vectores que forman 90 grados.v1 = np.array([2,2])v2 = np.array([2,-2])print(v1.dot(v2.T))# Si nos muestra 0 es porque tienen 90 grados.# Para que un vector sea ortonormal su normal debe ser 1.print(np.linalg.norm(v1))# 2.82print(np.linalg.norm(v2))# 2.82# Ya que no nos da 1 su normal concluimos que no son ortonormales.# Pero para lograr que un vector sea ortonormal lo unico que debo realizar# Es dividir cada uno de sus elementos por su normal.vector_ortonormal = v1 *(1/np.linalg.norm(v1))print(np.linalg.norm(vector_ortonormal))# Nos devuelve 1.
Gracias por el ejemplo
Teorema: Si n vectores son ortogonales, entonces son linealmente independientes y generan el espacio R^n, es decir, cualquier conjunto de n vectores ortigonales forman una base de R^n
Un gran ejemplo de éstos son los vectores unitarios i, j, k que viven en R^3
👍🔥
Vectores Ortogonales:
Son vectores que forman ángulo de 90 grados. Matemáticamente:
A.dot(B) = 0 (puesto que cos(0) = 0)
Vectores Ortonormales:
Vectores ortogonales cuya norma es 1
Nota:
El máximo número de vectores ortogonales entre sí está dado por la dimensión del espacio en el que estamos trabajando
Aclaración.
Cos(0) = 1
Gracias 🥇
Para lograr ver los vectores con un ángulo de 90° cambié los límites en x 😅
Gracias por el ejemplo
Hola. 👋🏼 Descubrí que con la siguiente línea se puede hacer lo mismo sin modificar los límites en x
plt.gca().set_aspect("equal")
si se piensa en los ejes x,y ,z. Si los x,y son ortogonales uno que sea ortogonal a los dos se sale de R2, es decir z que esta en R3.
Si el producto punto o producto interno(np.dot) de dos vectores es cero, quiere decir que son ortogonales, ya que el coseno de 90° es 0, (v1.v2 = normav1normav20 = 0)
Pero no hay que dividir en el producto de las normas de los vectores ?? tenia entendido que el coseno del angulo que forman dos vectores es:
cos(x) = a * b / norma(a) * norma(b)
Olvida lo que dije anteriormente xd, me olvide que desde que el producto interno de 0 no importa cuanto de el producto de las normas igual el resultado de esa division va a ser 0
Los vectores ortogonales y las matrices ortogonales son conceptos importantes en álgebra lineal que están relacionados con la noción de perpendicularidad y preservación de la longitud y ángulos.
Vectores ortogonales:
Dos vectores se consideran ortogonales si el ángulo entre ellos es de 90 grados (o pi/2 radianes). Esto significa que su producto interno es cero. Algunas propiedades de los vectores ortogonales son:
Si dos vectores son ortogonales, entonces son linealmente independientes.
Si un conjunto de vectores es ortogonal y todos los vectores son diferentes de cero, entonces el conjunto es linealmente independiente.
Matrices ortogonales:
Una matriz cuadrada se considera ortogonal si su matriz traspuesta es igual a su inversa. Esto significa que cuando se multiplica por su traspuesta, el resultado es la matriz identidad. Algunas propiedades de las
matrices ortogonales son:
Las columnas (y las filas) de una matriz ortogonal forman un conjunto de vectores ortogonales entre sí.
La norma de cada columna (y cada fila) de una matriz ortogonal es igual a 1.
La multiplicación de dos matrices ortogonales resulta en otra matriz ortogonal.
La matriz inversa de una matriz ortogonal es su traspuesta.
La determinante de una matriz ortogonal puede ser +1 o -1.
Las matrices ortogonales tienen aplicaciones importantes en diversas áreas, como la geometría, el procesamiento de imágenes, la criptografía y la resolución de sistemas de ecuaciones lineales.
Es importante tener en cuenta que los conceptos de vectores ortogonales y matrices ortogonales están estrechamente relacionados, ya que las columnas de una matriz ortogonal forman un conjunto de vectores ortogonales, y viceversa, un conjunto de vectores ortogonales puede ser utilizado para formar una matriz ortogonal.
import numpy as np
# Definir dos vectores
v1 = np.array([1,0,0])v2 = np.array([0,1,0])# Verificar ortogonalidad
dot_product = np.dot(v1, v2)if dot_product ==0:print("Los vectores son ortogonales.")else:print("Los vectores no son ortogonales.")
para ver el angulo entre vectores en grados
´import math
Z = math.acos(x.T.dot(y) / (np.linalg.norm(x) * np.linalg.norm(y)))
print(np.degrees(Z))´
Vectores ortogonales, matrices ortogonales y sus propiedades
Un vector ortogonal es ortogonal únicamente si es en referencia a otro vector, siempre que hablemos de vectores ortogonales, estaremos hablando de dos o más vectores.
Que un vector sea ortogonal, es que el ángulo que los vectores están formando, es un ángulo de 90°, veamos como calcularlo en Python:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
# Definimos los vectoresx = np.array([0,0,2,2])y = np.array([0,0,2,-2])# Graficamosplt.quiver([x[0], y[0]],[x[1], y[1]],[x[2], y[2]],[x[3], y[3]], angles='xy', scale_units='xy', scale=1,)plt.xlim(-2,4)plt.ylim(-3,3)plt.show()
Lo que veremos es que tendremos dos vectores, que forman un ángulo de 90°:
!Untitled
Sin embargo, vamos a comprobar esto usando el producto interno:
# quitamos orígenes para calcular el producto internox = np.array([2,2])y = np.array([2,-2])print(x.dot(y.T))# Output = 0
Si el producto interno entre dos vectores es 0, significa que el ángulo que forman ambos vectores es un ángulo de 90°, y podemos decir que son ortogonales entre si. Ahora, si deseamos comprobar si estos vectores son ortonormales, tendremos que calcular su norma y si es 1, entonces son ortonormales:
Los resultados nos muestran que no son ortonormales. Veamos otro ejemplo cambiando los valores de los vectores:
x = np.array([1,0])y = np.array([0,-1])# El resultado nos demuestra que es ortogonalprint(x.dot(y.T))# Output = 0# Y además son vectores ortonormales según sus resultadosprint(np.linalg.norm(x))# Output = 1.0print(np.linalg.norm(y))# Output = 1.0
Imagina que tienes algunos vectores en un espacio llamado R2, que es como un plano. Si quieres que estos vectores formen ángulos de 90 grados entre sí (como en una esquina de un cuadrado), necesitas solo dos vectores.
Pero, si deseas agregar un tercer vector llamado 'z' y aún quieres que todos los ángulos sean de 90 grados, necesitas moverte a un espacio tridimensional, llamado R3. En R3, puedes tener tres vectores que formen ángulos de 90 grados entre sí, como las esquinas de un cubo.
Entonces, en general, para que 'n' vectores puedan tener ángulos de 90 grados entre todos ellos, necesitas estar en un espacio dimensional Rn, donde 'n' es el número de vectores que tienes. Cada dimensión adicional permite que agregues otro vector que forme ángulos de 90 grados con los demás.
Buen sumarry gracias!
se puede tener una matriz compuesta de vectores ortogonales y decir que la matriz es ortogonal?
Creo que no mi estimado. El concepto de ortogonalidad es exclusivo al manejo de vectores. Lo que corresponde a los vectores de las matrices, es si son linealmente independientes o no, para también saber si son singulares o no.
Saludos!
Una matriz es ortogonal cuando todas sus filas y columnas son ortonormales.
No existe la definición de la matriz ortonormal.
matemáticamente estos dos vectores serian lo mismo ya que uno tiene explicito que el las otras r su valor es 0 ósea que es un hiperplano de estas pero el otro no?
np.array([0,0,2,2])== np.array([2,2])
Matemáticamente hablando no serían lo mismo puesto que [0,0,2,2] pertenece a R4 y [2,2] pertenece a R2. Inclusive el 0 en R4 y al 0 en R2 serían elementos distintos porque pertenecen a distintos espacios vectoriales.
Pero sí, podría decirse que son los mismos porque técnicamente generan el mismo espacio (una recta que pasa por el origen). Aunque te digo, formalmente no son lo mismo. De hecho si los sumas te debería salir un error de dimensiones.
Cuidado, que ese vector tenga 4 valores es porque asi quiere el .quiter() de numpy, no esta interpretando 4 dimensiones topológicas. Los valores y cuantos valores tenga el vector se interpreta a partir de que seran input de algo no necesariamente geometrico, y no todo lo geometrico es igual como el caso de estos.
Aclarando eso, bajo ciertas precauciones esos 2 vectores pueden interpretar el mismo punto del espacio -se hace en este curso (por otros motivos)- como cuando se hace una transformación que pueda aplanar el hiperespacio hasta un plano y ese punto justo quedo en el mismo sitio.
Operando con numpy, mejor es no combinar y tratar de mantener una unica notación.
La ley no sería la siguiente?:
"es imposible tener n+1 vectores ortogonales en un espacio Rn"
ya que si es posible (al contrario de lo que dice el profe) que se puede dar n vectores ortogonales en un espacio Rn. ejemplo: 2 vectores en un espacio de 2 dimensiones.
De acuerdo
Si Un vector es 4,5
tbm 0,0,5,6 punto de origen y su limite
entonces si tienes mas valores en el indice como lo interpreto?
ejemplo 0,0,2,9,2,3,5
este vector tiene 7 valores , como se interpretaria??
Los valores del 'vector' van de la mano del input que puede tener una función, método u operador; por ejemplo es asi que para graficar en 2d con .quiter te pide 4 inputs en el que cada uno tiene un rol.
.
Por otro lado, un vector de 4 valores numéricos en un espacio tetradimensional los inputs tienen un rol diferente, estos indican las coordenadas de la flecha (distinto al que interpreta .quiter).
.
En otras palabras no hay respuesta que satisfaga todo, hasta podria ser valores por cada día de la semana ya que mencionas 7 si crease una función en el que necesito ese input. No todo tiene que ser interpretado geometricamente, tiene su momento como ahora en este curso.
.
Entonces, hay multiples interpretaciones sobre el número de elementos, la temporalmente correcta es la que aparezca en las documentaciones de la función donde la usarás.
Vectores ortogonales
Ser ortogonal es que el angulo que formen estos vectores sea de 90 grados, siguiendo la ortonomalizacion de Gram-Shmidt
v1 = w1
v2 = v2 -( v2.w1 / w1.w1) *w1
import numpy as np
import matplotlib.pyplot as plt
Sea una base ortogonales que pertenecen F (campo, R^n, C^n, polinomios, etc), se puede encontrar una base ortonormal con el procedimiento de Gram–Schmidt, donde se toma un elemento de aquella lista hasta llegar al j - 1 vector.
Alguien me podría decir porque en el minuto 4:22 el profesor dice que los vectores tienen un ángulo de 90! basándose en el resultado de su producto interno?
Muchas Gracias
Vale se que es porque cos (0) = 0 pero aun así no entiendo muy bien cual es la relacion
Hola jesus, el producto interno es |V1v2| = |v1||v2|*cos(angulo entre v1 y v2). Cuando el ángulo es de 90° entonces tendríamos cos(90°) que es igual a 0.
pd: cos(0°) = 1
si va a ser otorgonal es en referencia a otro vector, entonces siempre que hablemos de vectores ortogonales siempre nos haremos referencias a dos o más vectores.
ser ortogonal es que el ángulo que forma estos dos vectores es de 90 grados.
El producto nos permite conocer cual es el ángulo entre los vectores.
Ser ortonormal es cuando la norma de los vectores es uno.
Un vector es ortogonal con referencia a otro vector.
Ser ortogonal es que los vectores forman un ángulo de 90 grados.
gracias por el resumen
Es decir que si nos remontamos al método gráfico 2 vectores son ortogonales si son perpendiculares entre sí.
x = np.array([0,0,1,0])y = np.array([0,0,0,-1])plt.quiver([x[0], y[0]],[x[1], y[1]],[x[2], y[2]],[x[3], y[3]], angles ='xy', scale_units ='xy', scale=1, color = sns.color_palette())plt.xlim(-2,4)plt.ylim(-3,3)plt.show()