Code for the submission to NeurIPS 2023 with the title

Learning Dynamical Systems from Noisy Data with Inverse-Explicit Integrators


################## NOTEBOOKS #######################

The following Jupyter notebooks correspond to the following Figures in the submission:

Figure 4. Propagation of noise to the optimization target.
NOTEBOOK: run_tests_variance_optimization.ipynb

Figure 5. Roll out in time for the double pendulum
Figure 6. Flow error for MIRK, MII and ISO for sigma = 0.05
Figure 7. Flow error for MIRK, MII and ISO for sigma = 0.0
Figure 8. Roll-out in time for the Hénon-Heiles and FPUT.
NOTEBOOK: run_tests_flow_error.ipynb

Figure 10. Global error (left) and energy error (right).
NOTEBOOK: run_tests_energy_preservation.ipynb



################## Python scripts #######################

All plots except Figure 7., are generated by running "run_all_experiments.py".
All plots will then be found in the /plots folder.
Change parameters and play around in the "set_variables.py" file.

Figure 7. is generated by setting sigma = 0.0 in "set_variables.py" and rerunning 
"run_all_experiments.py" or "run_tests_flow_error.ipynb" specifically.


################# LICENSES ######################


The initial state optimization in "utils/iso_objective.py" is a 
modification of the implementation of ISO from the following repository:

https://github.com/zhengdao-chen/SRNN/

(CC-BY-NC 4.0 license)

from the paper

@inproceedings{Chen2020Symplectic,
title={Symplectic Recurrent Neural Networks},
author={Zhengdao Chen and Jianyu Zhang and Martin Arjovsky and Léon Bottou},
booktitle={International Conference on Learning Representations},
year={2020},
url={https://openreview.net/forum?id=BkgYPREtPr}
}


