# newton_rootfinder ![crates.io](https://img.shields.io/crates/v/newton_rootfinder.svg) ![Build Status](https://github.com/Nateckert/newton_rootfinder/actions/workflows/ci.yml/badge.svg) `newton_rootfinder` is a scientific computing rust crate to solve nonlinear equation systems thanks to [rootfinding methods](https://en.wikipedia.org/wiki/Root-finding_algorithms). ## Focus of the crate This crate implements [Newton's method](https://en.wikipedia.org/wiki/Newton%27s_method) and other derived methods. To see a visualization of this method, you can watch this video: [Newton's fractal](https://www.youtube.com/watch?v=-RdOwhmqP5s) This crate provides methods applicable for n-dimensional problems. It provides several parametrization options and a simulation log to monitor the resolution process. ## Out of scope This crate does NOT provide a solver for nonlinear differential equations. This crate does NOT provide a specific solver for one dimensional problems. ## Documentation Check the documentation on [doc.rs](https://docs.rs/newton_rootfinder/) ## Comparison with other rust crates For the comparison with other crates that implements several fonctionalities, the module of those crate has been explicited. Note: Crates may have evolved since this comparison was established. If you feel that this comparison needs an update, don't hesite to open an issue or to do a pull request ! ### N-dimensional solver The following crates are providing solvers based on Newton's method for n-dimensional systems. `newton_rootfinder` aims to be the reference crate for n-dimensional rootfinding algorithms and is focused only on that topic. | crate | version | Advanced
Parametrization | Simulation
Log | Other iterative
algorithms | |--------|--------:|:-----------------------------:|:-------------------:|:------------------------------:| | `newton_rootfinder` | 0.10.0 | ✔️ | ✔️ | ✔️ | | peroxide::numerical::newton | 0.31.7 | ❌ | ❌ | ❌ | bacon_sci::roots (0.13.1) also implements n-dimensional methods, but only for polynomials. ### 1-dimensional solver If you are looking crates for one dimensional solver, `newton_rootfinder` is not the right one for you, but the rust ecosystem has several options : | crate | version | Newton-Raphson | Other Iterative methods | Analytical methods | Error handling | |------ |--------:|:--------------:|:-----------------------:|:-------------------:|:--------------:| | newton-raphson | 0.1.0 | ✔️ | ❌ | ❌ | ❌ | | nrfind | 1.0.3 | ✔️ | ❌ | ❌ | ✔️ | | rootfind | 0.7.0 | ✔️ | ✔️ | ❌ | ✔️ | | roots | 0.0.7 | ✔️ | ✔️ | ✔️ | ✔️ | | bacon_sci | 0.13.1 | ✔️ | ✔️ | ❌ | ✔️ | ## Contribution Check the [CONTRIBUTE.md](./CONTRIBUTE.md) file, help is always welcome ! ## License `newton_rootfinder` is dual licensed, you can choose to use it with either: - [Apache-2.0 license](http://opensource.org/licenses/APACHE-2.0) - [MIT license](https://opensource.org/licenses/MIT)