docs: def backward_iteration(A, mu, x0, tol=1e-14, maxiter=100):
      r"""Find eigenvector to approximate eigenvalue via backward iteration.
  
      Parameters
      ----------
      A : (N, N) ndarray
          Matrix for which eigenvector is desired
      mu : float
          Approximate eigenvalue for desired eigenvector
      x0 : (N, ) ndarray
          Initial guess for eigenvector
      tol : float
          Tolerace parameter for termination of iteration
  
      Returns
      -------
      x : (N, ) ndarray
          Eigenvector to approximate eigenvalue mu
  
      """
      T = A - mu * np.eye(A.shape[0])
      """LU-factor of T"""
      lupiv = lu_factor(T)
      """Starting iterate with ||y_0||=1"""
      r0 = 1.0 / np.linalg.norm(x0)
      y0 = x0 * r0
      """Local variables for inverse iteration"""
      y = 1.0 * y0
      r = 1.0 * r0
      for i in range(maxiter):
          x = lu_solve(lupiv, y)
          r = 1.0 / np.linalg.norm(x)
          y = x * r
          if r <= tol:
              return y
      msg = "Failed to converge after %d iterations, residuum is %e" % (maxiter, r)
      raise RuntimeError(msg)