For large and sparse matrices you can use the (restarted) Arnoldi method to compute a partial Schur decomposition AQ=QR where Q is tall and skinny and R has a few dominant eigenvalues on the diagonal (i.e. eigenvalues on the boundary of the convex hull).<p>MATLAB uses ARPACK's implementation of this when you call `eigs`<p>I wrote my own implementation ArnoldiMethod.jl in julia, which unlike MATLAB/ARPACK supports arbitrary number types, and also should be more stable in general, and equally fast.<p>[1] <a href="https://github.com/JuliaLinearAlgebra/ArnoldiMethod.jl">https://github.com/JuliaLinearAlgebra/ArnoldiMethod.jl</a>