In the problem, we want to find the best angle (θ) for Tarzan to let go of the rope in order to get the maximum range. What makes this tricky is that the later he lets go of the rope, the better the launch angle. However, the later he lets go he will also have a lower launch speed. Yes, this Tarzan swinging problem is cool. Here I am going to show you how to solve this problem numerically. Why? Why not.
From a numerical calculation, the interesting part is all the starting parameters - like length of the rope, starting rope angle and height of the rope above the ground.
Numerical Recipe
In order to numerically model this problem, we have to first break it into two parts. For part I, it will consist of Tarzan swinging on the rope. This is the tough part of the motion since it falls under "constrained motion." Nonetheless, it can be modeled. At the end of the swing, we just need the final velocity vector and the height above the ground (oh, and how far horizontally it has already moved). This moves us into part II. Here you just have plain old projectile motion. Of course, I am going to assume that the air resistance is negligible.
Part I: The Swing
During the swing, the problem with just looking at forces comes with the magnitude of the tension in the rope. This is a problem because the rope will exert whatever force it needs to in order to keep the Tarzan guy at the same distance from the tree. You can't just say "T = blah blah blah."
Instead of using the tension and gravitational force to determine the acceleration (and thus the motion), I will use the energy. Let me start with a diagram.
I can look at this in terms of energy. If I consider the system consisting of both Tarzan and the Earth, then there are no external forces that could do work on this system. This means that the total energy consisting of the kinetic energy and the gravitational potential energy is constant.
I can write this as:
For the gravitational potential energy, it doesn't really matter where you measure this y value from - the only thing that does matter is the change in gravitational potential. If I start with an energy at the highest point of mgh, then at any other point I can write (oh, both y and h would be negative in this case - that's ok):
This is nice, but what I really want is the velocity as a function of swing angle. If I use the same starting angle as the original diagram - α then I write h in terms of α and y in terms of θ. Of course, to do this I will need the length of the string. Even though the article calls this r, I am going with L because I like that better.
Just a quick check. If Tarzan is at the bottom of the circle, he should be at the fastest speed. This would correspond to a θ angle of 0°. The cosine of 0° is 1, so this would give the maximum value for the velocity. It's nice to check things like this to make sure you haven't made some crazy wrong turn (but that does happen from time to time).
But this method just gives me the speed. What about the angle that goes along with this velocity? Let me draw another picture.
If you play around with the geometry a bit, you can convince yourself that the angle for Tarzan's velocity is the same θ above the horizon as the θ angle of the rope. OK - now we mostly finished with swinging part. Let's just plot the magnitude of the velocity as a function of swing angle.
Since I already had a function stating the velocity for each angle, I really didn't need to do a numerical calculation. Of course, there are two other things I need, the x- and y-position of Tarzan at the end of the swing. Using most of the symbols from the original article, here is a diagram showing that position.
I decided to stick with the tree limb (or whatever the rope is attached to) as being the origin. This means that the y-value of the ground will be -(L+h) where h is the height above the ground at the lowest point. I am calling the x- and y-position of the release point xs and ys. You can see from the diagram that they would have values of:
OK, let me show my python code for this part of the calculation.
Let me point out a few things here.
- The letgo is a function that does all the swinging calculations. It takes an input of the initial angle, the length of the string and the final angle.
- To make the graph that I showed above, I need a whole bunch of angle values. This what the "arange" function does.
- I think it is technically OK, but I am always cautious of using the same variable names in and out of the function. That is why I have the function take the variable "alpha" and then use "alph" later.
- For the graph, I wanted to make the horizontal value in degrees, not radians.
- The letgo function returns three things. I just needed the first thing. So, I can reference letgo[0].
- The function doesn't give the swing launch angle since that is the same value as the release angle.
That's it for the swing. Now, to the projectile motion part.
Part II: Projectile Motion
From the previous part, I know where the object (Tarzan is the object) starts and what his velocity is. I also know where he will end this motion - at y = -(L + h). I could use the typical projectile motion equations to exactly solve for where he lands, but I won't. Instead, I will do this numerically. Let me just write this part of the program and then explain it.
Clearly, I just made a function that calculates plain projectile motion. You input the starting position and velocity and it gives you the final position. The L and the h are just used to calculate the location of the "ground". Notice that I cheated a little bit. For the motion in the y-direction I just calculated the new y-position based on a constant y-velocity during that small time step. This works well enough to not fret about it too much. Then I just calculate the new velocity and start over until the object gets to the ground.
Putting It Together
Now, it is mostly a simple process of using the letgo function with the projectile function. The basic idea is to use the ending values for letgo and feed them into projectile. Instead of going over all the details, here is some data. This is a plot of the final position of Tarzan on the ground for a variety of release angles. For each data point, the starting angle was 45° with a rope length of 5 meters and minimum height above the ground of 3 meters.
From this, the best angle would be 25°.
But what if I change some other parameters? What then? Here is the same calculation except for different starting angle values. I think the graph pretty much explains itself.
As you can see, if Tarzan starts at 90° he will have a maximum range if he lets go around 35°. This is different than the maximum angle for a start angle of 45°. Starting angle matters.
Let me make a plot of "best release" angle as a function of starting angle. Again, this assumes the length of the rope and the height above the ground are the same as before.
Why is this so jagged? Well, you have to think about what is going on here. I am changing the starting angle, and for each of these starts I am going to through a list of release angles and calculating the distance traveled. If this is the greatest distance, I save that value. Since I am dealing with a calculation using discrete values (repeatedly), it is possible that one result is closer to the "truth" than the next value. This is why the curve is so bumpy. I could fix this by making all of my "steps" smaller - but that would make the program take longer to run.
The other thing to point out is that this plot agrees with the previous plot. If you look at the graph with 4 curves on it, the 30° starting angle has a max distance with a release around 17°. This is the same thing the second graph says. It's good that they agree.
OK. One more crazy thing. Let me change L and h. For everything I have done so far, L = 5 m and h = 3 meters. Let me keep the height of the rotation point for the rope constant. This means that L + h = 8 m. Now, I can repeat the above plot for different values of L and h. Let me note that I am going to make the calculation steps a little bigger to increase the run speed.
This is something Tarzan could print out and keep with him for handy swinging-jumping reference. How do you use it? Well, let's say your tree limb is 8 meters above the ground (you can normalize to this I am pretty sure - more in a bit) and your rope is 4 meters long. This means you will be looking at the green line on the above plot. Now you need to know your starting angle. Let me just pick 50°. Starting on the 50° line on the horizontal axis and going up to the green line, I get a release value of around 24°. Simple. So simple Tarzan could do it.
P.S. I spent way too much time on this problem. Also, I did this whole thing backwards. I worked on the problem and THEN looked at the original paper:
It appears the author has some very similar plots to mine. Well, it was still fun to work on this anyway.