Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
repository:triathlete_s_dilemma [2021/01/27 00:57] porcaro1 [Activity] |
repository:triathlete_s_dilemma [2021/01/27 18:26] porcaro1 [Activity] |
||
---|---|---|---|
Line 33: | Line 33: | ||
- What happens to the critical shore point if you swim faster? | - What happens to the critical shore point if you swim faster? | ||
- What happens if you change this situation? Suppose it's a sea lion in the water trying to get to the bike! Reverse your original speeds—Make the swim speed 9 m/s and the run speed 2 m/s. What is the new shore point for the fastest travel time now? | - What happens if you change this situation? Suppose it's a sea lion in the water trying to get to the bike! Reverse your original speeds—Make the swim speed 9 m/s and the run speed 2 m/s. What is the new shore point for the fastest travel time now? | ||
- | - Use the accompanying picture to help answer this question. The distance from the shoreline to the swimmer (a) is 65 m. The distance from the shoreline to the bike (b) is 83 m. The sum of (x) and (y) is 135 m. The person can swim at 1.56 m/s and can run at 8.75 m/s. Solve for (x) to produce the shortest time possible to get your starting point in the water to your bike. | + | - Use the accompanying picture below to help answer this question. The distance from the shoreline to the swimmer (a) is 65 m. The distance from the shoreline to the bike (b) is 83 m. The sum of (x) and (y) is 135 m. The person can swim at 1.56 m/s and can run at 8.75 m/s. Solve for (x) to produce the shortest time possible to get your starting point in the water to your bike. |
+ | |||
+ | {{ :repository:triathletemod.png?nolink&600 |}} | ||
===Code=== | ===Code=== | ||
Line 63: | Line 65: | ||
#this draws a line from start to shore point and from shore point to end | #this draws a line from start to shore point and from shore point to end | ||
- | shorepoint = 0 | + | target = 0 |
- | swimroute = cylinder(pos=vec(start.pos.x,start.pos.y,1), axis=vector(shorepoint-start.pos.x,0-start.pos.y,1), radius=1, color=color.green) | + | swimroute = cylinder(pos=vec(start.pos.x,start.pos.y,1), axis=vector(target-start.pos.x,0-start.pos.y,1), radius=1, color=color.green) |
- | runroute = cylinder(pos=vec(end.pos.x,end.pos.y,1), axis=vec(shorepoint-end.pos.x,0-end.pos.y,1), radius=1, color=color.red) | + | runroute = cylinder(pos=vec(end.pos.x,end.pos.y,1), axis=vec(target-end.pos.x,0-end.pos.y,1), radius=1, color=color.red) |
##graph total time vs shore point position | ##graph total time vs shore point position | ||
Line 71: | Line 73: | ||
TimeOpt = gcurve(color=color.red, label='Optimal Path') | TimeOpt = gcurve(color=color.red, label='Optimal Path') | ||
- | while shorepoint<0: | + | while target<0: |
rate(120) | rate(120) | ||
swimtime = | swimtime = | ||
runtime = | runtime = | ||
totaltime = swimtime+runtime | totaltime = swimtime+runtime | ||
- | swimroute.axis = vec(shorepoint-start.pos.x,0-start.pos.y,1) | + | swimroute.axis = vec(target-start.pos.x,0-start.pos.y,1) |
- | runroute.axis = vec(shorepoint-end.pos.x,0-end.pos.y,1) | + | runroute.axis = vec(target-end.pos.x,0-end.pos.y,1) |
TimeOpt.plot(target,totaltime) | TimeOpt.plot(target,totaltime) | ||
target = target + dt </code> | target = target + dt </code> | ||
Line 83: | Line 85: | ||
====Answer Key==== | ====Answer Key==== | ||
===Handout=== | ===Handout=== | ||
+ | Our first modifications to the code are defining the variables "target" (line 22), and "final" (line 24). This represents at which x-coordinate you reach the shore and the x-coordinate of the bike rack, respectively. We add the variable "dt" (line 23) which is a miniscule increment in time, and used later in our while loop. We then create equations for the "swimtime" and "runtime" variables (lines 25 & 26); these equations are just a rearranged form of the Pythagorean Theorem solved for the length of the hypotenuse and divided by the swim speed and run speed variables—remember that distance divided by speed is time. Finally, the limits of the while loop are defined (line 35) and the swim time and run time equations are reentered (lines 37 & 38). Looking at the output graph, the optimal x-coordinate along the shore line is equal to -24.5. | ||
+ | |||
+ | Extension Solutions: | ||
+ | - In order to increase the precision of your answer, you can decrease the size of the "dt" variable. The smaller this variable, the more points along the graph the program will plot, and thus the more precise you can be with your answer. An exact answer, however, requires calculus to solve. | ||
+ | - The faster the swim speed, the further in the positive x-direction your critical shore point will be | ||
+ | - For the theoretical sea lion situation where the speeds are flipped, the new shore point is the x-coordinate equal to 91.0, with a total travel time of 45.97 seconds. You can find this by simply modifying lines 18 and 19. | ||
+ | - To solve this question graphically, you simply have to modify the "start" and "end" variables (lines 12 & 13) to match the new distances provided in the problem statement. As well, you have to adjust the "swimv" and "runv" variables to the new given speeds. Depending on how small you make your "dt" variable, the optimal shore critical point (x) approaches 9.77 meters. | ||
+ | |||
===Code=== | ===Code=== | ||
<code Python [enable_line_numbers="true", highlight_lines_extra=""]> | <code Python [enable_line_numbers="true", highlight_lines_extra=""]> | ||
GlowScript 2.8 VPython | GlowScript 2.8 VPython | ||
+ | #scene attributes | ||
scene.width = 750 | scene.width = 750 | ||
scene.height = 568 | scene.height = 568 | ||
Line 101: | Line 112: | ||
#Initial swim speed and run speed | #Initial swim speed and run speed | ||
- | target = -50 | ||
- | dt = 0.5 | ||
- | final = 100 | ||
swimv = 2 | swimv = 2 | ||
runv = 9 | runv = 9 | ||
#Calculations to determine the amount of time for swim and amount of time for run--think distance/speed... | #Calculations to determine the amount of time for swim and amount of time for run--think distance/speed... | ||
+ | target = -50 | ||
+ | dt = 0.5 | ||
+ | final = 100 | ||
swimtime = sqrt(start.pos.y**2 + (target-start.pos.x)**2)/swimv | swimtime = sqrt(start.pos.y**2 + (target-start.pos.x)**2)/swimv | ||
runtime = sqrt(end.pos.y**2 + (end.pos.x-target)**2)/runv | runtime = sqrt(end.pos.y**2 + (end.pos.x-target)**2)/runv |