Estoy explorando diferentes técnicas para resolver eficientemente algunas ecuaciones matriciales. Mi situación es que tengo una matriz $\textbf{H} = \textbf{J}^T \textbf{J}$ , donde $\textbf{J}$ es una matriz sin cualidades especiales. A partir de esto, primero tengo que calcular $\mathrm{tr}(\textbf{H}^{-1})$ y luego resuelvo $(\textbf{H}+\lambda \textbf{I})\vec{\delta} = \vec{g}$ , donde $\vec{g}$ es conocido, utilizando repetidamente varios valores diferentes de $\lambda$ . (Si ayuda, todos los valores son reales aquí).
Si lo he entendido bien, $\textbf{H}$ se garantiza que es simétrica y semidefinida positiva. Por lo tanto, sé que puedo utilizar una descomposición cholesky o LDLT para cada uno de los cálculos, sin embargo prefiero no realizar tantas descomposiciones. ¿Estoy en lo cierto si digo que, como $\textbf{H}$ es simétrica y real, que puedo realizar una eigendecomposición sobre ella para obtener $\textbf{H} = \textbf{Q}\mathbf{\Lambda}\textbf{Q}^{-1}$ para todos $\textbf{H}$ ? Y si es así, ¿es correcto lo siguiente?
$$\mathrm{tr}(\textbf{H}^{-1}) = \sum_i \frac{1}{\mathbf{\Lambda}_i}$$ $$\textbf{H}+\lambda \textbf{I} = \textbf{Q}(\mathbf{\Lambda}+\lambda\textbf{I})\textbf{Q}^{-1}$$ $$\vec{\delta} = \vec{g}\textbf{Q}(\mathbf{\Lambda}+\lambda\textbf{I})^{-1}\textbf{Q}^{-1}$$
Por último, existe una variación de este algoritmo que utiliza $\textrm{diag}(\mathbf{H})$ en lugar de $\mathbf{I}$ . ¿Puedo realizar una eigendecomposición similar en $\textbf{H}+\lambda \textrm{diag}(\textbf{H})$ para obtener un factor constante $\textbf{Q}$ y los valores propios para todos los valores de $\lambda$ con una sola descomposición?
Aunque me doy cuenta de que las eigendecomposiciones son mucho más lentas que una descomposición LDLT, creo que la transformación anterior me permitiría realizar un número significativamente menor de descomposiciones y, por tanto, espero que mejore la eficiencia de este algoritmo.