{"id":19775363,"url":"https://github.com/juliadynamics/rigorousinvariantmeasures.jl","last_synced_at":"2025-04-30T19:30:35.034Z","repository":{"id":38274693,"uuid":"272765093","full_name":"JuliaDynamics/RigorousInvariantMeasures.jl","owner":"JuliaDynamics","description":"Package for the Rigorous Computation of Invariant Measures","archived":false,"fork":false,"pushed_at":"2025-01-10T01:26:35.000Z","size":2411,"stargazers_count":12,"open_issues_count":15,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-22T08:48:38.101Z","etag":null,"topics":["dynamical-systems","julia"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JuliaDynamics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-16T16:59:33.000Z","updated_at":"2024-11-24T22:25:04.000Z","dependencies_parsed_at":"2023-02-14T12:40:41.494Z","dependency_job_id":"d40e0419-7d11-449d-8e5c-c60aaa4cf7d7","html_url":"https://github.com/JuliaDynamics/RigorousInvariantMeasures.jl","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaDynamics%2FRigorousInvariantMeasures.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaDynamics%2FRigorousInvariantMeasures.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaDynamics%2FRigorousInvariantMeasures.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuliaDynamics%2FRigorousInvariantMeasures.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuliaDynamics","download_url":"https://codeload.github.com/JuliaDynamics/RigorousInvariantMeasures.jl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251769198,"owners_count":21640860,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamical-systems","julia"],"created_at":"2024-11-12T05:15:49.660Z","updated_at":"2025-04-30T19:30:32.697Z","avatar_url":"https://github.com/JuliaDynamics.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RigorousInvariantMeasures\n\n[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://juliadynamics.github.io/RigorousInvariantMeasures.jl/stable/)\n[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://juliadynamics.github.io/RigorousInvariantMeasures.jl/dev/)\n[![Build Status](https://github.com/JuliaDynamics/RigorousInvariantMeasures.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/JuliaDynamics/RigorousInvariantMeasures.jl/actions/workflows/CI.yml?query=branch%3Amain)\n[![Coverage](https://codecov.io/gh/JuliaDynamics/RigorousInvariantMeasures.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/JuliaDynamics/RigorousInvariantMeasures.jl)\n\nThis Package provides methods for the rigorous approximation of Absolutely Continuous Invariant Measures for one dimensional dynamical systems,\nusing the results in [[2]](#2) and subsequent [[1]](#1).\n\n## Mathematical background\nBy Birkhoff Ergodic Theorem we know that if a dynamical system T admits an ergodic invariant measure μ, for μ-almost every point x the frequence of the visits to a set E corresponds to the measure of the set with respect to μ.\n\nTherefore, being able to approximate invariant measures with a large basin is interesting to investigate the statistical properties of the dynamical system T. [[5]](#4)\n\nThe existence of absolutely continuous invariant measures for one dimensional maps is a delicate topic; with this package we present approximation schemes for the invariant measures of system that satisfy a Lasota-Yorke inequality through the use of a coarse-fine scheme and a posteriori estimates on the mixing time, i.e., this means that the mixing time is estimated by our algorithm and we do not need an a priori estimate, which is usually difficult to obtain.\n\nThe Ulam approximation schemes works under relatively weak hypothesis on the dynamics and was used in [[4]](#4) to approximate the invariant measure for the geometric Lorenz 1-dimensional map.\n\nWe are currently working on the implementation of the Ulam scheme for system with additive uniform noise, as the one used in\n[[2]](#2)\n\n## Basic Usage\nExamples of usage are present in the directory examples.\n\n```julia\nusing InvariantMeasures\nD = Mod1Dynamic(x -\u003e 4x + 0.01InvariantMeasures.sinpi(8x))\nB = Ulam(1024)\nQ = DiscretizedOperator(B, D)\n```\n\nThe code snippet above defines a dynamic obtained by reducing f(x) = 4x+0.01 sin(8πx) modulo 1, a basis B associated to the Ulam discretization on a partition of 1024 homogenous intervals, and computes the discretized operator Q, a Markov chain whose entries are P[T(x)∈ Iᵢ | x ∈ Iⱼ].\n\nNote the usage of `InvariantMeasures.sinpi(8*x)` rather than `Base.sinpi` or `Base.sin(8\\pi*x)`. This detail is required to ensure that f(1) == 4 exactly.\n\n```julia\nnorms = powernormbounds(B, D; Q=Q)\n```\n\nThis function computes the L¹ norm of Q^k, for k = 1,2,...,k_max (up to a sufficiently large number of powers to observe decay) when restricted to the space U of average-0 vectors. This gives us the a posteriori estimate for the mixing time of the Markov chain and is used in our rigorous estimate.\n\n```julia\nw = invariant_vector(B, Q)\ndistance_from_invariant(B, D, Q, w, norms)\n```\nThis computes a (non-rigorous) approximation of the invariant measure of D; then  `distance_from_invariant` computes an upper bound for the L¹ distance between w and the density of the absolutely continuous invariant measure of the system.\n\nInside the examples it is showed how to use the coarse-fine scheme to obtain better L¹ bounds and reduce the computational time.\n\n### Caveat\nThe function `sinpi` in the interval arithmetic package that we are using relies on the `CRlibm.jl` package, which currently works only under Linux. So the examples that use trigonometric functions only work on this OS.\n\n## References\n\u003ca id=\"1\"\u003e[1]\u003c/a\u003e Galatolo S., Monge M., Nisoli I., Poloni F. A general framework for the rigorous computation of invariant densities and the coarse-fine strategy\nhttps://doi.org/10.48550/arXiv.2212.05017\n\n\u003ca id=\"2\"\u003e[2]\u003c/a\u003e\nGalatolo S., Monge M., Nisoli I., Existence of noise induced order, a computer aided proof Nonlinearity 33 (9), 4237 (2020)\n\n\u003ca id=\"3\"\u003e[3]\u003c/a\u003e\nGalatolo S., Nisoli I., An elementary approach to rigorous approximation of invariant\nmeasures SIAM J. Appl Dyn Sys.13 pp. 958-985 (2014)\n\n\u003ca id=\"4\"\u003e[4]\u003c/a\u003e Galatolo S., Nisoli I. Rigorous computation of invariant measures and fractal dimension for maps with contracting fibers: 2D Lorenz-like maps  \nErgodic Theory and Dynamical Systems 36 (6), 1865-1891 (2016)\n\n\u003ca id=\"5\"\u003e[5]\u003c/a\u003e Viana M., Olivera K. Foundations of Ergodic Theory\nCambridge studies in advanced mathematics, Cambridge University Press 2016\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliadynamics%2Frigorousinvariantmeasures.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliadynamics%2Frigorousinvariantmeasures.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliadynamics%2Frigorousinvariantmeasures.jl/lists"}