Consideramos la ecuación matricial [matemática] AX = B [/ matemática] donde [matemática] A \ in \ mathbb {R} ^ {m \ times n}, X \ in \ mathbb {R} ^ {n \ times p} , B \ in \ mathbb {R} ^ {m \ times p} [/ math], [math] A [/ math] es desconocido, como se describe en la respuesta de Natalia Nezvanova. Hay varios casos a considerar:
1. [matemáticas] X [/ matemáticas] es una matriz cuadrada de rango completo:
Este caso incluye el evento de que [math] X [/ math] es un escalar distinto de cero. Hay una solución para este sistema, dada por [matemática] A = BX ^ {- 1} [/ matemática], y Matlab ofrece tres métodos diferentes para calcularla:
- Calcular el inverso de [matemáticas] X [/ matemáticas] y multiplicar [matemáticas] B [/ matemáticas] desde la derecha:
A = B * inv (X)
- ¿Por qué la matriz simétrica nunca es defectuosa (tiene un conjunto completo de vectores propios independientes)? ¿Puedes dar una prueba intuitiva?
- ¿Por qué la proyección ortogonal es la proyección más cercana al vector original?
- ¿Por qué dos espacios propios de una matriz son perpendiculares entre sí?
- ¿Qué es una matriz no invertible? ¿Cuáles son algunos ejemplos?
- ¿Qué es una descomposición espectral de una matriz diagonal?
- Calcular pseudo-inverso de [matemática] X [/ matemática] y multiplicar [matemática] B [/ matemática] desde la derecha:
A = B * pinv (X)
- Resolviendo el sistema usando el operador de división de matriz correcto :
A = B / X
Los tres métodos calculan la misma solución (ya que hay exactamente una), pero usan algoritmos diferentes, por lo que pueden diferir según la precisión (particularmente para matrices mal acondicionadas (es decir, cercanas al singular)) y también según el tiempo de cálculo. El operador de división matricial es el más rápido y también el más estable numéricamente, por lo que generalmente debería ser su primera opción. Pseudo-inverso sería el segundo.
2. [matemáticas] X [/ matemáticas] es una matriz cuadrada singular
Puede haber ninguna o infinitas soluciones para el sistema. Considere el caso escalar [matemática] A \ cdot 0 = B [/ matemática]: cualquier matriz (de las dimensiones correctas) resolverá el sistema si [matemática] B [/ matemática] es todo ceros, no lo resolverá si [matemática ] B [/ math] tiene al menos un elemento distinto de cero.
Obviamente, el inverso de [math] X [/ math] no existe, por lo que la primera opción no funcionará. El operador de división también puede fallar aquí, mientras que pinv generalmente devolvería un resultado. Tenga en cuenta que el resultado que obtenga podría no ser una solución a la ecuación, ya que puede que no haya una. Pero minimiza una condición de error de mínimos cuadrados.
3. El sistema está sobredeterminado
Este es el caso cuando [math] X [/ math] es rango completo y tiene más columnas que filas. Como [math] X [/ math] no es cuadrado, el inverso no está definido, y podemos elegir, nuevamente, de pinv y rdiv.
Ambos dan la misma solución de error de mínimos cuadrados, que es la solución a [math] \ min_A \ left \ | AX-B \ right \ | ^ 2 [/ math]. La división matricial lo hace más rápido y con mayor precisión.
4. El sistema es deficiente en rango
Si [math] X [/ math] no es de rango completo (y no necesariamente cuadrado), el sistema tendría varias soluciones. Una vez más, inv no funciona en este caso, y pinv y rdiv le darían diferentes soluciones al sistema.
- El cálculo pseudo-inverso devuelve una matriz [matemática] A [/ matemática], que es la única solución para el sistema [matemática] AX = B [/ matemática] que tiene una norma de matriz mínima [matemática] \ left \ | A \ right \ | [/ math], entre todas las soluciones.
- El cálculo del operador de división de matriz devuelve una matriz [matemática] A [/ matemática], que es una de las soluciones para el sistema [matemática] AX = B [/ matemática] que no tiene más elementos distintos de cero que cualquier otra solución.