sl_na/diff.rs
1
2
3pub fn diff(f: &Fn(f64)->f64, x: f64, h: f64) -> f64 {
4 return (f(x+h)-f(x-h))/(2.0*h);
5}
6
7pub fn diffn(n: u32, f: &Fn(f64)->f64, x: f64, h: f64) -> f64 {
8 if n==0 {
9 return f(x);
10 }else if n==1 {
11 return diff(f,x,h);
12 }else{
13 return (diffn(n-1,f,x+h,h)-diffn(n-1,f,x-h,h))/(2.0*h);
14 }
15}