leibniz/examples/multivariate.ml
2026-01-19 03:37:26 +00:00

22 lines
700 B
OCaml

open Leibniz
let () =
print_endline "gradient descent optimization\n";
let f = Parser.parse "x^2 + y^2" in
print_endline ("minimizing f(x,y) = " ^ Expr.to_string f);
match Numerical.gradient_descent f ["x"; "y"] [5.0; 5.0] 0.1 100 with
| Some [x; y] ->
Printf.printf "minimum found at (%.4f, %.4f)\n" x y;
let f_val = Eval.eval [("x", x); ("y", y)] f in
Printf.printf "f(%.4f, %.4f) = %.4f\n" x y f_val
| _ ->
print_endline "optimization failed";
print_endline "\ngradient computation\n";
let grad = Multivariate.gradient ["x"; "y"] f in
print_endline "∇f = [";
List.iter (fun g -> print_endline (" " ^ Expr.to_string g)) grad;
print_endline "]"