OK, I think I missed it for some reason, but I can do as following:
- Decompose using the LDL Decomposition: \boldsymbol{C} = \boldsymbol{L} \boldsymbol{D} \boldsymbol{L}^{T}.
- Multiply both ends of the equation by \boldsymbol{L}^{-1} to yield \boldsymbol{L}^{-1} \left( \boldsymbol{A} + \lambda \boldsymbol{L} \boldsymbol{D} \boldsymbol{L}^{T} \right) \boldsymbol{L}^{-T} \boldsymbol{L}^{T} \boldsymbol{x} = \boldsymbol{L}^{-1} \boldsymbol{b}.
- Define \boldsymbol{E} = \boldsymbol{L}^{-1} \boldsymbol{A} \boldsymbol{L}^{-T}, \boldsymbol{y} = \boldsymbol{L}^{T} \boldsymbol{x} and \boldsymbol{f} = \boldsymbol{L}^{-1} \boldsymbol{b} will yield \left( \boldsymbol{E} + \lambda \boldsymbol{D} \right) \boldsymbol{y} = \boldsymbol{f} where \boldsymbol{E} is SPSD.
- The case where \boldsymbol{D} is all positive is solved easily (See above or Shifted Krylov methods).
- The motivation for this case is some values are zeros. In this case the system should be decomposed into zeros and non zeros (Block System). It can be tuned into a form of a smaller system with all positive diagonal system.
For more complexity one can use Eigen Decomposition on \boldsymbol{C} and go through the same logic with Orthogonal Matrices instead of Triangular.
Solving Shifted System with Non Negative Diagonal Matrix
This section describes how to solve the following case:
Where {D}_{i, i} \geq 0 and \boldsymbol{E} \in \mathcal{S}_{+}^{n}.
Since some of the last elements are zeros \boldsymbol{D} = \operatorname{Diag} \left( \begin{bmatrix} \boldsymbol{d}_{s} \\ \boldsymbol{d}_{z} \end{bmatrix} \right) where {{d}_{s}}_{i} > 0. One can reformulate the problem accordingly:
The system can be decomposed into 2 systems:
Define \boldsymbol{u} = \boldsymbol{E}_{ZZ}^{-1} \boldsymbol{f}_{z}, \boldsymbol{v} = \boldsymbol{f}_{s} - \boldsymbol{E}_{SZ} \boldsymbol{u}, \; \boldsymbol{P} = \boldsymbol{E}_{ZZ}^{-1} \boldsymbol{E}_{ZS}, \; \boldsymbol{Q} = \boldsymbol{E}_{SS} - \boldsymbol{E}_{SZ} \boldsymbol{P} and form the system:
Which is a Shifted System of SPSD matrix + Positive Diagonal which can be solved as above.
To recover \boldsymbol{y}_{z} use \boldsymbol{y}_{z} = \boldsymbol{u} - \boldsymbol{P} \boldsymbol{y}_{s}