Crates.io | nrfind |
lib.rs | nrfind |
version | 1.0.3 |
source | src |
created_at | 2017-01-11 20:36:22.160221 |
updated_at | 2019-09-27 16:45:19.355715 |
description | A set of useful mathematical functions for floating point numbers based on the Newton-Raphson method for finding roots. |
homepage | |
repository | https://github.com/LeoTindall/nrfind |
max_upload_size | |
id | 8026 |
size | 15,053 |
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.