# netket.exact.lanczos_ed¶

`netket.exact.``lanczos_ed`(operator, *, k=1, compute_eigenvectors=False, matrix_free=False, scipy_args=None)[source]

Computes first_n smallest eigenvalues and, optionally, eigenvectors of a Hermitian operator using `scipy.sparse.linalg.eigsh()`.

Parameters
• operator (`AbstractOperator`) – NetKet operator to diagonalize.

• k (`int`) – The number of eigenvalues to compute.

• compute_eigenvectors (`bool`) – Whether or not to return the eigenvectors of the operator. With ARPACK, not requiring the eigenvectors has almost no performance benefits.

• matrix_free (`bool`) – If true, matrix elements are computed on the fly. Otherwise, the operator is first converted to a sparse matrix.

• scipy_args (`Optional`[`dict`]) – Additional keyword arguments passed to `scipy.sparse.linalg.eigvalsh()`. See the Scipy documentation for further information.

Returns

Either w or the tuple (w, v) depending on whether compute_eigenvectors is True.

• w: Array containing the lowest first_n eigenvalues.

• v: Array containing the eigenvectors as columns, such that`v[:, i]` corresponds to w[i].

Example

Test for 1D Ising chain with 8 sites.

```>>> import netket as nk
>>> hi = nk.hilbert.Spin(s=1/2)**8
>>> hamiltonian = nk.operator.Ising(hi, h=1.0, graph=nk.graph.Chain(8))
>>> w = nk.exact.lanczos_ed(hamiltonian, k=3)
>>> w
array([-10.25166179, -10.05467898,  -8.69093921])
```