Solve linear system A * delta = b, supports submatrix solving
(A: csc_matrix, b: np.ndarray, freen: int)
| 21 | |
| 22 | |
| 23 | def solve_sparse(A: csc_matrix, b: np.ndarray, freen: int) -> np.ndarray: |
| 24 | """Solve linear system A * delta = b, supports submatrix solving""" |
| 25 | if freen < 0: |
| 26 | return spsolve(A, b) |
| 27 | else: |
| 28 | A_sub = A[:freen, :freen].tocsc() |
| 29 | b_sub = b[:freen] |
| 30 | delta_sub = spsolve(A_sub, b_sub) |
| 31 | delta = np.zeros_like(b) |
| 32 | delta[:freen] = delta_sub |
| 33 | return delta |
| 34 | |
| 35 | |
| 36 | def solve_system_py( |