I'm exploring different techniques to efficiently solve some matrix equations. My situation is that I have a matrix $\textbf{H} = \textbf{J}^T \textbf{J}$, where $\textbf{J}$ is a matrix with no special qualities. From this, I first need to calculate $\mathrm{tr}(\textbf{H}^{-1})$, and then I solve $(\textbf{H}+\lambda \textbf{I})\vec{\delta} = \vec{g}$, where $\vec{g}$ is known, repeatedly using several different values of $\lambda$. (If it helps, all values are real here).
If I understand correctly, $\textbf{H}$ is guaranteed symmetric and positive-semidefinite. Therefore, I know that I can use a cholesky or LDLT decomposition for each of the calculations, however I'd rather not perform this many decompositions. Am I right in saying that, because $\textbf{H}$ is symmetric and real, that I can perform an eigendecomposition on it to get $\textbf{H} = \textbf{Q}\mathbf{\Lambda}\textbf{Q}^{-1}$ for all $\textbf{H}$? And if so, is the following correct?
$$\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}$$
Lastly, there is a variation of this algorithm using $\textrm{diag}(\mathbf{H})$ instead of $\mathbf{I}$. Can I perform a similar eigendecomposition on $\textbf{H}+\lambda \textrm{diag}(\textbf{H})$ to get a constant factor $\textbf{Q}$ and the eigenvalues for all values of $\lambda$ with a single decomposition?
Whilst I realise that eigendecompositions are much slower than an LDLT decomposition, I believe that the above transformation would allow me to perform significantly less decompositions, and thus hopefully improve the efficiency of this algorithm.