El profesor nunca menciona por que elige la matriz con seno y coseno. Resulta que esa matriz, se llama una “matriz de rotación”. La cual me permite rotar un vector 90 grados. Es por esta razón que es una matriz ortogonal.
Conceptos básicos de álgebra lineal y configuración del entorno de trabajo
Presentación del curso y la necesidad del Álgebra Lineal
Anaconda + Python, Creación de un entorno y actualización de paquetes
Uso de Jupyter Notebook
Creando las bases, escalares, vectores y matrices. ¿Qué es un tensor? ¿Cómo se representa?
Realiza operaciones básicas
Dimensión de un escalar, vector, matriz o tensor
Transposición, suma de matrices y escalares
Suma de matrices y vectores (broadcasting)
Operaciones con matrices
Producto interno entre una matriz y un vector
Producto interno entre dos matrices
Propiedades de las matrices: la multiplicación de matrices es asociativa y distributiva, no es conmutativa
Transposición de un producto de matrices
Cómo comprobar la solución de un sistema de ecuaciones lineal
Tipos especiales de matrices: Identidad, Inversa, Singulares
Aplicación de la inversa de una matriz para resolver un sistema de ecuaciones lineales
Sistema de ecuaciones lineales
Ejemplos de sistemas sin solución, con una solución y con infinitas soluciones
Graficar vectores
¿Qué es una combinación líneal?
¿Qué es un espacio y un subespacio?
Vectores linealmente independientes
Validar que una matriz tenga inversa
Normas
Qué es una norma y para qué se usa. Desigualdad Triangular
Tipos de normas: norma 0, norma 1, norma 2, norma infinito y norma L2 al cuadrado
El producto interno como función de una norma y su visualización
Matrices y vectores especiales
La matriz diagonal y la matriz simétrica: sus propiedades
Vectores ortogonales, matrices ortogonales y sus propiedades
Matrices ortogonales y sus propiedades
Otras funciones de álgebra lineal
El determinante y la traza
Cierre del curso. Continua con el Curso de Álgebra Lineal Aplicada a Machine Learning.
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Sebastián Sosa
Aportes 24
Preguntas 5
El profesor nunca menciona por que elige la matriz con seno y coseno. Resulta que esa matriz, se llama una “matriz de rotación”. La cual me permite rotar un vector 90 grados. Es por esta razón que es una matriz ortogonal.
Aqui les va un pequeño truco para hacer las aproximaciones a cero.
Se trata de definir un valor muy pequeño (épsilon) contra el que se comparan los elementos de la matriz y si son menores que él entonces ajustarlos a cero:
eps= 1e-17
A[np.abs(A) < eps] = 0
Matriz Ortogonal
Es la matriz cuyos vectores filas son ortonormales mutuamente (lo mismo con los vectores columnas)
Cumplen con la siguiente identidad:
A_tA = AA_t = I
A_t = inv(A)
Nota:
Cuidado con los errores que podemos propagar al operar con las aproximaciones que hace python
Una matriz es ortogonal cuando todas sus filas son mutuamente ortonormales y todas sus columnas son mutuamente ortonormales.
Así mismo, una matriz ortogonal es una matriz cuadrada cuya matriz inversa coincide con su matriz transpuesta.
Para los que estan haciendo el curso ahora(16/8/2020) no les va a dar el resultado de print(1/A_t.dot(A))
y
A_t = A.T
print(A_t.dot(A))
print(A.dot(A_t))```
como al profe ya que a traves del tiempo los lenguajes tienen actualizaciones y ahora el resultado de esos calculos es 0 e infinito ya que se entiende que el profesor no obtiene esos resultados por limitaciones de la computadora
De acuerdo al teorema no es necesario probar tanto que las filas y las columnas son ortonormales entre si, solo con las columnas basta
Por si alguien al igual que yo, tiene la duda del uso de las “rebanadas” en python con matrices:
import numpy as np
matriz = np.array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
print(matriz[0,:]) #imprime la primera fila de la matriz
print(matriz[1,:]) #imprime la segunda fila de la matriz
print(matriz[:,0]) #imprime la primera columna de la matriz
print(matriz[:,1]) #imprime la segunda columna de la matriz
A mi me da lo que indica el profe.
Que opinan del codigo que cree para verificar si una matriz es ortogonal?
def ortogonal(matriz):
cero = True
for i in range(3):
for j in range(3):
if i != j and i < j:
punto = matriz[:,i].dot(matriz[:,j])
if punto != 0:
cero = False
return cero
matriz = np.eye(3)
print(matriz)
if ortogonal(matriz) and ortogonal(matriz.T):
print('Matriz Ortogonal')
else:
print('NO es Matriz Ortogonal')
Al multiplicara A.A_t obtuve esto :
[[1. 0.]
[0. 1.]]
[[1. 0.]
[0. 1.]]
Nota.
Propiedades de las matrices ortogonales:
(A)(A.T) = (A.T)(A) = matriz_identidad
A.T = A^-1
Me sale difetente:
print(A[0,:].dot(A[1,:]))
print(A[:,0].dot(A[:,1]))
7.937715190675968e-18
-7.937715190675968e-18
Si redondeamos nos genera el error.
print(1/np.around(A_t.dot(A)))
Una matriz ortogonal es una matriz cuadrada en la que las filas (o columnas) son vectores ortogonales unitarios. Esto implica que el producto interno entre cualquier par de filas (o columnas) es cero y las filas (o columnas) tienen norma igual a 1. Las matrices ortogonales tienen varias propiedades importantes:
Las matrices ortogonales son ampliamente utilizadas en aplicaciones como la geometría computacional, la compresión de imágenes, el procesamiento de señales, el reconocimiento de patrones y el aprendizaje automático, entre otros.
Para quienes no han entendido por qué el producto punto entre los vectores de la matriz (columnas) es igual a cero:
El producto punto (también conocido como producto escalar) es una operación matemática que se utiliza para calcular la relación entre dos vectores. Esta operación produce un escalar que indica la proyección de un vector sobre otro vector en un espacio euclidiano.
Cuando dos vectores son ortogonales (perpendiculares) entre sí, el producto punto entre ellos es cero, lo que significa que no hay proyección de un vector sobre el otro. En cambio, si los vectores no son ortogonales, el producto punto produce un resultado que depende de la magnitud de los vectores y el ángulo que forman entre sí.
Yo lo realicé como se muestra, y en mi caso sí marcó la diferencia entre 0, porque también se obtuvo correctamente la matriz identidad con 1 y 0, tal vez sea porque en 2022 ya se actualizaron esas funciones de numpy, aunque sólo es una suposición, tal vez alguien lo pueda confirmar.
Podemos utilizar esta ++ funcion np.linalg.norm(matrix, axis)++ para calcular la norma por columnas axis = 0 o por filas axis=1.
# ortonorm by columns
print(np.linalg.norm(A, axis=0))
# ortonorm by rows
print(np.linalg.norm(A, axis=1))
Si, hay que tener cuidado con todo eso y aproximarlo a cero
me gusto esta clase
Muchas gracias Johan, importante aporte.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?