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 = dP(t)/dt = vP

 

Tu will be the unit tangent vector, which is:

 

Tu= vP/abs(vP)

 

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(Ov)*k is substituted for vP. One should note that k is the afore mentioned constant of proportionality.

 

Tu= vP/abs(vO)*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 Tu to be in the same direction. When U and Tu are known, their dot product can be taken to illustrate this property.

 

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

 

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

 

Therefore: U = Tu

 

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

 

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

 

To solve for vP we will multiply by abs(vO)*k to acquire the following equation:

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

 

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

 

abs(vO)*k = [(dP(t)/dt)^2+(dP(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:

 

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

 

vP = k*[(dP(t)/dt)^2+(dP(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

 

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

 

 

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

 

y= dx/d(t) = k*[(dP(t)/dt)^2+(dQ(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.

 

dP(t)/dt = 1

dQ(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.

 

Uprime=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.

 

pstline.m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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.

 

pstparab.m

 

 

 

 

 

 

 

 

 

 

 

 

 

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.

 

pstcirc.m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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.

 

pstelli.m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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');

 

 

 

 

 

 

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

 

pstsin.m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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');

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

pstwild.m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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)

 

1st Pursuit Curve

The derivation of the 2nd 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 dx/dt is substituted for dP/dt, and y or dy/dt is substituted for dQ/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*[(dx(t)/dt)^2+(dy(t)/dt)^2]^(1/2)*{ (x-A) / [(x-A)^2 + y-B)^2]^(1/2)}

 

y= dx/d(t) = k*[(dx(t)/dt)^2+(dy(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 1st 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 2nd 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 2nd 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.

dualderiv

 

 

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

pstdualcirc.m

 

 

 

 

 

 

 

 

 

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');

 

 

 

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

 

pstdualline.m

 

 

 

 

 

 

 

 

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');

 

 

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

pstdualsin.m

 

 

 

 

 

 

 

 

 

 

 

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.

bugsderived

 

The m.file goes as follows.

 

 

 

% Set-up 3-D Pursuit Curve

function Uprime=threebugs(t,u,flag,Kpo,Kos,Ksp);

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

 

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