¿Qué es la transposición de un producto de matrices?
La transposición de matrices es un concepto central en álgebra lineal. Al operar con matrices, tanto la forma en que se multiplican como su transposición juegan roles cruciales. Hoy exploramos cómo se interrelacionan estas transposiciones dentro del producto interno de matrices. La propiedad que definiremos es: si tenemos una matriz A multiplicada internamente con B, su transposición es igual al producto de B transpuesta con A transpuesta. Esto es expresado matemáticamente como:
(AB)^T=B^TA^T
Esta propiedad es vital al trabajar en álgebra lineal, ya que permite una manipulación más intuitiva y versátil de las matrices, tratándolas casi como si fueran números.
¿Qué implicaciones tiene esta propiedad en el trabajo con matrices?
La versatilidad que otorga esta propiedad en operaciones matriciales es significativa:
Flexibilidad Operativa: Podemos organizar las operaciones de una manera que facilite los cálculos, porque la transposición nos permite cambiar el orden sin alterar el resultado final.
Optimización de Cálculos: En lugar de recalcular completamente los sistemas de ecuaciones, el uso correcto de transposiciones ahorra tiempo y esfuerzo, simplificando el proceso.
Jugabilidad Matemática: Al aplicar dos veces la transposición a una matriz, la devolvemos a su forma original. Esto permite experimentar con las transformaciones y, de ser necesario, revertirlas con facilidad.
# Ejemplo básico de transposición en Python usando NumPyimport numpy as np
A = np.array([[1,2],[3,4],[5,6]])# Matriz 3x2B = np.array([[7,8],[9,10]])# Matriz 2x2# Producto interno y su transposiciónproduct_transposed = np.matmul(A, B).T
B_transpose_A_transpose = np.matmul(B.T, A.T)print("Transposición del producto interno:", product_transposed)print("Producto de transposiciones:", B_transpose_A_transpose)
¿Cómo verificar la igualdad de estas operaciones?
Verificar la equivalencia entre ( (AB)^T ) y ( B^T A^T ) te acerca un paso más a tratar matrices como si fueran números. Con la ayuda de herramientas como NumPy en Python, el proceso se facilita:
Comprobación de Igualdad: Mediante funciones que comparan matrices, como numpy.allclose(), puedes certificar que el resultado final de ambas operaciones es el mismo.
Exploración Práctica: Al comenzar con matrices A y B de dimensiones adecuadas (como A de 3x2 y B de 2x2 en el ejemplo), puedes aplicar las operaciones y verificar la igualdad de resultados, reforzando la comprensión teórica con la práctica.
Aplicación en Sistemas Lineales: Esta propiedad resulta útil al resolver sistemas de ecuaciones lineales, reduciendo la complejidad al manejar las matrices involucradas.
# Verificación de igualdad entre las operacionesequal_check = np.allclose(product_transposed, B_transpose_A_transpose)print("Las operaciones son iguales:", equal_check)
Continuar explorando y practicando estos conceptos profundizará tu comprensión y habilidad en álgebra lineal, preparándote para abordar sistemas de ecuaciones complejos con confianza y eficiencia. ¡Te animo a sumergirte más en este apasionante mundo matemático!
min_val = valor minimo que comprende la funcion
max_val = valor maximo que comprende la funcion
x = numero de filas
y = numero de columnas
z = numero de dimensiones (estas seran iguales y tiene como predeterminado el valor de 1)
Nos has salvado! Estamos agradecidos!
Buen aporte me sirvió, no lo utilice para el ejercicio de la clase, pero sí le di uso de manera didáctica
Recordemos que en los notebooks es posible introducir fórmulas matemáticas usando el lenguaje LaTex. Si queremos colocar alguna expresión alineada con lo que venimos escribiendo usamos el signo $ para encerrar la expresión. Si deseamos que la expresión quede en una nueva línea y centrada en el documento usamos $$ para ecerrar la expresión.
Ejemplo:
$$(A \cdot B)^{T}=B^{T} \cdot A^{T} $$
Esto da como resultado:
Así podemos tener mejores anotaciones en nuestros Jupyter Notebooks
Grandisimo aporte bro no lo tenia presente.
Interesante, lo había visto en otras clases, pero no le había dado el suficiente detenimiento
Propiedad del producto interno y la matriz transpuesta
La transpuesta de la multiplicación de dos matrices es igual a la multiplicación de las matrices transpuestas pero en orden inverso
(AxB)_t = B_t x A_t
⭕ Exactamente amigo Josue. ⭕
.
Aqui mi aporte, un poco mas visual
.
Hola chicos, nada más quería dejar como aporte que multiplicar matrices es computacionalmente caro, el agoritmo general está cerca del orden de O(n³), hay algunas implementaciones que bajan tantito la complejidad.
Para lo que tengamos en cuenta cuando queramos hacer operaciones a gran escala.
Saludos a todos
gracias por el dato! a simple vista no me percata del orden de complejidad, entiendo que es n al cubo porque operas n veces las matrices que hacen calculos n al cuadrado.
como diferenciar de forma simbolica un producto normal de un producto interno.
Depende mucho del contexto que se este trabajando veras que en algunos temas de cálculo se usa el punto como multiplicación normal, pero en álgebra lineal es un producto punto. Aunque una buena forma es usar paréntesis, por ejemplo: (2)(5)=10
Curso de matrices
que gran aporte.
el profe de esos videos explica super bien
Extiendo el ejemplo que compartí en la clase pasada:
# import numpy as np
A= np.array([[1,2,3],[7,8,9],[4,5,6]])B= np.array([[10,11],[12,13],[14,15]])print(A.shape)print(B.shape)# Resultado:(3,3)(3,2)AB=A.dot(B)print(AB)# Resultado:[[7682][292316][184199]]# BA=B.dot(A)# print(BA)# ValueError:shapes(3,2)and(3,3) not aligned:2(dim 1)!=3(dim 0)AB_t=AB.TB_tA_t=B.T.dot(A.T)print(AB_t==B_tA_t)# Resultado:[[TrueTrueTrue][TrueTrueTrue]]```
Qué maravilla, todo esto lo había olvidado ya.
¡Ayuda!
Tu error está en que transpones la matriz m1 antes de hacer el producto punto y te quedan las dimensiones incorrectas. Estás multiplicando (2.3)*(2,2), pero los dos números del centro deben ser iguales.
¡Claro! Vamos a ver cómo se realiza la transposición y el producto interno de matrices, tanto desde el punto de vista teórico como práctico en Python.
🔁 Transposición de Matrices
La transposición de una matriz AA se denota como ATA^T y consiste en convertir las filas en columnas y viceversa.
A_transpuesta = A.T
print("Transpuesta de A:\n", A_transpuesta)
🔷 Producto Interno de Matrices (Producto Matricial)
El producto interno (o producto punto) entre matrices también puede interpretarse como producto matricial cuando se cumple la condición de dimensiones.
Si AA es de tamaño m×nm \times n y BB de tamaño n×pn \times p, entonces:
C=A⋅Btendraˊtaman˜om×pC = A \cdot B \quad \text{tendrá tamaño} \quad m \times p
Ejemplo:
A=[12],B=[34]⇒A⋅B=1⋅3+2⋅4=11A = \begin{bmatrix}1 & 2\end{bmatrix},\quad B = \begin{bmatrix}3 \\ 4\end{bmatrix} \quad \Rightarrow \quad A \cdot B = 1\cdot3 + 2\cdot4 = 11
En Python:
A = np.array([[1, 2]])
B = np.array([[3],
[4]])
producto_interno = np.dot(A, B)
print("Producto interno de A y B:\n", producto_interno)
🧠 Nota:
Si estás trabajando con vectores, np.dot() o np.inner() puede ser usado.
Para matrices, también puedes usar @ o np.matmul() para claridad y compatibilidad.
Transposición de un producto de matrices
En matemáticas existe la propiedad de, por ejemplo, supongamos que tengo una matriz **A**, y hago el producto interno con una matriz **B**, al transponerla es igual a **B** transpuesta con **A** transpuesta. O en notación $(AB)^t = B^tA^t$.
Esto nos permite operar con las matrices como si fueran números. Podemos pasarlas de un lado para el otro, incluso, decidir en que orden queremos hacer las operaciones.
import numpy as np
A = np.array([[2,3],[5,7],[11,13]])B = np.array([[1,3],[2,1]])# Calculemos A y B transpuestaAB_t = A.dot(B).T
# Calculemos B transpuesto con A transpuestoB_tA_t = B.T.dot(A.T)# Preguntamos si las dos matrices son igualesprint(AB_t == B_tA_t)# Output = [[ True True True] [ True True True]]
En este código de ejemplo podemos observar que nuestra propiedad se cumple correctamente.
Esto puede ser bastante poderoso para evitar tener que hacer despejes y cálculos más complejos.
Que hermoso
(C^T) = (A * B)^T
= (B^T * A^T)
# Definir las matrices A y BA= np.array([[1,2,3],[4,5,6]])B= np.array([[7,8],[9,10],[11,12]])# Calcular el producto de matrices CC= np.dot(A,B)# Calcular la transposición de CCt= np.transpose(C)# Calcular el producto de matrices transpuestas Bt y At en orden inverso
Bt= np.transpose(B)At= np.transpose(A)Ct2= np.dot(Bt,At)# Verificar que los resultados son iguales
print("Ct = \n",Ct)print("Ct2 = \n",Ct2)
En resumen, el producto interno transpuesto de A y B es igual al producto de A transpuesto y B transpuesto.
O sea:
np.dot(A,B).T = np.dot(B.T,A.T)
Cuando yo lavo los trastos en la casa, organizo la platería por matrices y vectores.....
2 de agosto de 2022 y esta lección arroja problemas, ni hablar de hacer el == para comparar elemento a elemento una matriz con otra, esta última sale deprecated. La imagen muestra que hice todo igual pero me sale un error en A.T.dot(B.T) ó m1.T.dot(m2.T):
Eso es porque tienes un error generado por principalmente no seguir las variables del curso y ponerte creativo a renombrarlas, no es que esto sea malo, pero hubieras emulado tal cual para que vieras tu error.
ve que es:
B.T.dot(A.T)
Tu renombraste a B como m2 y a A como m1
Tu colocaste fue:
A.T.dot(B.T)
de alli tu error, lo otro es que te arroja deprecated al "==" solo a ti, ya que esta funcion no ha sido colocada como deprecated, revisa que no tengas errores en tu instalacion, yo tengo la version 3.9.13 y funciona bien. Y no consegui informacion alguna de que haya sido incluso sacada en la version 3.10 que es la mas actual, asi que revisa tu anaconda.
Te dejo algunos comandos que te pueden ayudar:
conda config --add channels conda-forge
conda update --all
conda clean --all --force-pkgs-dir
Si usas jupyter labs:
jupyter lab clean
jupyter lab build
Con la solución final quede feliz:
print(AB_t==B_tA_t)[[TrueTrueTrue][TrueTrueTrue]]
dos matrices se pueden multiplicar si el numero de columnas del primero es igual al número de columnas del segundo.
entonces, tienes matriz A = MxN y matriz B = HxK, entonces para multiplicarse N debe ser igual a H, osea N=H.
la multiplicacion AB = matriz MxK
la transpuesta (AB)^T = matriz KxM
entonces, para obtener una matriz KxM la primera matriz debe tener filas K y la segunda matriz debe tener columnas M, entonces podemos decir que la primera matriz debe ser B transpuesta y la segunda matriz debe ser A transpuesta.
B^T * A^T = (KxH) * (NxM), y como N=K O K=N, entonces quiere decir que esa operacion es igual a una matriz KxM.
por lo tanto (AB)^T = B^T A^T
Transposición de un producto de matrices
Una propiedad del producto de matrices transpuestas es que: $(AB)^t=B^tA^t$
Para realizar esto en python realizamos lo siguiente: