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 / examples / multivariate.ml
700 B 22 lines
1open Leibniz 2 3let () = 4 print_endline "gradient descent optimization\n"; 5 6 let f = Parser.parse "x^2 + y^2" in 7 print_endline ("minimizing f(x,y) = " ^ Expr.to_string f); 8 9 match Numerical.gradient_descent f ["x"; "y"] [5.0; 5.0] 0.1 100 with 10 | Some [x; y] -> 11 Printf.printf "minimum found at (%.4f, %.4f)\n" x y; 12 let f_val = Eval.eval [("x", x); ("y", y)] f in 13 Printf.printf "f(%.4f, %.4f) = %.4f\n" x y f_val 14 | _ -> 15 print_endline "optimization failed"; 16 17 print_endline "\ngradient computation\n"; 18 19 let grad = Multivariate.gradient ["x"; "y"] f in 20 print_endline "∇f = ["; 21 List.iter (fun g -> print_endline (" " ^ Expr.to_string g)) grad; 22 print_endline "]"