Las matrices diagonales son un tipo especial de matrices que tienen un valor numérico en cada una de las posiciones de su diagonal principal, mientras que todos los demás elementos fuera de esta diagonal son cero. Estas matrices son de gran importancia en el álgebra lineal debido a su simplicidad y características únicas. Pueden no necesariamente ser cuadradas, es decir, tener el mismo número de filas y columnas, aunque las matrices diagonales cuadradas son las más comunes y estudiadas.
¿Cómo representamos una matriz diagonal en Python?
En Python, las matrices diagonales se pueden crear fácilmente utilizando librerías como numpy. A continuación, se muestra cómo crear una matriz diagonal:
import numpy as np
# Definimos un vector con elementos 1, 2, 3, 4 y 5vector = np.array([1,2,3,4,5])# Creación de una matriz diagonal a partir del vectormatriz_diagonal = np.diag(vector)print(matriz_diagonal)
La matriz resultante tendrá los elementos del vector en su diagonal principal y ceros en el resto de las posiciones.
¿Por qué las matrices diagonales facilitan las multiplicaciones con vectores?
Una de las particularidades de las matrices diagonales es que al multiplicarlas por un vector, no se realiza una combinación lineal compleja de las distintas coordenadas. En cambio, cada elemento del vector es simplemente multiplicado por el correspondiente elemento diagonal. Este hecho hace que las matrices diagonales resulten útiles y sencillas al realizar cálculos.
Por ejemplo:
# Matriz diagonal con elementos en la diagonal 2, 3, 4, 5matriz = np.diag([2,3,4,5])# Definimos un vector con todos unosvector_unos = np.ones(4)# Producto de la matriz con el vectorresultado = matriz.dot(vector_unos)print(resultado)
El resultado será un vector donde cada elemento es la multiplicación directa de los componentes originales del vector por los elementos en la diagonal de la matriz.
¿Cómo se calcula la inversa de una matriz diagonal?
Calcular la inversa de una matriz diagonal es simple. La inversa de una matriz diagonal es otra matriz diagonal donde cada elemento en la diagonal es el inverso multiplicativo (es decir, 1 dividido por el elemento) del elemento en la matriz original.
Implementación en Python
Para demostrarlo con Python:
# Calculamos la inversa de una matriz diagonalmatriz_inversa = np.diag([1/2,1/3,1/4,1/5])# Producto interno para verificar que es la inversaidentidad = matriz.dot(matriz_inversa)print(identidad)
El resultado debería ser una matriz identidad, confirmando así que se ha calculado correctamente la inversa.
¿Qué caracteriza a las matrices simétricas?
Una matriz es simétrica si es igual a su transpuesta. Esto implica que los elementos situados en posiciones coincidentes con respecto a su diagonal principal son iguales. Para una matriz general, esto es más complicado que para las matrices diagonales, ya que estas últimas son siempre simétricas por definición: tienen ceros tanto abajo como arriba de la diagonal principal.
Ejemplo de matriz simétrica
# Definimos una matriz simétricamatriz_simetrica = np.array([[1,2,3],[2,-1,7],[3,7,11]])# Transpuesta de la matriztranspuesta = matriz_simetrica.T
# Verificamos si la matriz es simétricaes_simetrica = np.array_equal(matriz_simetrica, transpuesta)print(es_simetrica)
Esta verificación nos muestra que efectivamente la matriz definida es simétrica ya que es igual a su transpuesta.
Aprender sobre matrices diagonales y simétricas enriquece nuestra comprensión y capacidad de trabajar más eficientemente con el álgebra lineal. ¡Sigue explorando estas fascinantes herramientas matemáticas!
No sé si ya lo han dicho en clases anteriores pero quisiera hacer una aclaración:
Al principio cuando el profe quiere hacer la multiplicación
[A]*v1
para mostrar que no hay combinaciones lineales, define un vector v1 como
v1 = np.array([[1,1,1,1]])
Noten que para definirlo usó corchetes dobles [ [ ] ] en vez de corchetes simples [ ]. ¿Porqué esta diferencia? ¿Qué efecto tiene en Python a nivel matemático?
Pasa que Python permite definir dos tipos de vector o array como por ejemplo
v1 = np.array([2,2])v2 = np.array([[2,2]])
Ambos parecen ser el mismo elemento pero si nosotros le preguntamos a Python por su dimensión, es decir
np.shape(v1)np.shape(v2)
nos devolverá
np.shape(v1) = (2,)
np.shape(v2) = (1,2)
claramente son distintos. Hay que saber la diferencia entre ambos elementos porque, dependiendo de cuál usemos, se admiten o no diferentes operaciones en Python y en Matemáticas (estrictamente hablando).
Por ejemplo, si definiéramos los vectores y la matriz
Per si quisiéramos hacer el producto interno , es decir el producto entre matrices definido estrictamente en matemáticas
b3 =A.dot(v1)b4 =A.dot(v2)
la primera operación la admite (B3 = A.dot(v1)) porque para Python el vector v1 tiene una sola dimensión (np.shape(v1)=(2,)) mientras que v2 tiene dos dimensiones (np.shape(v2)=(1,2)). Dado que v2 tiene dos dimensiones, Python realiza una operación estrictamente matemática y por lo tanto no admite la multiplicación entre dos matrices
2x2 * 1x2
Quisiera agregar dos cosas, en primer lugar:
b3 =A.dot(v1)
devuelve un vector
b3 = [2 4]
con dimension (2,)
En segundo lugar la operación
b4 =A.dot(v2)
como ya dije no se puede hacer matemáticamente. Se podría hacer si redefiniéramos el vector v2 como
v2 = np.array([[2],[2]])
Osea un vector de dimensión (2,1). En cuyo caso obtendríamos también
b4 = [ [2]
[4] ]
pero esta vez como vector columna, y es obvio, porque en vista de que v2 tiene dimensión 2x1 la operación
A.dot(v2)
se ejecuta entre matrices con dimensiones
2x2 * 2x1
Muchas gracias por la explicación
gracias por la aclaración
La matriz diagonal y la matriz simétrica: sus propiedades
Matriz diagonal
La matriz diagonal es aquella que tiene solo numeros en su diagonal.
Algo a tener en cuenta es que al multiplicarlas por un vector no estan siendo una combinacion lineal de las distintas coordenadas sino lo que hace es una ponderacion de los elementos del vector por el cual estoy multiplicando.
Otra cosa a tener en cuenta de las matrices diagonales es que para sacar su matriz inversa lo unico que debo realizar es crear una matriz cuyos elementos en la diagonal esten invertidos es decir 1/x.
Estas matrices son aquellas las cuales al realizar la transpuesta esta es igual a matriz original $A^t = A$.
Otra propiedad a tener en cuenta es siendo A y B matrices simetricas entonces $(A.B)^t=B.A$.
Gracias por el aporte
Matriz Diagonal
Es la matriz cuyos únicos valores distintos de cero son los de la diagonal. El producto punto de esta matriz es una ponderación de lo valores del vector dado. Calcular su inversa es sencillo, basta con colocar el inverso multiplicativo (1/n) de cada valor de la diagonal.
Matriz simétrica
Es aquella matriz cuya transpuesta e la misma matriz (A_t=A). Todas las matrices diagonales son simétricas.
Las matrices simétricas cumplen la siguiente relación:
(AB)_t=BA
Existe otro tipo de matriz que se llama matriz "antisimétrica" o "skew-symmetric matrix", donde A_T = -A.
Se repite el ejemplo de matriz diagonal con el vector[1,2,3,4,5] dos veces al principio
pense que me estaba volviendo demente =P
Ya fue resuelto :)
Matriz simétrica: A^T = A
Matriz antisimétrica A^T = - A
No se menciono pero toda matriz cuadrada puede expresarse como una suma de una matriz simétrica más una matriz antisimétrica
Se que en el minuto 6:49 el código es el siguiente:
v1 = np.array([[1,1,1,1]])```
Pero alguien me podría decir porque lleva doble **[]**?Vale se que si ene el vector no sale de forma **vertical** y no funciona ni aunque le pongamos la función transpuesta.Pero alguien me podría dar un fundamento matemático detrás de esto?Gracias
Hola Jesús … Creo que la única explicación es que el profesor está muy acostumbrado a ponerle doble corchetes, ya que para definir las matrices sí es necesario doble corchetes, como en el siguiente ejemplo:
Como podemos ver en la siguiente imagen, el ponerle doble corchetes no tiene ningún efecto sobre el vector.
@carolina.acosta.m31 creo que estás pasando algo por alto. En la 5ta línea donde deberías imprimir v2, imprimes nuevamente v1. Al parecer, el doble corchete [[]] permite visualizar el vector de forma vertical una vez hecha la traspuesta:
Tengo el ejemplo un poco más desarrollado en este notebook
🟢 Un abrazo de gol!
¿Podemos decir que un vector es una matriz simétrica?
Una matriz simetrica tiene que ser una matriz cuadrada
nop, una matriz simetrica tiene que ser cuadrada, un vector es independiete a esto
Me sale diferente resultado ladiferencia entre v1 es que uno tiene un [] +
#vertical
v1 = np.array([[1,1,1,1]])
#horizontal
v1 = np.array([1,1,1,1])
print(A.dot(v1.T))
hola, yo lo interpreto porque al dar ese [] de mas le esto dando otra dimensión o r al vector (haciéndolo una matriz), por lo que la traspuesta lo deja vertical, a diferencia del resultado igual en el caso horizontal. permitiendo 1 una interpretation mejor y 2 una mejor optimization porque por broadcasting en el caso horizontal se operan con matrices de orden 4 (4x4) a diferencia del caso vertical con una matriz de orden 4 con una de 1x4, que parecen lo mismo pero son diferentes porque una tiene un r mas.
en conclusion el resultado técnicamente es diferente porque estamos tratando con matrices en el vertical y con vectores en horizontal
Es un poco raro de explicar: Son diferentes pero el segundo v1 operativamente puede asumir el rol del primer v1 (el segundo v1 puede operar como fila o columna adaptandose al contexto por defecto), mientras que el primer v1 es sí o sí una matriz 1x4 o vector fila.
hay algo interesante aquí es que el producto interno de A y la inversa de A es igual al producto entre estas dos
esto ocurre porque ya que los 0 en el dot hacen que solo en las posiciones donde se multipliquen 2 números diferentes a 0 contaran de resto serán cancelado y este orden hace que sea lo mismo que simplemente multiplicar entre si
Matriz simetrica A = A _t
Una matriz es simétrica cuando A = A.T
No sè si es solo un tema de forma o sea trascendente, en vìdeo cuando el profesor visualiza sus resultados se ven de la siguiente manera:
Yo los visualizo así:
¿Estoy haciendo lo mismo?
En el v1 te falta unos [ ] en el array
Matriz diagonal: Una matriz diagonal es una matriz que tiene solo números en su diagonal principal. La diagonal principal es la línea que va de la esquina superior izquierda a la esquina inferior derecha de la matriz.* ¿Cómo funcionan las matrices diagonales?
Cuando multiplicamos una matriz diagonal por un vector, lo que estamos haciendo es multiplicar cada elemento del vector por el número correspondiente en la diagonal de la matriz.
¿Cómo se calcula la inversa de una matriz diagonal?
La inversa de una matriz diagonal es otra matriz diagonal con los elementos de la diagonal invertidos.
Algunas matrices diagonales comunes son:* La matriz identidad, que tiene todos sus elementos en la diagonal principal iguales a 1.
La matriz nula, que tiene todos sus elementos en la diagonal principal iguales a 0.
La matriz escalar*, que tiene todos sus elementos en la diagonal principal iguales a un mismo número.
#comprovando la imversa de la matriz
identidad =A.dot(A_inv)print(identidad)
No son solamente las matrices diagonales las que pueden ser simétricas.
(AB) = BA
No sabia que habían matrices diagonales que no sean cuadradas
El profesor hace referencia a matrices diagonales no cuadradas. Error. No existen. Por definición deben ser cuadradas primero.
Sólo aplica para las diagonales cuadradas
Para que una matriz sea simétrica, se debe cumplir que:
Abn=Anb para cada b y n que están comprendidos en el total de filas o columnas de la matriz, me explico:
Tomando cómo ejemplo la matriz simetrica (de la clase)
Para b y a podemos tomar del 1 al 3 ya que la matriz en de 3x3
A11 = A11 (Si)
A12 = A21 (Si)
A13 = A31 (Si)
A21 = A12 (Si)
A22 = A22 (Si)
A23 = A32 (Si)
A31 = A13 (Si)
A32 = A23 (Si)
A33 = A33 (Si)
Entonces la matriz es simétrica
Esto se aprecia mejor si le cambias, por ejemplo, el valor de A12 a alguno arbitrario, la igualdad A12=A21 se rompe por lo que la matriz deja de ser simétrica
(Básicamente, recorrimos los elementos de las filas o de las columas y vemos que se correspondan con su par en la columna o fila, respectivamente)
(AB)_T = A_T * B_T
pero si A = B
entonces
(AB)_T = A * B