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}