A Julia package collecting a number of Krylov-based algorithms for linear problems, singular value and eigenvalue problems and the application of functions of linear maps or operators to vectors.
Documentation | Build Status | License |
---|---|---|
This version requires at least Julia 1.6 because of new dependencies, namely on
GPUArraysCore.jl to fix the GPU support, and on
ChainRulesCore.jl to have AD support. In
particular, this version comes with (experimental) AD support for linsolve
. Future
versions will extend this to eigsolve
and potentially more.
KrylovKit.jl accepts general functions or callable objects as linear maps, and general Julia objects with vector like behavior (as defined in the docs) as vectors.
The high level interface of KrylovKit is provided by the following functions:
linsolve
: solve linear systemseigsolve
: find a few eigenvalues and corresponding eigenvectorsgeneigsolve
: find a few generalized eigenvalues and corresponding vectorssvdsolve
: find a few singular values and corresponding left and right singular vectorsexponentiate
: apply the exponential of a linear map to a vectorexpintegrator
: exponential integrator for a linear non-homogeneous ODE, computes a linear combination of theϕⱼ
functions which generalizeϕ₀(z) = exp(z)
.
KrylovKit.jl
can be installed with the Julia package manager.
From the Julia REPL, type ]
to enter the Pkg REPL mode and run:
pkg> add KrylovKit
Or, equivalently, via the Pkg
API:
julia> import Pkg; Pkg.add("KrylovKit.jl")
- STABLE - documentation of the most recently tagged version.
- DEVEL - documentation of the in-development version.
The package is tested against Julia 1.0
, the current stable and the nightly builds of the Julia master
branch on Linux, macOS, and Windows, 32- and 64-bit architecture and with 1
and 4
threads.
Contributions are very welcome, as are feature requests and suggestions. Please open an issue if you encounter any problems.