Axect / Peroxide

Rust numeric library with R, MATLAB & Python syntax
https://crates.io/crates/peroxide
Apache License 2.0
470 stars 27 forks source link

Adaptive Differential Equation Solvers #47

Closed amartyabose closed 2 months ago

amartyabose commented 2 years ago

Hey,

Thanks for the wonderful library. Do you have plans of putting in adaptive solvers of differential equations? Would that require considerable changes to the current framework?

Best, Amartya

Axect commented 2 years ago

Hello.

Thank you for your interest. The bottom line is, yes, I want to implement adaptive differential equation solver algorithms such as Runge-Kutta-Fehlberg, Dormand-Prince and etc. And it does not require noticeable changes to current version. But unfortunately, I have devoted a lot of time to other research now, so it seems difficult to implement for the time being. At the earliest, it seems that I will be able to try implementations that have been delayed until early next year. Of course, if anyone is interested in implementation, pull-requests are always welcome. :smile:

amartyabose commented 2 years ago

Hello,

That's really nice. The possible breadth of the library that you have designed is quite phenomenal. I would love to be able to contribute. I am new to Rust and still trying to wrap my head around the peroxide infrastructure in between my regular research. I might ask you a few questions and try to add little things to the framework for starters.

Axect commented 2 years ago

Sure. Any questions are always welcome!

Axect commented 2 months ago

Hello Amartya,

I apologize for the long delay in getting back to you. It's been three years since we discussed the implementation of adaptive solvers in Peroxide, and I'm happy to share that we now have some great news to share with you.

Starting from version 0.36.0, Peroxide now includes a variety of ODE integrators. Notably, the methods in the Embedded category, such as Bogacki-Shampine 2/3rd order (BS23), Runge-Kutta-Fehlberg 4/5th order (RKF45), Dormand-Prince 4/5th order (DP45), and Tsitouras 4/5th order (TSIT45), utilize adaptive step sizes to provide more efficient and accurate solutions to differential equations.

While adding adaptive solvers didn't require monumental changes to the existing framework, it did necessitate significant modifications to improve the overall design and efficiency of the ODE module. These changes took a considerable amount of time due to my involvement in other research projects. I truly appreciate your interest and patience.

Peroxide has undergone some major updates recently. Here are some highlights from the latest release notes:

You can find more information about the updated ODE module in the following link: docs for ode.rs

If you have any questions or suggestions while using Peroxide, especially regarding the adaptive solvers, please feel free to reach out. As always, Pull Requests are welcome!

I hope Peroxide continues to be helpful in your research. Thank you for your support and understanding.

Best regards, Axect