Git Product home page Git Product logo

adaptiveexp's Introduction

Efficient scaling and squaring method for the matrix exponential

DOI

This repository contains a Julia package to adaptively and efficiently compute matrix exponential up to a given tolerance.

This work presents a new algorithm to compute the matrix exponential within a given tolerance. Combined with the scaling and squaring procedure, the algorithm incorporates Taylor, partitioned and classical Padé methods shown to be superior in performance to the approximants used in state-of-the-art software. The algorithm computes matrix--matrix products and also matrix inverses, but it can be implemented to avoid the computation of inverses, making it convenient for some problems. If the matrix A belongs to a Lie algebra, then exp(A) belongs to its associated Lie group, being a property which is preserved by diagonal Padé approximants, and the algorithm has another option to use only these. Numerical experiments show the superior performance with respect to state-of-the-art implementations.

Installation

julia

julia> ]
(@v1.10) pkg> add https://github.com/nakopylov/AdaptiveExp

Usage

using AdaptiveExp

A = rand(5, 5);
B = expadapt(A, 1e-11)
C = expadapt(A) # the same as expadapt(A, 1e-12)

Running examples

First, change the working directory to AdaptiveExp/examples, for example, if you are currently in the package's directory:

cd ./examples

Then in Julia activate the (separate) environment in the examples directory of the package:

julia

julia> ]
(@v1.10) pkg> activate .
  Activating project at `~/AdaptiveExp/examples`

(examples) pkg>

Run an example in Julia REPL:

julia> include("./experiment_unit_err_vs_norm.jl")

adaptiveexp's People

Contributors

nakopylov avatar

Watchers

Antoni Vidal-Ferràndiz 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.