symbolic mathematics engine in OCaml with differentiation, integration, simplification, and numerical methods
1open Leibniz
2
3let () =
4 print_endline "symbolic integration\n";
5
6 let expressions = [
7 ("x", "x");
8 ("x^2", "x");
9 ("sin(x)", "x");
10 ("cos(x)", "x");
11 ("e^x", "x");
12 ] in
13
14 List.iter (fun (expr_str, var) ->
15 let expr = Parser.parse expr_str in
16 match Integrate.integrate var expr with
17 | Some result ->
18 Printf.printf "∫ %s d%s = %s\n" expr_str var (Expr.to_string result)
19 | None ->
20 Printf.printf "∫ %s d%s = (no closed form)\n" expr_str var
21 ) expressions;
22
23 print_endline "\ntaylor series expansion\n";
24
25 let sin_x = Parser.parse "sin(x)" in
26 let series = Series.maclaurin "x" sin_x 7 in
27 print_endline ("sin(x) ≈ " ^ Expr.to_string series);
28
29 let exp_x = Parser.parse "e^x" in
30 let exp_series = Series.maclaurin "x" exp_x 5 in
31 print_endline ("e^x ≈ " ^ Expr.to_string exp_series)