## Brachistochrone Problem

The problem is to design a frictionless ramp that connects
(0,0) to (1,1) (the positive y-axis is assumed to point downward)
such that a ball rolling down it will get to (1,1) in the shortest amount of
time.

We give three formulations. Each formulation involves a discretization of an
integral that represents time.

`bc4.mod`

is the formulation found in most books
(see, e.g., the classical text on calculus by Thomas). This version involves
minimizing an integral of a nonconvex function
of the unknown function y(x) giving the height (or depth really) of the ramp as
a function of horizontal position. This formulation is a difficult nonconvex
optimization problem.

In `bc7.mod`

, the roles of x and y are interchanged
(we assume monotonicity of
the function y(x)). That is, we seek a function x(y) that gives the horizontal
position of the ramp as it crosses level y. This version turns out to be
convex. It can also be cast as a second-order cone optimization problem.

`bc5.mod`

is the most straightforward of the models. In it, x(t) and y(t) are
both unknown functions to be determined. They must satisfy the boundary
conditions and the force balance equations. The calculation of the time
for a ramp so given is then easy to specify.

It is interesting to experiment with the spacing of the discretization of the
independent variable (x in `bc4.mod`

and y in `bc7.mod`

).
Uniform spacing leads to
very slow convergence. Appropriate nonuniform spacing gives dramatically
better results. See the model files for examples.
The plot shown below was produced with `gnuplot`

using the following command:

```
plot "bc.out" w lines
```