I have the following system that I need to solve. The matrix is large $n \times n$, where $n = Nz* Nr \approx 150000$ or larger. The matrix always has the following form: Just 5 diagonals at $Nz, 1, 0, -1, -Nz$:
$$ \begin{bmatrix} A & A & 0 & 0 & A & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ A & A & A & 0 & 0 & A & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & A & A & A & 0 & 0 & A & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & A & A & 0 & 0 & 0 & A & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ A & 0 & 0 & 0 & A & A & 0 & 0 & A & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & A & 0 & 0 & A & A & A & 0 & 0 & A & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & A & 0 & 0 & A & A & A & 0 & 0 & A & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & A & 0 & 0 & A & A & 0 & 0 & 0 & A & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & A & 0 & 0 & 0 & A & A & 0 & 0 & A & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & A & 0 & 0 & A & A & A & 0 & 0 & A & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & A & 0 & 0 & A & A & A & 0 & 0 & A & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & A & 0 & 0 & A & A & 0 & 0 & 0 & A \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & A & 0 & 0 & 0 & A & A & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & A & 0 & 0 & A & A & A & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & A & 0 & 0 & A & A & A \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & A & 0 & 0 & A & A \\ \end{bmatrix} \begin{bmatrix} \phi_1 \\ \phi_2 \\ \phi_3 \\ \phi_4 \\ \phi_5 \\ \phi_6 \\ \phi_7 \\ \phi_8 \\ \phi_9 \\ \phi_{10} \\ \phi_{11} \\ \phi_{12} \\ \phi_{13} \\ \phi_{14} \\ \phi_{15} \\ \phi_{16} \\ \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ B \\ B \\ B \\ B \\ \end{bmatrix} $$ All $A$s and $B$s are different, I just wrote them like that for simplicity. Can anyone suggest an appropriate method I could read for this very specific case? My end goal is to implement this in C++. I thought of doing it by gaussian elimination, but I hink it would require a lot of memory.