Dan Therrien

Differential Equations

Pursuit Curves

Abstract

Pursuit curves can be modeled using parametric equations,
vectors, and differential equations, and can be easily plotted using matlab and the numerical solver ode45.

Introduction

A pursuit curve is the path taken by an object while
attempting to overcome another. In real
life it may be a cheetah chasing a rabbit, a linebacker running down a running
back, or a guided missile chasing down a jet.
Although the pursuit equation cannot take into consideration every
variable, condition, circumstance, or path to pursue, it is adequate for our
application. In this we will see the
original equation (the
pursued) plotted with the pursuit curve.

Definition

A pursuit curve is the path an object takes when chasing or
“pursuing” another object. The pursuit
curve can be described as a vector whose magnitude is proportional to that of
the pursued, and is always moving directly towards the pursued.

Derivation of the Pursuit Curve

Two distinct parametric equations can be used to simply
define the equations that model the paths of the pursued and the pursuer. We will call these equations **O** for the original path, or that of the
pursued; and **P** for the pursuit curve
which is taken by the pursuer.

The equation for that of the pursued is:

**O(****t)=**p(t)(i)
+q(t)(j)

This vector is broken down into (i) and (j) components, where p(t) and q(t) are the time dependent equations that model the curves path in the (i) and (j) directions, respectively.

The equation for that of the pursuer is:

**P(****t)=**x(t)(i)
+q(t)(j)

The pursuit vector is completely dependent on the path of
the pursued, and the constant of proportionality, k, that will be used to
define the magnitude of the **P **vector
relative to that of the **O**. (i.e. If k = 1 the pursuer will always be moving at
the same speed as the pursued, but will still follow a different path).

Although the path is easily defined, x(t) and y(t) are unknown, and must be derived in developing a system of two non-homogeneous differential equations.

Deriving the Pursuit Curve

In deriving the path taken by the pursuing vector, one must define two unit vectors.

The first unit vector, the unit tangent vector, will point
towards the pursued curve, and, as is characteristic with any tangent line or
vector, will yield the direction of **P**
at any given instant in time. The
tangent vector will be represented by **T**
and will appear as the following.

**T** = d**P****(t)**/dt = v**P**** **

**T**u
will be the unit tangent vector, which is:

**T**u=
v**P****/**abs(v**P**)

As was expressed in the definition of the pursuit curve, the
pursuit curve retains a velocity that is proportional to that of the
pursued. To institute this property, a
substitution must be made, where abs(**O**v)*k is
substituted for v**P****. **One
should note that k is the afore mentioned constant of
proportionality.** **

**T**u=
v**P****/**abs(v**O**)*k

The second vector required to develop the system of
differential equations will be the unit vector of vector **P**. This vector will be in
the direction of **O-P**, and to make it
a unit vector must then be divided by abs(**O-P).
U **will represent the unit vector**. **

**U= O-P/** abs(**O-P)**

The definition of a pursuit curve states that **P** always proceeds precisely towards** O. **This
property causes both **U** and **T**u to be in the
same direction. When **U**
and **T**u are
known, their dot product can be taken to illustrate this property.

**[O-P/** abs(**O-P)] **(dot) **[**v**P****/**abs(v**O**)*k]=1

Since **O** and **P** are unit vectors, the two will also
be of equal magnitude.

Therefore: **U** = **T**u

We can now set the two vectors equal to each other, the resulting equation becomes:

**[**v**P****/**abs(v**O**)*k]** **= **[O-P/**
abs(**O-P)]**

To solve for v**P** we will multiply by abs(v**O**)*k to acquire
the following equation:

v**P**** **= abs(v**O**)*k*** [O-P/** abs(**O-P)]**

The equation may now be broken down into it’s
parts, in order to more easily understand the expansion of the entire thing.

abs(v**O**)*k = [(d**P****(t)**/dt)^2+(d**P****(t)**/dt)^2]^(1/2)*k

**O-P** = (p-x)(i) + (q-y)(j)

abs**(****O-P)** =
[(p-x)^2 + (q-y)^2]^(1/2)

These can now be combined to expand the original equation which is:

v**P**
**=** abs(v**O**)*k*** [O-P/** abs(**O-P)****]**

v**P** **= **k*****[(d**P****(t)**/dt)^2+(d**P****(t)**/dt)^2]^(1/2)*{ (p-x)(i) + (q-y)(j) / [(p-x)^2 + (q-y)^2]^(1/2)}

To continue developing our system of non-homogeneous
differential equations, we must now separate the coefficients of the previous
equation into (i) and (j) components, and them relate
them to the equation:

**P(****t)=**x(t)(i)
+q(t)(j)

Or now more appropriately

v**P**** =** k*****[(d**P****(t)**/dt)^2+(d**P****(t)**/dt)^2]^(1/2)*{
(p-x)(i) + (q-y)(j) / [(p-x)^2 + (q-y)^2]^(1/2)}

x’= dx/d(t) = k*****[(d**P****(t)**/dt)^2+(d**Q****(t)**/dt)^2]^(1/2)*{ (p-x) / [(p-x)^2 +
(q-y)^2]^(1/2)}

y’= dx/d(t) = k*****[(d**P****(t)**/dt)^2+(d**Q****(t)**/dt)^2]^(1/2)*{ (q-y) / [(p-x)^2 +
(q-y)^2]^(1/2)}

The following equations are identical to the two above, but appear as they would on in a textbook, and are thus easier to read.

We can now use these equations, and the known equation for
the path of the pursued, we can find the curve using MATLAB and the numerical
solver ode45 in Matlab.

Basic Pursuit Curves

__Pursuing a Linear Path__

The first step in modeling a pursuit curve is to set up the
parametric equation that is to be pursued.
In this case we have chosen a linear path with the (i)
and (j) components of the original equation to be **P(****t)**=t+3 and **Q(t)**=t-1
respectively.

**P(****t)**=t+3

**Q(****t)**=t-1

We must next take the derivatives of the above equations so that we can substitute those values into our general equation.

d**P****(****t)**/dt = 1

d**Q****(****t)**/dt = 1

The substitution goes as follows.

x’= dx/d(t) = k*****[(1)^2+(1)^2]^(1/2)*{ (t+3-x)
/ [((t+3)-x)^2 + ((t-1)-y)^2]^(1/2)}

y’= dx/d(t) = k*****[(1)^2+(1)^2]^(1/2)*{ (t-1-x)
/ [((t+3)-x)^2 + ((t-1)-y)^2]^(1/2)}

We now use matlab and the numerical solver ode45 to obtain a graphic representation of the original path and its pursuit curve.

**MATLAB REPRESENTATION**

The following commands are shown as they appear in MATLAB. The m.file will remain indented and in an alternative font, while the explanation is not indented and the font will not change.

**%Set-up
Linear Pursuit Curve**

**function**** Uprime=pstline(t,u,flag,k);**

The first step in modeling a pursuit curve is to set up the function to be modeled, in this case we have called it “pstline”. We have chosen to call up a flag for, k, the constant of proportionality, so that we may change it each time the pursuit is conducted, if we so choose.

U**prime****=zeros(2,1);**

The Uprime=zeros(2,1) sets up the column vectors for x’ and y’ from the general equation.

**P=t+3;**

**Q=t-1;**

**dP****=****1;**

**dQ****=****1;**

The function values of P, Q, dP, and dQ are programmed, so MATLAB can substitute them into the ode45 equation.

**Uprime****(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));**

**Uprime****(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));**

Uprime(1) and Uprime(2) are set up, and are the solutions specific to the linear pursuit described earlier. Uprime(1) and Uprime(2) equal x’ and y’ respectively.

**%MATLAB
COMMANDS FOR GRAPH (copy and paste)**

**%SET
UP ODE45**

**%[t,y]=ode45('pstline',[0,15],[0;0],[],.75);**

The afore command should be copied and pasted onto the MATLAB command line. See help ode45 in MATLAB for an explanation of the numerical solver.

**%ENTER
VALUES FOR P AND Q (because P and Q are not global)**

**%P=t+3;Q=t-1;**

As is mentioned in the m.file note, P and Q are not global, so their values must be entered in the command window if they are to be graphed.

**%PLOT
P vs. Q-{original curve} AND Y(:,1)vs.Y(:,2)-{pursuit
curve}**

**%plot(P,Q,'B',y(:,1),y(:,2),'r');**

The pursuit original parametric equation P vs. Q is plotted
and the Uprime(1) vs. Uprime(2) column vectors
are plotted. These construct the pursuit
curve.

**%ORCHESTRATE
GRAPH PRESENTATION**

**%Axis
equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Standard Pursuit of Linear
Path');legend('Original Path','Pursuit Curve');**

The final product is the following graph produced.

To view the m.file shown above, which produces this graph, click on the following hyperlink.

__Pursuing a Parabolic Path__

Although the following pursuit will not be described in the detail of the previous, its m.file can still be accessed, and its graph will be shown.

% Set-up Parabolic Pursuit Curve

function Uprime=pstparab(t,u,flag,k);

Uprime=zeros(2,1);

P=t.^2+3;

Q=t;

dP=2*t;

dQ=1;

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%[t,y]=ode45('pstparab',[0,4],[0;0],[],.75);

%PLOT GRAPH

%P=t.^2+3;Q=t;plot(P,Q,'B',y(:,1),y(:,2),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Standard Pursuit of Parabolic
Path');legend('Original Path','Pursuit Curve');

The previous m.file produced this figure. To view the file in .m format click on the following hyperlink.

__Pursuing a Circular Path__

The following m.file yields the pursuit of a circular path.

% Set-up Dual Pursuit Function

function Uprime=pstdualcirc(t,u,flag,k);

Uprime=zeros(4,1);

P=sin(t);

Q=cos(t);

dP=cos(t);

dQ=-sin(t);

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(3)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(1)-u(3))/((u(1)-Uprime(1))^2+(u(2)-u(4))^2)^(1/2));

Uprime(4)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(2)-u(4))/((u(1)-Uprime(1))^2+(u(2)-u(4))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and paste)

%SET UP ODE45

%NOTE: we are starting the 1st
pursuit at (0,0) and the 2nd pursuit at(1,1)

%[t,y]=ode45('pstdualcirc',[0.01,25],[0;0;1;1],[],.75);

%PLOT GRAPH

%P=sin(t);Q=cos(t);plot(P,Q,'k',y(:,1),y(:,2),'g',y(:,3),y(:,4),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Dual Pursuit of Circular
Path');legend('Original Path','1st Pursuit Curve','2nd Pursuit Curve');

The previous m.file produced this figure. To view the file in .m format click on the following hyperlink.

It is interesting to note
that with a k value of .75, the pursuit curve eventually forms a smaller circle
with a radius of .75 of
the original.

__Pursuing an Elliptical
Path__

The following m.file yields the pursuit of an elliptical path.

%Set-up Elliptical Pursuit Curve

function Uprime=pstelli(t,u,flag,k);

Uprime=zeros(2,1);

P=(1/2)*sin(t);

Q=cos(t);

dP=(1/2)*cos(t);

dQ=-sin(t);

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%[t,y]=ode45('pstelli',[0,12],[0;0],[],.75);

%PLOT GRAPH

%P=(1/2)*sin(t);Q=cos(t);;plot(P,Q,'b',y(:,1),y(:,2),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Standard Pursuit of Elliptical
Path');legend('Original Path','Pursuit Curve');

Complex Paths (ellipse, parabola, sine…)

The previous m.file produced this figure. To view the file in .m format click on the following hyperlink.

__Pursuing a Sinusoidal Path__

The following m.file yields the pursuit of a sinusoidal path.

function Uprime=pstdualsin(t,u,flag,k);

Uprime=zeros(4,1);

P=t;

Q=cos(t);

dP=1;

dQ=-sin(t);

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(3)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(1)-u(3))/((u(1)-Uprime(1))^2+(u(2)-u(4))^2)^(1/2));

Uprime(4)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(2)-u(4))/((u(1)-Uprime(1))^2+(u(2)-u(4))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%NOTE: we are starting the 1st
pursuit at (0,0) and the 2nd pursuit at(0,0)

%[t,y]=ode45('pstdualsin',[0.01,21],[0;0;0;0],[],.75);

%PLOT GRAPH

%P=t;Q=cos(t);plot(P,Q,'k',y(:,1),y(:,2),'g',y(:,3),y(:,4),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Dual Pursuit of Sinusoidal
Path');legend('Original Path','1st Pursuit Curve','2nd Pursuit Curve');

One should note that in this pursuit we started the
pursuit curve at the point (1,3).

__Pursuing a Wild Path__

The following m.file yields the pursuit of an unusual sinusoidal path.

% Set-up Wild-Sine-function Pursuit
Curve

function Uprime=pstwild(t,u,flag,k);

Uprime=zeros(2,1);

P=t+2*sin(2*t);

Q=t+2*cos(5*t);

dP=1+4*cos(2*t);

dQ=1-10*sin(5*t);

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%[t,y]=ode45('pstwild',[0,14],[0;0],[],.75);

%PLOT GRAPH

%P=t+2*sin(2*t);Q=t+2*cos(5*t);plot(P,Q,'b',y(:,1),y(:,2),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Standard Pursuit of Wild
Path');legend('Original Path','Pursuit Curve');

__Pursuing a 3-D Path__

In order to set up the pursuit of a three dimensional path, one must institute a third vector in the (k) direction of both the original and pursuit curves. The derivation is nearly identical to the general two dimensional case. The resulting x’ ,y’ and z’ equations are shown below.

The following m.file yields the pursuit of a helical path.

% Set-up 3-D Pursuit Curve

function Uprime=psthelix(t,u,flag,k);

Uprime=zeros(3,1);

P=cos(t);

Q=sin(t);

R=t;

dP=sin(t);

dQ=cos(t);

dR=1;

Uprime(1)=k*((dP)^2+(dQ)^2+(dR)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2+(R-u(3))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2+(dR)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2+(R-u(3))^2)^(1/2));

Uprime(3)=k*((dP)^2+(dQ)^2+(dR)^2)^(1/2)*((R-u(3))/((P-u(1))^2+(Q-u(2))^2+(R-u(3))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%NOTE: we are starting the pursuit at
the position (0,0,7)

%NOTE2: we have given the pursuit
curve a k-value of 1.25, which means it

%can now overtake the original path

%[t,y]=ode45('psthelix',[0,28],[0;0;15],[],1.25);

%PLOT GRAPH

%P=cos(t);Q=sin(t);R=t;plot3(P,Q,R,'b',y(:,1),y(:,2),y(:,3),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');zlabel('khat-Axis');title('Standard Pursuit of Helical
Path');legend('Original Path','Pursuit Curve');

Dual Pursuit Curves

A dual pursuit curve plots the graph of the original path, the plot of its pursuer, and a third curve that pursues the second. Though the derivation was not difficult, plotting the curves in MATLAB proved difficult, yet possible.

The following shows the general formula for a single pursuit curve

__Original Path__

P(t)

Q(t)

__1 ^{st} Pursuit Curve__

The derivation of the 2^{nd} pursuit curve is as
follows

We must again use the (i) and (j) components of the path we are pursuing, and since in this case we are pursuing x(t) and y(t), we will make the correct substitutions.

A=x’

B=y’

Therefore on the left hand side of the equation: x’ or d**x**/dt is substituted for d**P**/dt, and y’ or
d**y**/dt is
substituted for d**Q**/dt. On the right hand side of the equation, x is substituted
for Q, y for P, A for x, and B for y. For
later references, it is important to realize that that since A=x’, where the
equation says x-A, it could also read x-x’.

x’= dx/d(t) = k*****[(d**x****(t)**/dt)^2+(d**y****(t)**/dt)^2]^(1/2)*{ (x-A) / [(x-A)^2 + y-B)^2]^(1/2)}

y’= dx/d(t) = k*****[(d**x****(t)**/dt)^2+(d**y****(t)**/dt)^2]^(1/2)*{ (y-B) / [(x-A)^2 + (y-B)^2]^(1/2)}

__Dual Pursuit of a Circular
Path__

The following MATLAB m.file
produces the dual pursuit of a circular path.

function Uprime=pstdualcirc(t,u,flag,k);

Uprime=zeros(4,1);

In order to set up the dual pursuit functions in two
dimensions, one must institute a fourth column vector in the ode45 function
setup. This is because the 1^{st}
pursuit curve needs (i) and (j) components, and so
does the second.

Uprime(1) and Uprime(2) remain the same.

P=sin(t);

Q=cos(t);

dP=cos(t);

dQ=-sin(t);

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(1) and Uprime(2) remain the same.

Uprime(3)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(1)-u(3))/((u(1)-Uprime(1))^2+(u(2)- Uprime(2))^2)^(1/2));

Uprime(4)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(2)-u(4))/((u(1)-Uprime(1))^2+(u(2)- Uprime(2))^2)^(1/2));

Uprime(3) and Uprime(4) are completely
dependent on Uprime(1) and Uprime(2). Though it is mathematically correct to write u(3) as in u(1)-u(3), MATLAB and ode45 will not produce the
correct 2^{nd} pursuit curve, because the square root on the right hand
side yields imaginary numbers. Although its explanation has eluded me, the
solution did not. Instead of u(1)-u(3), we remember that in our derivation A=x’, and
since in MATLAB A=u(3) and x’=Uprime(1), we make the
substitution inside of the radical and write u(1)-Uprime(1). This avoids the imaginary number problem, and
yields the 2^{nd} pursuit curve.
One should note that this substitution is not necessary with the u(1)-u(3) above the radical.

Correct Example of Uprime(3)

Uprime(3)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(1)-u(3))/((u(1)- Uprime(1))^2+(u(2)- Uprime(2))^2)^(1/2));

Incorrect Example of Uprime(3)

Uprime(3)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(1)-u(3))/((u(1)-u(3))^2+(u(2)-u(4))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%NOTE: we are starting the 1st
pursuit at (0,0) and the 2nd pursuit at(1,1)

%[t,y]=ode45('pstdualcirc',[0.01,25],[0;0;1;1],[],.75);

%PLOT GRAPH

%P=sin(t);Q=cos(t);plot(P,Q,'k',y(:,1),y(:,2),'g',y(:,3),y(:,4),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Dual Pursuit of Circular
Path');legend('Original Path','1st Pursuit Curve','2nd Pursuit Curve');

To see the hand derivation of this formula click on the following hyperlink.

The previous m.file
produced this figure. To view the file
in .m format click on the following hyperlink

__Dual Pursuit of a Linear
Path__

The following MATLAB m.file
produces the dual pursuit of a linear path.
The derivation is identical to that of the dual circular pursuit, with
only the initial equation, and (if the mathematician so chooses) the initial
positions differing.

% Set-up Dual Pursuit Function

function Uprime=pstdualline(t,u,flag,k);

Uprime=zeros(4,1);

P=t+1;

Q=t+3;

dP=1;

dQ=1;

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(3)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(1)-u(3))/((u(1)-Uprime(1))^2+(u(2)-Uprime(2))^2)^(1/2));

Uprime(4)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(2)-u(4))/((u(1)-Uprime(1))^2+(u(2)-Uprime(2))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%NOTE: we are starting the 1st
pursuit at (-1,0) and the 2nd pursuit at(3,3)

%[t,y]=ode45('pstdualline',[0.01,15],[0;-1;3;3],[],.75);

%PLOT GRAPH

%P=t+1;Q=t+3;plot(P,Q,'k',y(:,1),y(:,2),'g',y(:,3),y(:,4),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Dual
Pursuit of Linear Path');legend('Original Path','1st Pursuit Curve','2nd
Pursuit Curve');

__Dual Pursuit of a
Sinusoidal Path__

The following MATLAB m.file produces the dual pursuit of a sinusoidal path.

function Uprime=pstdualsin(t,u,flag,k);

Uprime=zeros(4,1);

P=t;

Q=cos(t);

dP=1;

dQ=-sin(t);

Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

Uprime(3)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(1)-u(3))/((u(1)-Uprime(1))^2+(u(2)-Uprime(2))^2)^(1/2));

Uprime(4)=.85*k*((Uprime(1))^2+(Uprime(2))^2)^(1/2)*((u(2)-u(4))/((u(1)-Uprime(1))^2+(u(2)-Uprime(2))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%SET UP ODE45

%NOTE: we are starting the 1st
pursuit at (0,0) and the 2nd pursuit at(0,0)

%[t,y]=ode45('pstdualsin',[0.01,21],[0;0;0;0],[],.75);

%PLOT GRAPH

%P=t;Q=cos(t);plot(P,Q,'k',y(:,1),y(:,2),'g',y(:,3),y(:,4),'r');

%ORCHESTRATE GRAPH PRESENTATION

%Axis equal;xlabel('ihat-Axis');ylabel('jhat-Axis');title('Dual Pursuit of Sinusoidal
Path');legend('Original Path','1st Pursuit Curve','2nd Pursuit Curve');

__Dual Pursuit of a Helix__

The following MATLAB m.file produces the dual pursuit of a helical path. One should note that as was the case with a single pursuit helix, a vector in the (k) direction is needed to yield three dimensions. Such is the reason for the necessity of six column vectors.

% Set-up 3-D Pursuit Curve

function Uprime=testhelix(t,u,flag,k);

Uprime=zeros(6,1);

P=cos(t);

Q=sin(t);

R=t;

dP=sin(t);

dQ=cos(t);

dR=1;

ddP=-sin(t);

ddQ=-cos(t);

ddR=0;

Uprime(1)=k*((dP)^2+(dQ)^2+(dR)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2+(R-u(3))^2)^(1/2));

Uprime(2)=k*((dP)^2+(dQ)^2+(dR)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2+(R-u(3))^2)^(1/2));

Uprime(3)=k*((dP)^2+(dQ)^2+(dR)^2)^(1/2)*((R-u(3))/((P-u(1))^2+(Q-u(2))^2+(R-u(3))^2)^(1/2));

Uprime(4)=.7*k*sqrt(Uprime(1)^2+Uprime(2)^2+Uprime(3)^2)*((u(1)-u(4))/((u(1)-Uprime(1))^2+(u(2)-Uprime(2))^2+(u(3)-Uprime(3))^2)^(1/2));

Uprime(5)=.7*k*sqrt(Uprime(1)^2+Uprime(2)^2+Uprime(3)^2)*((u(2)-u(5))/((u(1)-Uprime(1))^2+(u(2)-Uprime(2))^2+(u(3)-Uprime(3))^2)^(1/2));

Uprime(6)=.7*k*sqrt(Uprime(1)^2+Uprime(2)^2+Uprime(3)^2)*((u(3)-u(6))/((u(1)-Uprime(1))^2+(u(2)-Uprime(2))^2+(u(3)-Uprime(3))^2)^(1/2));

%MATLAB COMMANDS FOR GRAPH (copy and paste)

%SET UP ODE45

%NOTE: we are starting the 1st pursuit at (0,0,0) and the 2nd
pursuit at(0,0,0)

%[t,y]=ode45('pstdualhelix',[0,25],[0;0;0;0;0;0],[],.75);

%PLOT GRAPH

%P=cos(t);Q=sin(t);R=t;plot3(P,Q,R,'k',y(:,1),y(:,2),y(:,3),'g',y(:,4),y(:,5),y(:,6),'r');

%ORCHESTRATE GRAPH PRESENTATION

%NOTE2: the axes on this graph are not equal

%xlabel('ihat-Axis');ylabel('jhat-Axis');zlabel('khat-Axis');title('Dual
Pursuit of Sinusoidal Path');legend('Original Path','1st Pursuit Curve','2nd
Pursuit Curve');

The above pictures show the dual pursuit of a helical
path. The left figure does not have
equally scaled axes, while the right does, but both are of the identical graph.

The above picture shows the dual pursuit of a helix from the
top view.

Bug Problems

“Bug Problems” were an interesting addition to this projet, although I could not get MATLAB to represent their paths. Bug problems involve multiple pursuers that start at given points, where there is no initial path, but rather each pursuer chases one bug, and is in turn chased by another. For example: if A B and C were set up in a triangle, then A would chase B, B would chase C, and C would chase A.

With help, I was able to derive the equations for these, and though I created an m.file to model such an equation, I could not make the bugs begin to run. The derivation follows the same principle as the general form of the pursuit curve, and the dual pursuit curve, but this loops back onto it self so that there is no initial path.

Click on the hyperlink to view the derived general equation for a three bug problem.

The m.file goes as follows.

% Set-up 3-D Pursuit Curve

function Uprime=threebugs(t,u,flag,Kpo,

Uprime=zeros(6,1);

%xp'

Uprime(1)=Kpo*sqrt(Uprime(3)^2+Uprime(4)^2)*((Uprime(5)-u(1))./sqrt((Uprime(5)-u(1))^2+(Uprime(6)-u(2))^2));

%yp'

Uprime(2)=Kpo*sqrt(Uprime(3)^2+Uprime(4)^2)*((Uprime(6)-u(2))./sqrt((Uprime(5)-u(1))^2+(Uprime(6)-u(2))^2));

%xo'

Uprime(3)=Kos*sqrt(Uprime(5)^2+Uprime(6)^2)*((Uprime(1)-u(3))./sqrt((Uprime(1)-u(3))^2+(Uprime(2)-u(4))^2));

%yo'

Uprime(4)=Kos*sqrt(Uprime(5)^2+Uprime(6)^2)*((Uprime(2)-u(4))./sqrt((Uprime(1)-u(3))^2+(Uprime(2)-u(4))^2));

%xs'

Uprime(5)=Ksp*sqrt(Uprime(1)^2+Uprime(2)^2)*((Uprime(3)-u(5))./sqrt((Uprime(3)-u(5))^2+(Uprime(4)-u(6))^2));

%ys'

Uprime(6)=Ksp*sqrt(Uprime(1)^2+Uprime(2)^2)*((Uprime(4)-u(6))./sqrt((Uprime(3)-u(5))^2+(Uprime(4)-u(6))^2));

%MATLAB COMMANDS FOR GRAPH (copy and
paste)

%[t,y]=ode45('threebugs',[0,25],[1;sqrt(3);1;0;-1;0],[],1,1,1);

%plot(y(:,1),y(:,2),'bo',y(:,3),y(:,4),'go',y(:,5),y(:,6),'ro');Axis equal

%A=B''=C'

%A'=B

%Uprime(1)=k*((dP)^2+(dQ)^2)^(1/2)*((P-u(1))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

%Uprime(2)=k*((dP)^2+(dQ)^2)^(1/2)*((Q-u(2))/((P-u(1))^2+(Q-u(2))^2)^(1/2));

%A''=B'=C

%Uprime(3)=.5*k*((ddP)^2+(ddQ)^2)^(1/2)*((Uprime(1)-u(3))/((Uprime(1)-u(3))^2+(Uprime(2)-u(4))^2)^(1/2));

%Uprime(4)=.5*k*((ddP)^2+(ddQ)^2)^(1/2)*((Uprime(2)-u(4))/((Uprime(1)-u(3))^2+(Uprime(2)-u(4))^2)^(1/2));

In a standard pursuit, the pursuit begins as soon as time begins passing to affect the initial equation, but if the initial equation never moves, the pursuit curves to not begin to follow it. When the initial equation stops moving, the pursuit equation stops as well, and does not then head directly towards the final stopping point of the initial path. Though each bug is programmed to chase one of the other two, there is nothing I have found that will begin the pursuit. Each bug is waiting for another to move, before it moves itself.

Although I could not get matlab to produce the graph, some do exist, and I have included them, to illustrate the path taken, and to show how interesting they can be.

The graph to the left represents a three bug problem, the bugs follow the spiral paths to the center where they would meet. The black and white sections are for design purposes, and also show the bugs tangent vector at given units of time.

The above graphs represent a five and a four bug problem respectively. One should note that in these as was with the triangle. The bugs all move at the same relative speed.

Conclusion

As we defined earlier, the pursuit curve is the curve taken when an object or pursuer attempts to overtake another object. It is not to be confused with an intersection, which anticipates an objects position at a given time, and attempts to be there then. The difference between a pursuit and an intersection would be analogous to a guided missile and a bullet respectively.

The speed of the pursuer is always proportional to that of the pursued, and the pursuer will never overtake the pursued unless the value of the constant of proportionality, k, is greater than one, or the pursued runs directly into the pursuer. If k is less than one, the pursuer will never overtake the pursued, but it may remain close to it. Since the pursuer can cut the angles of the pursued, even with small k values, and large timespans, the pursuer may remain close to the pursued, depending on how much turning the pursued did. Though the distance traveled by the pursuer may not be nearly that of the pursued, their distance apart may be minimal. In this case, if the pursued knows he is faster than the pursuer, the most efficient way to create distance between them is to run in a straight line.

This equation, though adequate for our purpose, does not take in all real life parameters. It does not account for reaction time, agility of either body, momentum of either body, endurance, ability to hide, time constraints, or special boundaries.

Though the path of the pursued and pursuer can be easily modeled using differential equations. It would be exhaustingly time consuming to calculate the paths by hand with any amount of accuracy, especially in a dual pursuit, where the path of the second pursuer uses the path of the first pursuer to develop its own path. The use of MATLAB and ode45 allows for an accurate and relatively quick solution to a complex and intriguing problem.

Sources

- http://www.primaryresources.co.uk/maths/pursuit.htm
- http://www.uni-koblenz.de/~kgt/Learn/Textbook/node20.html
- http://mathworld.wolfram.com/ApolloniusCircle.html
- http://www.control.toronto.edu/~marshall/docs/MarLinBroFra-LNCIS2003.pdf
- http://www.usafa.af.mil/dfp/classes/315/Lesson%20Plans/Lesson%2006.pdf
- http://www.maa.org/mathland/mathtrek_7_16_01.html
- http://mail.fvcc.edu/~dhicketh/Math222/math222index.htm
- http://www.2dcurves.com/derived/pursuit.html
- http://mathworld.wolfram.com/PursuitCurve.html
- http://online.redwoods.cc.ca.us/instruct/darnold/deproj/Sp98/PeterG/
- http://jwilson.coe.uga.edu/EMT668/EMAT6680.F99/Erbas/KURSATgeometrypro/related%20curves/related%20curves.html