The Tractrix Problems

Homework Solutions

Richard Hitt
Department of Mathematics and Statistics
University of South Alabama

Exercises

Exercise 1

Explain the differential equation used to solve the tractrix problem.  In other words, derive the equation from the information given in the problem.

If you consider the triangle determined by the Coast Guard boat, the drug boat, and the point on the y-axis horizontally aligned with the Coast Guard boat, then the hypotenuse of the triangle has slope y'[x] where y[x] is the tractrix.  This leads to the IVP solved in the next cell.

sol = 
      DSolve[{y'[x] == -Sqrt[1 - x^2]/x, y[1] == 0}, 
        y[x], x]

Plot[y[x] /. sol, {x,  .1, 1}, 
      AspectRatio -> Automatic]

Exercise 2

Construct an animation for the tractrix solution curve that shows the drug boat and the Coast Guard boat moving along as a function of time.  In order to do this, you have to express the solution to the tractrix problem given in the notebook using time as the independent variable rather than x.

Clear[a, t, v]

If the drug boat is moving at speed v along the positive y-axis and if the Coast Guard boat wants to maintain a distance a from the drug boat, a parametric form of the tractrix is given by

r[t_] := a*{Sech[t*v/a], t*v/a - Tanh[t*v/a]}

I don't know how to arrive at this as a solution to a meaningful differential equation, but it is easy to verify that the vector-valued function r[t] has the necessary properties.

The derivative is

r'[t] // Simplify

The slope is

slope[
        t_] := r'[t][[2]]/r'[
            t][[1]]
slope[t] // Simplify

And the y-intercept is

slope[t]*(-r[t][[1]]) + r[t][[2]] // 
      Simplify

This shows that the points on the curve r[t] are headed directly toward the point (0,t*v) at each moment of time.

The vector from the y-intercept of the tangent line to the corresponding point on the tractrix is

vec = {0, t*v} - r[t]

The square of the magnitude of that vector is

vec . vec // Simplify

So each point on the tractrix is exactly a units from the y-intercept of the tangent line.

Clear[a, v, t]
a = 1;  v = 1;
r[t_] := 
        a*{Sech[t*v/a], t*v/a - Tanh[t*v/a]};
drug[t_] := {0, t*v};
DrugBoat = 
        Graphics[{RGBColor[1, 0, 0], PointSize[0.03], 
            Point[drug[t]]}];
CoastGuard = 
        Graphics[{RGBColor[0, 0, 1], PointSize[0.03], 
            Point[r[t]]}];
line = Graphics[Line[{drug[t], r[t]}]]
Graph = 
        ParametricPlot[r[t], {t, 0, 2.4}, AspectRatio -> Automatic, 
          PlotRange -> {{0, 1}, {0, 2}}, Compiled -> False, 
          AxesOrigin -> {0, 0},  
          DisplayFunction -> Identity];
For[t = 0, t ≤ 2, 
      t += 1/16, 
Show[Graph, DrugBoat, CoastGuard, line, 
        DisplayFunction -> $DisplayFunction
]
]

Clear[a, v, t]
a = 1;  v = 1;
r[t_] := 
        a*{Sech[t*v/a], t*v/a - Tanh[t*v/a]};
drug[t_] := {0, t*v};
DrugBoat = 
        Graphics[{RGBColor[1, 0, 0], PointSize[0.03], 
            Point[drug[t]]}];
CoastGuard = 
        Graphics[{RGBColor[0, 0, 1], PointSize[0.03], 
            Point[r[t]]}];
line = Graphics[Line[{drug[t], r[t]}]];
Graph = 
        ParametricPlot[r[t], {t, 0, 2.4}, AspectRatio -> Automatic, 
          PlotRange -> {{0, 1}, {0, 2}}, Compiled -> False, 
          AxesOrigin -> {0, 0},  
          DisplayFunction -> Identity];
DrugBoatList = {RGBColor[1, 0, 0], 
          PointSize[0.05]};
CoastGuardList = {RGBColor[0, 0, 1], 
          PointSize[0.05]};
LineList = {};

For[t = 0, t ≤ 2, 
      t += 1/10, 
{AppendTo[DrugBoatList, 
          Point[drug[t]]], 
AppendTo[CoastGuardList, 
          Point[r[t]]], 
AppendTo[LineList, 
          Line[{drug[t], r[t]}]], 
Show[
          Graph, 
Graphics[
            DrugBoatList], 
Graphics[
            CoastGuardList], 
Graphics[
            LineList], 
DisplayFunction -> $DisplayFunction
]
}
]

DrugBoatList = {RGBColor[1, 0, 0], 
          PointSize[0.05]};
CoastGuardList = {RGBColor[0, 0, 1], 
          PointSize[0.05]};
LineList = {};
g = 
      Table[
{AppendTo[DrugBoatList, 
            Point[drug[t]]]; 
AppendTo[CoastGuardList, 
            Point[r[t]]]; 
AppendTo[LineList, 
            Line[{drug[t], 
                r[t]}]]; 
{Graph, 
Graphics[DrugBoatList], 
Graphics[
              CoastGuardList], 
Graphics[
              LineList]
}
}, 
{t, 0, 2.0,  .1}
]

<< Graphics`Animation`

ShowAnimation[g]

Some Geometry

First we load the package ParaPlot.m (it needs to be in the same directory as this notebook).

Needs["ParaPlot`"]

The Evolute of a tractrix is a catenary

The evolute of a curve C is defined as follows:  for each point on C, construct a normal line of length equal to the radius of curvature of C at that point; the endpoints of all such lines is the evolute.

We can use the ParaPlot package to see the evolute of the tractrix.  It turns out to be a catenary, as can be proven using geometry.

ParaPlot[{ Log[ Sec@t + Tan@t] -Sin@t, Cos@t},
	{t, -1.53, 1.53,.1},
	PlotEvolute->True,
	PlotRange->{{-3,3},{0,3}},
	AspectRatio->Automatic];0;

The involute of a catenary is a tractrix

The involute of a curve can be loosely defined as the set of points traced out by the end of a string as it is unwound from the curve.  We can use ParaPlot to illustrate that the involute of a catenary is a tractrix.

ParaPlot[{t, Cosh@t}, {t,-2,2.5}, Range[0,5,.25],
	PlotInvolute->True,
	AspectRatio->Automatic, PlotRange->{{-2.05,5},{-0.05,6.05}}
];0;