use eqsolver::single_variable::{FDNewton, Newton, Secant}; fn main() { let f = |x: f64| x.cos() - x.sin(); let df = |x: f64| -x.sin() - x.cos(); // Derivative of f let solution_newton = Newton::new(f, df).solve(0.8).unwrap(); // Starting guess is 0.8 // Finite difference Newton requires no derivative to be inputted (it // approximates it) let solution_fdnewton = FDNewton::new(f).solve(0.8).unwrap(); // Starting guess is 0.8 // Secant method requires no derivative too but needs two starting points let solution_secant = Secant::new(f).solve(0.5, 1.).unwrap(); println!("Newton: {solution_newton}"); println!("FDNewton: {solution_fdnewton}"); println!("Secant: {solution_secant}"); }