La guía o código que verás en este artículo es la solución más eficiente y válida que hallamos a tu duda o problema.
Solución:
Hay un método ridículamente fácil para aplicar el método que ya conoces, comenzando desde tu matriz $mathbf A$. Considere la descomposición QR
$$mathbf A=mathbf Qmathbf R$$
donde $mathbf Q$ es ortogonal y $mathbf R$ es triangular superior. Dices que ya sabes sacar el SVD de una matriz triangular:
$$mathbf R=mathbf Wmathbf Sigmamathbf V^top$$
donde tanto $mathbf W$ como $mathbf V^top$ son ortogonales y $mathbf Sigma$ es diagonal. Sabes (o al menos se supone que debes saber) que el producto de dos matrices ortogonales es nuevamente una matriz ortogonalpor lo que dejando $mathbf U=mathbf Qmathbf W$, debería poder obtener la descomposición en valor singular deseada $mathbf Umathbf Sigmamathbf V^top$.
En general, el preprocesamiento de su matriz con descomposición QR facilita el cálculo de SVD. Para una matriz general de $mtimes n$, se puede hacer una “descomposición QR delgada” (con pivote de columnas si es necesario) donde $mathbf Q$ tiene las mismas dimensiones que la matriz original, y $mathbf R$ es cuadrada y triangulares. Luego se puede tomar el SVD de $mathbf R$ y luego multiplicar las matrices ortogonales (y las matrices de permutación si pivoteó; ¡recuerde que las matrices de permutación también son ortogonales!) para luego obtener la descomposición en valor singular de su matriz original.
FWIW, en el caso de $ 2 veces 2 $, está encantado, ya que puede usar una matriz de rotación de Givens construida adecuadamente para las etapas QR y SVD. Los detalles deben estar en, por ejemplo, el libro de Golub y Van Loan.
El SVD de una matriz $2times 2$ tiene una fórmula de forma cerrada, que se puede calcular escribiendo las matrices de rotación en términos de un solo ángulo desconocido cada una, y luego resolviendo esos ángulos así como los valores singulares.
Se resuelve aquí, por ejemplo.
Tienes la posibilidad difundir esta reseña si te valió la pena.