Marcelo Sánchez
El mejor curso por lejos!!!
La pseudoinversa de Moore Penrose es una aplicación directa de *singular value decomposition (*SVD), que nos permite resolver en determinados momentos sistemas de ecuaciones lineales con múltiples soluciones.
La matriz pseudoinversa es utilizada cuando en un sistema de ecuaciones lineales, representado por Ax = B, x no tiene inversa. Esta operación es única y existe si se verifican 4 condiciones.
Ejemplo de pseudoinversa de una matriz
En el siguiente ejemplo, verás las 4 condiciones para obtener una fórmula Penrose.
Cómo calcular la matriz pseudoinversa de Moore Penrose
Para calcularla se siguen los siguientes pasos:
Cómo calcular la pseudoinversa de Moore Penrose en Python
Para calcularla automáticamente por Python: np.linalg.pinv(A)Lo que obtenemos con A_pse es una matriz muy cercana a la inversa. Cercano en el sentido de que minimiza la norma dos de estas distancias. O sea, de estos errores que estamos cometiendo.
A_pse no es conmutativa, es decir, A_pse·A ≠ A·A_pse
Aporte de María José Medina.
Marcelo Sánchez
El mejor curso por lejos!!!
Wilson Fernando Antury Torres
Sara Yaneth Contreras Elías
Kevin Henriquez
Gracias por tus apuntes
Abdiel Guerrero
Por si quieren conocer las condiciones para que exista la pseudo inversa de M-P:
Wilson Fernando Antury Torres
Rodrigo Josue Gonzalez Espinoza
me duele la cabeza :v
Jhon Freddy Tavera Blandon
La pseudoinversa de Moore-Penrose es una generalización de la inversa de una matriz para matrices que no son cuadradas o no tienen una inversa tradicional. Se utiliza para encontrar una solución aproximada de mínimos cuadrados a sistemas lineales inconsistentes o sobredeterminados.
La pseudoinversa de Moore-Penrose se denota como A⁺ y tiene las siguientes propiedades:
Si A es una matriz cuadrada invertible, entonces su pseudoinversa A⁺ es igual a su inversa A⁻¹.
Si A es una matriz rectangular m x n, entonces A⁺ es única y cumple las siguientes ```
propiedades: A⁺AA⁺ = A⁺ (idempotencia) AA⁺A = A (idempotencia) (AA⁺)ᵀ = AA⁺ (A⁺A)ᵀ = A⁺A
Existen diferentes métodos para calcular la pseudoinversa de Moore-Penrose, y uno de los más comunes es la descomposición en valores singulares (SVD). Si A tiene la descomposición SVD como A = UΣVᵀ, entonces la pseudoinversa de Moore-Penrose se calcula como:
A⁺ = VΣ⁺Uᵀ
Roger Christian Cansaya Olazabal
Un poco densa, la clase pasa con bastante agua. jaja
Gilberto Pérez Garrido
Y en qué momento al remplazar el sistema de ecuaciones por y = 1x + 4, y = 2x + 5, y = -3 + 6 da el vector solución si al reemplazar no concuerda con las posibles respuestas de examen
Miguel Torres
Hola, @perezgarridogilb. :D
¿Podrías decirme en qué pregunta del examen no te da la solución que dices? Me gustaría ayudarte.
Carlos Ernesto Alvarez Rosales
Porque al definir en el pizarrón a A_pse, lo define con el producto de V normal con D_pse y U.T pero cuando lo calcula en python lo calcula con la transpuesta, es decir el producto V.T y lo demás igual.
Benjamín Guzmán
Roger Christian Cansaya Olazabal
Ahora si esta mas claro.
Antonio Demarco Bonino
Imagina que Caperucita Roja quiere encontrar el mejor camino para llegar a casa de su abuela, pero algunos de los caminos están bloqueados y no puede seguir la ruta directa. La pseudoinversa de Moore-Penrose sería como un mapa que le muestra el mejor camino alternativo o la mejor aproximación para llegar a su destino, incluso si no puede tomar el camino directo. Aunque no es la ruta perfecta, le permite llegar de manera óptima, minimizando el tiempo o la distancia.
Patricio Zavala
tengo una confusión (luego de haber pasado un rato buscando el teorema por internet)... por que python entrega un U de m,m?... no debería ser de m,n para que la propiedad de A = UDV.T ... sino no se podría multiplicar
Yonatan Efraín Jara Boza
Si te refieres a la documentación de svd: Que 'U' y 'V' sean matrices cuadradas va de acuerdo a la teoría, para que el producto punto tenga el shape de la matriz A, entonces la matriz diagonal D debe tener también el shape de A (se debe dar la forma con código extra); esto tiene interpretación geométrica haciendo que aplane el espacio o lo extienda. Puedes ver esta serie de Enlace, son de Visual Kernel, una buena extensión de las clases visuales de 3blue1brown
Mario Alexander Vargas Celis
La seudoinversa de Moore-Penrose es una generalización de la inversa de una matriz que puede aplicarse incluso si la matriz no es cuadrada o no es invertible. En Python, puedes calcularla fácilmente con NumPy.
📌 ¿Qué es la seudo inversa?
Para una matriz A∈Rm×nA \in \mathbb{R}^{m \times n}, su seudoinversa A+A^+ satisface ciertas propiedades algebraicas. Se define mediante la descomposición en valores singulares (SVD):
A=UΣVT⇒A+=VΣ+UTA = U \Sigma V^T \quad \Rightarrow \quad A^+ = V \Sigma^+ U^T
Donde:
💻 Cálculo con NumPy
✅ Usando np.linalg.pinv
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]]) # Matriz no cuadrada A_pseudo = np.linalg.pinv(A)
print("Matriz original A:") print(A) print("\nSeudo inversa de A (Moore-Penrose):") print(A_pseudo)
🧠 ¿Qué hace NumPy internamente?
np.linalg.pinv utiliza la SVD para calcular la seudo inversa:
U, S, Vt = np.linalg.svd(A, full_matrices=False)
# Invertimos los valores singulares (evitando dividir por cero) S_inv = np.diag(1 / S)
# Calculamos la seudoinversa manualmente A_pseudo_manual = Vt.T @ S_inv @ U.T
📘 Aplicación: resolver sistemas sobredeterminados
Para sistemas Ax=bAx = b donde AA no es cuadrada:
x = np.linalg.pinv(A) @ b
Esto da la solución de mínimos cuadrados: la mejor aproximación posible.
✅ Ventajas
Mauricio Combariza
Me gustaría saber por que se usa :D.shape[0], para que sirve usar los :
Axel Yaguana
Team Platzi¡Hola, Mauricio!
Dado que estamos trabajando con arreglos matriciales, estos tienen una dimensión. Para acceder a esa dimensión usamos .shape(), lo que nos devuelve una tupla con filas y columnas. Estp sería (filas, columnas).
Para el caso de la clase, queremos acceder a las filas de aquel arreglo matricial. Por eso usamos shape[0]. Los dos puntos : hacen referencia a todo un conjunto.
Te recomiendo tomar el Curso Básico de Manipulación y Transformación de Datos con Pandas y NumPy en donde aprenderás todo esto con más detalle. :D
Sebastián Andrade
La verdad no entendí nada de esta clase. Alguien conoce algun recurso para entender este tema?
Eloy Chávez Dev
¡Hola! :D
¿En qué se te hizo complicado este tema?
Sebastián Andrade
Entendí qué es una pseudoinversa, pero no entiendo por qué se calcula asi, y unas cuantas clases anteriores a esta no he entendido el punto de ellas ni la explicacion que da el profesor.
Jhon Jairo Bazurto Quintero
La formula correcta para hallar la identidad es: Apse*A aproximadamente igual a la identidad ya que existe ese error en la formula que se da en el tablero de la clase
Mauro Benito Montoya Arenas
El recíproco de una matriz se refiere al inverso multiplicativo de la matriz. Si A es una matriz cuadrada, su recíproco A^-1 es otra matriz tal que AA^-1 = A^-1A = I, donde I es la matriz identidad.
Asahi Cantu Moreno
La matriz de penrose existe y es unica
Yonatan Efraín Jara Boza
Si es que su rango es lo máximo posible para la forma de la matriz. O sea si A es 3x2, entonces si su rango fuese 2... tendría inversa; la identidad siempre tiene que ser la menor (I 2x2)
Romel Manrique
Lo que pasa es que matemáticamente SVD es A = U D V^T, y numpy lo que regresa es U, D, L = np.linalg.svd(A) donde L = V^T, así V = L^T.
Para aclararlo mejor, hagamos un cambio de variable
U, D, L = np.linalg.inv(A) V = L.T A_pse = V.dot(np.diag(D)).dot(U.T)
Eso es equivalente a tener
U, D, V = np.linalg.inv(A) A_pse = V.T.dot(np.diag(D)).dot(U.T)
Si el resultado del reemplazo, no les sale igual que al profesor.
D_pse = np.zeros_like(A).T D_pse[:D.shape[0],:D.shape[0]] = np.linalg.inv(np.diag(D)) print(D_pse)
[[0 0 0] [0 1 0]]
Intenten especificando el tipo de dato.
D_pse = np.zeros_like(A, dtype=np.float_).T # <- aqui esta D_pse[:D.shape[0],:D.shape[0]] = np.linalg.inv(np.diag(D)) print(D_pse)
[[0.0515 0. 0. ] [0. 1.3931 0. ]]