saddle-ocaml.ml

let start = [(Base 1.0); (Base 1.0)]

let f x1 y1 x2 y2 = ((sqr x1)+.(sqr y1))-.((sqr x2)+.(sqr y2))

let [x1_star; y1_star] =
  multivariate_argmin
    (fun [x1; y1] ->
      multivariate_max
	(fun [x2; y2] -> f x1 y1 x2 y2)
	start)
    start

let [x2_star; y2_star] =
  multivariate_argmax
    (fun [x2; y2] -> f x1_star y1_star x2 y2)
    start

let _ = [[(write x1_star); (write y1_star)];
	 [(write x2_star); (write y2_star)]]

Generated by GNU enscript 1.6.4.