#root #newton-raphson #numeric #calculus #square-root

nrfind

A set of useful mathematical functions for floating point numbers based on the Newton-Raphson method for finding roots

8 releases (4 stable)

Uses old Rust 2015

1.0.3 Sep 27, 2019
1.0.2 Jan 28, 2018
1.0.0 Sep 3, 2017
0.2.1 Jan 12, 2017
0.1.1 Jan 11, 2017

#1026 in Math

Download history 664/week @ 2024-10-11 865/week @ 2024-10-18 913/week @ 2024-10-25 546/week @ 2024-11-01 576/week @ 2024-11-08 630/week @ 2024-11-15 634/week @ 2024-11-22 530/week @ 2024-11-29 516/week @ 2024-12-06 1044/week @ 2024-12-13 290/week @ 2024-12-20 243/week @ 2024-12-27 660/week @ 2025-01-03 1169/week @ 2025-01-10 1149/week @ 2025-01-17 1582/week @ 2025-01-24

4,742 downloads per month
Used in 6 crates (2 directly)

MIT license

8KB

nrfind

Crates.io version badge Build Status Passively Maintained

nrfind provides a Newton-Raphson root finder for arbitrary differentiable functions, as well as convenient wrappers for common use cases like square roots.

Documentation is available on docs.rs

A simple example of usage to find the roots of x^3 + x^2 + 1 in 18 iterations:

extern crate nrfind;

// The function for whose roots find_root will solve
fn f(x: f64) -> f64 {
    x.powi(3) + x.powi(2) + 1.0
}

// That function's derivative
fn fd(x: f64) -> f64 {
    (3.0 * x.powi(2)) + (2.0 * x)
}

fn main() {
    let initial_guess = 100.0;
    let precision = 0.1;
    let iterations = 18;

    println!("x^3 + x^2 + 1 = 0 when x ~= {}",
             nrfind::find_root(&f, &fd, 
                               initial_guess, 
                               precision, 
                               iterations).unwrap());
}

This will print: x^3 + x^2 + 1 = 0 when x ~= -1.4675327346575013.

Note that while this method is guaranteed to approximate a root, it may not be the root you care about! Changing the given x0 guess can have an impact on which root is approximated.

Dependencies

~470KB