docs: def evaluate_policy(self, sigma):
          """
          Compute the value of a policy.
  
          Parameters
          ----------
          sigma : array_like(int, ndim=1)
              Policy vector, of length n.
  
          Returns
          -------
          v_sigma : ndarray(float, ndim=1)
              Value vector of `sigma`, of length n.
  
          """
          if self.beta == 1:
              raise NotImplementedError(self._error_msg_no_discounting)
  
          # Solve (I - beta * Q_sigma) v = R_sigma for v
          R_sigma, Q_sigma = self.RQ_sigma(sigma)
          b = R_sigma
  
          A = self._I - self.beta * Q_sigma
  
          v_sigma = self._lineq_solve(A, b)
  
          return v_sigma