GithubHelp home page GithubHelp logo

matbesancon / krylovkit.jl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jutho/krylovkit.jl

0.0 1.0 0.0 676 KB

Krylov methods for linear problems, eigenvalues, singular values and matrix functions

License: Other

Julia 100.00%

krylovkit.jl's Introduction

KrylovKit.jl

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
CI

Release notes for the latest version

v0.5

This version introduces (minimal) breaking changes, if you use KrylovKit.jl with custom vector types: KrylovKit.jl no longer depends on eltype(::YourCustomVector) and similar(::YourCustumVector, ::Type{<:Number}). Instead, KrylovKit.jl does now rely on Base.:*(::Number, ::YourCustomVector) to be defined as a means of creating new vectors, possibly with a different scalar type, so as to be able to represent this computation. Note that Base.similar(::YourCustomVector) (without the second argument) should still be defined to create uninitialized vectors of the same type as the one of the argument.

The motivation for this is that using eltype(::YourCustomVector) to represent its scalar type, was often not the compatible with the requirements for Base.eltype if your type also supports iteration or indexing.

Overview

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 systems
  • eigsolve: find a few eigenvalues and corresponding eigenvectors
  • geneigsolve: find a few generalized eigenvalues and corresponding vectors
  • svdsolve: find a few singular values and corresponding left and right singular vectors
  • exponentiate: apply the exponential of a linear map to a vector
  • expintegrator: exponential integrator for a linear non-homogeneous ODE, computes a linear combination of the so-called ϕⱼ functions which generalize ϕ₀(z) = exp(z).

Installation

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")

Documentation

  • STABLE - documentation of the most recently tagged version.
  • DEVEL - documentation of the in-development version.

Project Status

The package is tested against Julia 0.7, 1.0, 1.1 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.

Questions and Contributions

Contributions are very welcome, as are feature requests and suggestions. Please open an issue if you encounter any problems.

krylovkit.jl's People

Contributors

jutho avatar chrisrackauckas avatar juliatagbot avatar mhauru avatar rveltz avatar ho-oto avatar maartenvd avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.