Maker Pro
Maker Pro

NY Times math problem

M

M Rath

Jim said:
I've not done anything on paper, but isn't this simply a variation of
the pursuit curve problem... the rabbit swims along a vector defined
by the agent's position and the center-point of the pond?

M Rath wrote:

I writing a coordinate output computer program for an outward spiral...but
my compiler is acting up.

Delphi console mode is not recognizing "Readln" after a simple loop in the
main program...
 
R

riverman

riverman said:



Splash!

LOL. Within, of course, the constraints of the stated problem.
"...a rabbit in the middle of a pond, an agent who can run
around the shore four times as fast as the rabbit can swim."

Let's not let all this precision affect our accuracy, shall we?
:)

--riverman
 
R

riverman

If the agent chooses a simpler strategy, run in the direction that
decreases
the angular separation  (if the angular separation is 0, do not move;
if the angular separation is 180 degrees, run clockwise)
then the rabbit cannot cause the agent to reverse
direction if the rabbit is more than 1/4 of the radius from the
center.
Indeed this second strategy is easily seen to be optimal for the
agent.

             

What do you mean by 'optimal for the agent', since it leads to the
rabbit escaping with the least travelled distance. I'd say its optimal
for the rabbit. Strange if it turned out to be optimal for both!

I can see that this strategy will work with any size pool, as the
distances and velocities are all relative. But what if the pool is
reduced to a POINT (as in a limit?) Who wins then?

--riverman
 
B

Bob Larter

riverman said:
What do you mean by 'optimal for the agent', since it leads to the
rabbit escaping with the least travelled distance. I'd say its optimal
for the rabbit. Strange if it turned out to be optimal for both!

I can see that this strategy will work with any size pool, as the
distances and velocities are all relative. But what if the pool is
reduced to a POINT (as in a limit?) Who wins then?

--riverman

It seems obvious to me that the rabbit will end up describing a spiral
path, as it will constantly be trying to stay 180 degrees away from the
agent.
The agent will move so as to to stay at the same angle as the rabbit,
& the rabbit will be trying to stay 180 degrees away from the agent. A
spiral is the obvious result, ending up with the rabbit hitting the
shore a whisker away from the agent. (Alternatively, the rabbit could
desribe a zig-zag path, but the end-result would be the same.)
 
B

Bob Larter

M said:
M Rath wrote:

I writing a coordinate output computer program for an outward spiral...but
my compiler is acting up.

Delphi console mode is not recognizing "Readln" after a simple loop in the
main program...

Well, that sure sucks!
 
W

William Hughes

What do you mean by 'optimal for the agent',

Optimal in the sense that if there is any strategy that will
stop the rabbit from escaping this strategy will.

since it leads to the
rabbit escaping with the least travelled distance.

Not under any assumptions I can come up with
(If the rabbit uses a sure escape strategy, the
distance travelled will be identical as long as the
agent does not stand still).
What assumptions justify this claim?
What strategy would lead to the rabbit escaping with
a longer travelled distance?
I'd say its optimal for the rabbit.

No, the optimal strategy for the rabbit is
for the agent not to move. (If the agent does
not move the rabbit swims
along a radius, if the agent moves
the rabbit does not swim along a radius).

- William Hughes
 
W

William Hughes

It seems obvious to me that the rabbit will end up describing a spiral
path, as it will constantly be trying to stay 180 degrees away from the
agent.

Nope, when the rabbit is close enough to a point on shore
that he can reach it before the agent, the rabbit will
take a straight line path. It no longer matters if it
is 180 degrees from the agent.

- William Hughes
 
M

mich

DId anyone here see the problem presented in
the Science section of NY Times last week?
Quite startling, to see something so sophisticated
in a 'general readership' publication.

Is it solvable without a calculus of variations approach?

Beacause the sped of agents is four times the rabbits speed, then the
rabbit get away.

The rabbit escapes if speed of agents is <= Pi+1.
 
D

Dave

Beacause the sped of agents is four times the rabbits speed, then the
rabbit get away.

The rabbit escapes if speed of agents is <= Pi+1.

Actually, the rabbit can escape if the agent's speed is less than
4.6033388487517003525565820291030165130674..., which exceeds pi + 1.

Dave
 
D

Dave

It seems obvious to me that the rabbit will end up describing a spiral
path, as it will constantly be trying to stay 180 degrees away from the
agent.
  The agent will move so as to to stay at the same angle as the rabbit,
& the rabbit will be trying to stay 180 degrees away from the agent. A
spiral is the obvious result, ending up with the rabbit hitting the
shore a whisker away from the agent. (Alternatively, the rabbit could
desribe a zig-zag path, but the end-result would be the same.)

Please give the greatest agent speed for which the rabbit can escape
using this strategy.

Dave
 
B

Bob Larter

William said:
Nope, when the rabbit is close enough to a point on shore
that he can reach it before the agent, the rabbit will
take a straight line path. It no longer matters if it
is 180 degrees from the agent.

Point. But the path should be a spiral before that.
 
M Rath wrote:

I writing a coordinate output computer program for an outward spiral...but
my compiler is acting up.

Delphi console mode is not recognizing "Readln" after a simple loop in the
main program...


Missing a semicolon somewhere?

Michael
 
D

Dave

How is this figure derived?

Assuming a pond's radius = 1 and the rabbit's speed = 1: If the
agent's speed is v, the rabbit can position himself 1/v from the
center on the opposite side of the pond from the agent. He then heads
radially toward the shore and watches to see which way the agent runs.
When the agent has committed himself to a direction, the rabbit turns
90 degrees in the opposite direction and heads in a straight line
toward the shore. If the agent reverses direction, the rabbit will
again head out on a radius until the agent, the rabbit, and the center
of the pond again are collinear or the agent reverses again. At this
point, the rabbit will be closer to the shore before and the agent
will find himself in a worse position; thus, once he commits to a
direction, the agent cannot afford to reverse it. The rabbit must swim
sqrt(1 - 1 / v^2) while the agent runs pi + arccos(1 / v). So solving

sqrt(1 - 1/v^2) = ( pi + arccos(1 / v) ) / v

for v gives the number in question.

Dave
 
J

Jim Thompson


That solution presumes the fox/agent doesn't move immediately.

Of course the problem is poorly stated, much like all requests for
circuit help here ;-)

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

Buy a Fiarysler with your tax credit...
Ignore that grinding noise, that is normal :)
 
D

Dave

That solution presumes the fox/agent doesn't move immediately.

No. It presumes that both the rabbit and the agent react instantly. So
the instant the rabbit gets more than 1/v from the center, the agent
chooses a direction and starts running. If he doesn't, the rabbit can
just swim straight to the shore.

Dave
 
M

M Rath

M Rath wrote:

I writing a coordinate output computer program for an outward spiral...but
my compiler is acting up.

Delphi console mode is not recognizing "Readln" after a simple loop in the
main program...

mrdarrett wrote:

Missing a semicolon somewhere?


M Rath wrote:

No the compiler is not accepting "ads:= Pi / 2" as a test value to develop
formulas in a loop. Now the compiler might be saying "What's the point of
calculating the same result over and over in a loop ?" but it did not accept
"ads:= Pi/2" with the loop commented out. But in both cases it accepts the
numerical value...
 
J

James Arthur

mich said:
Beacause the sped of agents is four times the rabbits speed, then the
rabbit get away.

The rabbit escapes if speed of agents is <= Pi+1.

Observation: I once chased a jackrabbit. I was on
a motorcycle, he was not. The rabbit got away.

Given his preternatural speed, the agent should fox
the rabbit into quitting the safety of the pond,
then give chase--he'll have the bunny in a few
strides.

Cheers,
James Arthur
 
K

KBH

Okay the circular pond has North and East coordinates at the radius point of
10 , 10 and the radius is 10 units . The agent is at North and East
coordinates of 20 , 10 and moves clockwise in 1-degree steps. The rabbit at
the center of the pond moves away from the agent at each step on a line
between the agent and the rabbit. And the rabbit moves 1/4 the distance that
the agent moves.

The rabbit gets out at North and East coordinates of 1.3437 , 4.9694 when
the agent is at an azimuth of 232 degrees on the circle edge. But the rabbit
is out at an azimuth of 210 degrees or so. In other words the rabbit doubled
back while the agent kept going. Before the rabbit doubled back it looks
like a slow outward spiral but I will write a ScratchPlot file later.

Of course this is one systematic method with no answer for what the agent
does when the rabbit is within one unit of shore and near the agent.

Here is the KBH code:

Var
ads, nag, eag, rba, rds, sec, rbn, rbe, nd, ed, dgr, dst: double;
flg: integer;


Procedure D;
Begin
If (flg = 1) Then
Begin
{Procedure E}
rba:= rba + Pi;
Exit;
End;
rba:= rba + (Pi * 2);
{The structure of procedures D, E, & F are from the KBH Survey Progam for
the HP35S}
End;

Procedure F;
Begin
If (flg = 1) Then Exit;
rba:= rba + Pi;
End;

begin
{KBH Code}
flg:= 0;
sec:= 1 / 3600;
rbn:= 10;
rbe:= 10;
rds:= 0;
dgr:= 1;

While (dgr < 233) Do
Begin
ads:= (dgr * Pi) / 180;
nag:= 10 + Cos(ads);
eag:= 10 + Sin(ads);
nd:= rbn - nag;
If (nd = 0) Then nd:= 0.000000000001;
ed:= rbe - eag;
If (ed >= 0) Then flg:= 1;
rba:= ArcTan(ed / nd);
If (rba < 0.000000000001) Then D Else F;
rbn:= rbn + (Cos(rba) * 0.043633231);
rbe:= rbe + (Sin(rba) * 0.043633231);
dst:= Sqrt(Sqr(10 - rbn) + Sqr(10 - rbe));
WriteLn(rbn:15:4, rbe:15:4, dgr:15:4, dst:15:4);
dgr:= dgr + 1;
End;

ReadLn;
end.
 
K

KBH

Okay the circular pond has North and East coordinates at the radius point
of 10 , 10 and the radius is 10 units . The agent is at North and East
coordinates of 20 , 10 and moves clockwise in 1-degree steps. The rabbit
at the center of the pond moves away from the agent at each step on a line
between the agent and the rabbit. And the rabbit moves 1/4 the distance
that the agent moves.

The rabbit gets out at North and East coordinates of 1.3437 , 4.9694 when
the agent is at an azimuth of 232 degrees on the circle edge. But the
rabbit is out at an azimuth of 210 degrees or so. In other words the
rabbit doubled back while the agent kept going. Before the rabbit doubled
back it looks like a slow outward spiral but I will write a ScratchPlot
file later.

Of course this is one systematic method with no answer for what the agent
does when the rabbit is within one unit of shore and near the agent.

Here is the KBH code:

Var
ads, nag, eag, rba, rds, sec, rbn, rbe, nd, ed, dgr, dst: double;
flg: integer;


Procedure D;
Begin
If (flg = 1) Then
Begin
{Procedure E}
rba:= rba + Pi;
Exit;
End;
rba:= rba + (Pi * 2);
{The structure of procedures D, E, & F are from the KBH Survey Progam for
the HP35S}
End;

Procedure F;
Begin
If (flg = 1) Then Exit;
rba:= rba + Pi;
End;

begin
{KBH Code}
flg:= 0;
sec:= 1 / 3600;
rbn:= 10;
rbe:= 10;
rds:= 0;
dgr:= 1;

While (dgr < 233) Do
Begin
ads:= (dgr * Pi) / 180;
nag:= 10 + Cos(ads);
eag:= 10 + Sin(ads);
nd:= rbn - nag;
If (nd = 0) Then nd:= 0.000000000001;
ed:= rbe - eag;
If (ed >= 0) Then flg:= 1;
rba:= ArcTan(ed / nd);
If (rba < 0.000000000001) Then D Else F;
rbn:= rbn + (Cos(rba) * 0.043633231);
rbe:= rbe + (Sin(rba) * 0.043633231);
dst:= Sqrt(Sqr(10 - rbn) + Sqr(10 - rbe));
WriteLn(rbn:15:4, rbe:15:4, dgr:15:4, dst:15:4);
dgr:= dgr + 1;
End;

ReadLn;
end.

Oh...that KBH Code will run in Delphi Console Mode.
 
Top