Wolfram Language

Symbolic & Numeric Calculus

Solve the Tautochrone Problem

The tautochrone problem requires finding the curve down which a bead placed anywhere will fall to the bottom in the same amount of time. Expressing the total fall time in terms of the arc length of the curve and the speed yields the Abel integral equation . Defining the unknown function by the relationship and using the conservation of energy equation yields the following explicit equation.

In[1]:=
Click for copyable input
abeleqn = T == 1/Sqrt[2 g] \!\( \*SubsuperscriptBox[\(\[Integral]\), \(0\), \(y\)]\( \*FractionBox[\(h[z]\), SqrtBox[\(y - z\)]] \[DifferentialD]z\)\);

Use DSolveValue to solve the integral equation.

In[2]:=
Click for copyable input
dsdy = DSolveValue[abeleqn, h[y], y]
Out[2]=

Using the relationship , solve for .

In[3]:=
Click for copyable input
dxdy = Sqrt[dsdy^2 - 1]
Out[3]=

Starting the curve from the origin and integrating yields as a function of . Notice that the assumptions ensure the integrand is real valued.

In[4]:=
Click for copyable input
x[y_] = Integrate[dxdy, {y, 0, y}, Assumptions -> (2 g (T^2) )/(\[Pi]^2 y) > 1 && y > 0]
Out[4]=

Using a time of descent of two seconds and substituting in the value of the gravitational acceleration, plot the maximal curve for the tautochrone. (The branch comes from the solution for the derivative of .)

In[5]:=
Click for copyable input
Show[ParametricPlot[{{x[y], y}, {-x[y], y}} /. {g -> 9.8, T -> 2}, {y, 0, (2 (9.8) 2^2)/\[Pi]^2}], ImageSize -> Medium]
Out[5]=

Making the change of variables gives a simple, nonsingular parametrization of the curve with .

In[6]:=
Click for copyable input
c[\[Theta]_] = ( g T^2)/\[Pi]^2 {Sin[\[Theta]] + \[Theta], 1 - Cos[\[Theta]]} ;

Combining the conservation of energy equation and the chain rule produces the following differential equation for as a function of , which can be solved numerically.

In[7]:=
Click for copyable input
\[Theta]' == \[PlusMinus]FullSimplify[ Sqrt[ 2 g (Last[c[\[Theta]Max]] - Last[c[\[Theta]]])] /Sqrt[ c'[\[Theta]].c'[\[Theta]]] , g > 0 && T > 0]
Out[7]=

Visualize the motion along the tautochrone.

Play Animation
Stop Animation

Related Examples

de es fr ja ko pt-br ru zh