Krylov methods for linear problems, eigenvalues, singular values and matrix functions
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 | Digital Object Idenitifier | License |
---|---|---|---|
KrylovKit v0.9 adds two new sets of functionality:
lssolve
can be used to solve linear least squares problems, i.e. problems of the form x = argmin(norm(A*x - b))
A
and vector b
. Currently, only one algorithm is implemented, namely the LSMR algorithmreallinsolve
and realeigsolve
(and reallssolve
since v0.9.4), which are useful whenf
) acts as a real linear map,f(α*x) = α*f(x)
when α
is a real number. This occurs for example when computing theRealVec
, which is a specific InnerProductVec
type where the redefined inner productinner
function, thereby effectively treating the vector as living in aeigsolve
, only real eigenvalues and eigenvectors are computed. An error will be thrown if the requested listIn addition, the following is technically a breaking change:
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 systemslssolve
: solve least squares problemseigsolve
: 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ϕⱼ
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")
The package is tested against Julia 1.6
, the long-term stable release (1.10), the current stable release as well
as nightly builds of the Julia master
branch on Linux, macOS, and Windows 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.