I personally find it confusing that `solve_eigenproblem` is private and only called when you try to access the eigenvalues etc.  At the very least, I think we should document this behavior in `__init__`.