symbolic mathematics engine in OCaml with differentiation, integration, simplification, and numerical methods
17

Configure Feed

Select the types of activity you want to include in your feed.

leibniz / lib / series.ml
769 B 26 lines
1open Expr 2open Diff 3open Substitute 4open Simplify 5 6let rec factorial n = 7 if n <= 1 then 1.0 8 else float_of_int n *. factorial (n - 1) 9 10let taylor var expr center order = 11 let rec build_terms n acc = 12 if n > order then acc 13 else 14 let derivative = diff_n var n expr in 15 let deriv_at_center = substitute var center derivative in 16 let coeff = Div (deriv_at_center, Const (factorial n)) in 17 let h = Sub (Var var, center) in 18 let term = Mul (coeff, Pow (h, Const (float_of_int n))) in 19 build_terms (n + 1) (term :: acc) 20 in 21 let terms = List.rev (build_terms 0 []) in 22 let series = List.fold_left (fun acc t -> Add (acc, t)) (Const 0.0) terms in 23 simplify series 24 25let maclaurin var expr order = 26 taylor var expr (Const 0.0) order