Numerical methods do exist. For some reason, I haven't seen this method or any similar ones around, but just as you can use the Secant method to find the root by drawing a line between two points, finding the x-intercept, then repeating, you can find the extrema of a function by drawing a parabola between 3 points, finding the vertex, then repeating. If you were to evaluate this, you'd find the results look like:
$$x_n = \frac{y_{n-1}(x_{n-2}^2-x_{n-3}^2)+y_{n-2}(x_{n-3}^2-x_{n-1}^2)+y_{n-3}(x_{n-1}^2-x_{n-2}^2)}{2(y_{n-1}(x_{n-2}-x_{n-3})+y_{n-2}(x_{n-3}-x_{n-1})+y_{n-3}(x_{n-1}-x_{n-2}))}$$
Or, if you're a fan of matrices:
$$x_n = \frac{\begin{vmatrix}
x_{n-1}^2 & y_{n-1} & 1 \\
x_{n-2}^2 & y_{n-2} & 1 \\
x_{n-3}^2 & y_{n-3} & 1\end{vmatrix}}
{2\begin{vmatrix}
x_{n-1} & y_{n-1} & 1 \\
x_{n-2} & y_{n-2} & 1 \\
x_{n-3} & y_{n-3} & 1\end{vmatrix}}
$$
So, if you start with 3 initial x values sufficiently close to a local extremum, then use this method to iteratively calculate the next x, you should hopefully get close to the extremum. Much like the secant method, it doesn't always converge, especially if the initial 3 values chosen were not even close. It also usually fails to converge if the extremum occurs at an inflection point, much like how the secant method usually doesn't converge if the root occurs at an extremum.
Technically, while this method does require 3 initial values, you could cheat and just start with 2 initial values, then make $x_3 = \frac{x_1+x_2}2$. Just as the seeds of the secant method are basically the upper and lower bounds of the root (though sometimes, they do go out of bounds), here your two initial values will act as bounding boxes for your extremum (though again, it could go out of bounds if things aren't well behaved).
Similar to how the secant method has a convergence of the golden ratio (that is, the number of correct digits is expected to multiply by 1.618 each iteration), this method has a convergence of the plastic number (the number ρ such that ρ+1=ρ³, equal to about 1.325). That is to say, it doesn't converge nearly as fast, in fact it converges about 1.7 times slower. But, it still converges superlinearly, so it is still a viable method. And, just like the secant method, it doesn't require you to already know one or more higher order derivatives.
However, if you do happen to already know higher order derivatives (and they're not extremely computationally expensive), it would definitely be recommended to use methods such as the secant method, Newton's method, or Halley's method to locate a root of the first derivative.
Upon evaluating this method through a program (testing it out on the function y = sin(x)cos²(x)), I found that most of the time, it converges to a few decimal places, then fluctuates. This is mostly due to roundoff: at a local extremum, the derivative is 0 and the y values are mostly the same, the difference between them is quadratically proportional to how much x is off by. A solution to this is to simply rearrange the terms in a way that leads to less roundoff. The most reliable approach I found was the following:
$$x_n = x_{n-1} - \frac{(y_{n-2}-y_{n-1})(x_{n-1}-x_{n-3})^2+(y_{n-1}-y_{n-3})(x_{n-1}-x_{n-2})^2}{2((y_{n-2}-y_{n-1})(x_{n-1}-x_{n-3})+(y_{n-1}-y_{n-3})(x_{n-1}-x_{n-2}))}$$
Hope this helps!
$$(\sqrt{a}-\sqrt{b})^2 \geqslant 0,$$
$$a+b \geqslant 2\sqrt{a \cdot b}.$$
– Oleg567 Jun 26 '13 at 21:39