Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/JuliaSmoothOptimizers/Krylov.jl
A Julia Basket of Hand-Picked Krylov Methods
https://github.com/JuliaSmoothOptimizers/Krylov.jl
julia julia-language krylov linear-algebra linear-systems optimization
Last synced: 3 months ago
JSON representation
A Julia Basket of Hand-Picked Krylov Methods
- Host: GitHub
- URL: https://github.com/JuliaSmoothOptimizers/Krylov.jl
- Owner: JuliaSmoothOptimizers
- License: other
- Created: 2015-03-10T19:37:53.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2024-05-31T01:19:19.000Z (5 months ago)
- Last Synced: 2024-06-11T17:38:29.246Z (5 months ago)
- Topics: julia, julia-language, krylov, linear-algebra, linear-systems, optimization
- Language: Julia
- Size: 17 MB
- Stars: 329
- Watchers: 10
- Forks: 50
- Open Issues: 63
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.cff
Awesome Lists containing this project
- awesome-sciml - JuliaSmoothOptimizers/Krylov.jl: A Julia Basket of Hand-Picked Krylov Methods
README
# Krylov.jl: A Julia basket of hand-picked Krylov methods
| **Documentation** | **CI** | **Coverage** | **DOI** | **Downloads** |
|:-----------------:|:------:|:------------:|:-------:|:-------------:|
| [![docs-stable][docs-stable-img]][docs-stable-url] [![docs-dev][docs-dev-img]][docs-dev-url] | [![build-gh][build-gh-img]][build-gh-url] [![build-cirrus][build-cirrus-img]][build-cirrus-url] | [![codecov][codecov-img]][codecov-url] | [![doi][doi-img]][doi-url] | [![downloads][downloads-img]][downloads-url] |[docs-stable-img]: https://img.shields.io/badge/docs-stable-blue.svg
[docs-stable-url]: https://JuliaSmoothOptimizers.github.io/Krylov.jl/stable
[docs-dev-img]: https://img.shields.io/badge/docs-dev-purple.svg
[docs-dev-url]: https://JuliaSmoothOptimizers.github.io/Krylov.jl/dev
[build-gh-img]: https://github.com/JuliaSmoothOptimizers/Krylov.jl/workflows/CI/badge.svg?branch=main
[build-gh-url]: https://github.com/JuliaSmoothOptimizers/Krylov.jl/actions
[build-cirrus-img]: https://img.shields.io/cirrus/github/JuliaSmoothOptimizers/Krylov.jl?logo=Cirrus%20CI
[build-cirrus-url]: https://cirrus-ci.com/github/JuliaSmoothOptimizers/Krylov.jl
[codecov-img]: https://codecov.io/gh/JuliaSmoothOptimizers/Krylov.jl/branch/main/graph/badge.svg
[codecov-url]: https://app.codecov.io/gh/JuliaSmoothOptimizers/Krylov.jl
[doi-img]: https://joss.theoj.org/papers/10.21105/joss.05187/status.svg
[doi-url]: https://doi.org/10.21105/joss.05187
[downloads-img]: https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fjuliapkgstats.com%2Fapi%2Fv1%2Fmonthly_downloads%2FKrylov&query=total_requests&suffix=%2Fmonth&label=Downloads
[downloads-url]: https://juliapkgstats.com/pkg/Krylov## How to Cite
If you use Krylov.jl in your work, please cite it using the metadata given in [`CITATION.cff`](https://github.com/JuliaSmoothOptimizers/Krylov.jl/blob/main/CITATION.cff).
#### BibTeX
```
@article{montoison-orban-2023,
author = {Montoison, Alexis and Orban, Dominique},
title = {{Krylov.jl: A Julia basket of hand-picked Krylov methods}},
journal = {Journal of Open Source Software},
volume = {8},
number = {89},
pages = {5187},
year = {2023},
doi = {10.21105/joss.05187}
}
```## Content
This package provides implementations of certain of the most useful Krylov method for a variety of problems:
1. Square or rectangular full-rank systems
Ax = bshould be solved when **_b_** lies in the range space of **_A_**. This situation occurs when
* **_A_** is square and nonsingular,
* **_A_** is tall and has full column rank and **_b_** lies in the range of **_A_**.2. Linear least-squares problems
minimize ‖b - Ax‖should be solved when **_b_** is not in the range of **_A_** (inconsistent systems), regardless of the shape and rank of **_A_**. This situation mainly occurs when
* **_A_** is square and singular,
* **_A_** is tall and thin.Underdetermined systems are less common but also occur.
If there are infinitely many such **_x_** (because **_A_** is column rank-deficient), one with minimum norm is identified
minimize ‖x‖ subject to x ∈ argmin ‖b - Ax‖.3. Linear least-norm problems
minimize ‖x‖ subject to Ax = bshould be solved when **_A_** is column rank-deficient but **_b_** is in the range of **_A_** (consistent systems), regardless of the shape of **_A_**.
This situation mainly occurs when
* **_A_** is square and singular,
* **_A_** is short and wide.Overdetermined systems are less common but also occur.
4. Adjoint systems
Ax = b and Aᴴy = cwhere **_A_** can have any shape.
5. Saddle-point and Hermitian quasi-definite systems
[M A] [x] = [b]
[Aᴴ -N] [y] [c]where **_A_** can have any shape.
6. Generalized saddle-point and non-Hermitian partitioned systems
[M A] [x] = [b]
[B N] [y] [c]where **_A_** can have any shape and **_B_** has the shape of **_Aᴴ_**.
**_A_**, **_B_**, **_b_** and **_c_** must be all nonzero.Krylov solvers are particularly appropriate in situations where such problems must be solved but a factorization is not possible, either because:
* **_A_** is not available explicitly,
* **_A_** would be dense or would consume an excessive amount of memory if it were materialized,
* factors would consume an excessive amount of memory.Iterative methods are recommended in either of the following situations:
* the problem is sufficiently large that a factorization is not feasible or would be slow,
* an effective preconditioner is known in cases where the problem has unfavorable spectral structure,
* the operator can be represented efficiently as a sparse matrix,
* the operator is *fast*, i.e., can be applied with better complexity than if it were materialized as a matrix. Certain fast operators would materialize as *dense* matrices.## Features
All solvers in Krylov.jl have in-place version, are compatible with **GPU** and work in any floating-point data type.
## How to Install
Krylov can be installed and tested through the Julia package manager:
```julia
julia> ]
pkg> add Krylov
pkg> test Krylov
```## Bug reports and discussions
If you think you found a bug, feel free to open an [issue](https://github.com/JuliaSmoothOptimizers/Krylov.jl/issues).
Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.If you want to ask a question not suited for a bug report, feel free to start a discussion [here](https://github.com/JuliaSmoothOptimizers/Organization/discussions). This forum is for general discussion about this repository and the [JuliaSmoothOptimizers](https://github.com/JuliaSmoothOptimizers) organization, so questions about any of our packages are welcome.