<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def update_inverse(self):
 """ Recomputes W_k_inv and R_k given the current column selection When computed, the block matrix inverse W_k_inv will be updated. This is useful when you want to compute eigenvalues or get an approximation for the full matrix or individual columns. Calling this function is not strictly necessary, but then you rely on the fact that the updates did not accumulate large errors. That depends very much on how columns were added. Adding columns with very small Schur complement causes accumulation of errors and is more likely to make it necessary to update the inverse. """

        # compute R_k and W_k_inv
        Wk = self._C_k[self._columns, :]
        self._W_k_inv = np.linalg.pinv(Wk)
        self._R_k = np.dot(self._W_k_inv, self._C_k.T)