Note that arguments after ... must be matched exactly.  The method used is a combination of golden section search and
  successive parabolic interpolation, and was designed for use with
  continuous functions.  Convergence is never much slower
  than that for a Fibonacci search.  If f has a continuous second
  derivative which is positive at the minimum (which is not at lower or
  upper), then convergence is superlinear, and usually of the
  order of about 1.324.
  The function f is never evaluated at two points closer together
  than $eps *$$ |x_0| + (tol/3)$, where
  $eps$ is approximately sqrt(.Machine$double.eps)
  and $x_0$ is the final abscissa optimize()$minimum.
  If f is a unimodal function and the computed values of f
  are always unimodal when separated by at least $eps *$
  $ |x| + (tol/3)$, then $x_0$ approximates the abscissa of the
  global minimum of f on the interval lower,upper with an
  error less than $eps *$$ |x_0|+ tol$.
  If f is not unimodal, then optimize() may approximate a
  local, but perhaps non-global, minimum to the same accuracy.
  The first evaluation of f is always at
  $x_1 = a + (1-\phi)(b-a)$ where (a,b) = (lower, upper) and
  $phi = (sqrt(5) - 1)/2 = 0.61803..$
  is the golden section ratio.
  Almost always, the second evaluation is at
  $x_2 = a + phi(b-a)$.
  Note that a local minimum inside $[x_1,x_2]$ will be found as
  solution, even when f is constant in there, see the last
  example.
  f will be called as f(x, ...) for a numeric value
  of x.
  The argument passed to f has special semantics and used to be
  shared between calls.  The function should not copy it.