Approximate Rover Distance

Approximate Rover Distance
Loading the math board and drawing, please wait…
2015-01-15 02:26
This example demonstrates how to approximate the distance traveled by a rover moving with increasing velocity using definite integrals in calculus. It involves core math concepts like definite integrals, velocity changes, and distance relationships. The construction utilizes GeoGebra commands and objects such as Append, Segment, Point, Polygon, Sequence, Element, LowerSum, Integral, UpperSum, If, Text, Midpoint, Semicircle, VerticalText, and Line. Suitable for high school and above, it helps students understand the application of definite integrals in physics for approximating distance, and the relationship between velocity-time graphs and distance traveled.

GeoGebra Commands & Parameters

  1. Append(0, Sequence[(v((k * Δt)) * Δt), k, 0, n]) → changeindisests
  2. Segment((0, 0), (3, 0)) → timeline
  3. Point(timeline) → A
  4. Segment((0, 0), (1.6, 0)) → positionline
  5. Point({Integral[v, 0, x(A)], 0}) → B
  6. Polygon((x(B), 0.01), (x(B) - 0.05, 0.01), (x(B) - 0.05, 0.05), (x(B), 0.05)) → rover, rover_1, rover_2, rover_3, rover_4
  7. Segment((0, 0), (0, -0.01)) → startline
  8. Sequence(Integral[v, 0, k], k, 0, 3, Δt) → positions
  9. Sequence(Point[{Element[positions, k], 0}], k, 1, (3 / 2 * n) + 1) → positionpoints
  10. Element(positions, n + 1) → totaldistance
  11. LowerSum(v, 0, a, n) → overerrorsum
  12. Integral(v, 0, a) → whiteerrorintegral
  13. Polygon(A, ((ncounter * Δt), 0), ((ncounter * Δt), overvelocity), (t, overvelocity)) → lastoverrect, lastoverrect_1, lastoverrect_2, lastoverrect_3, lastoverrect_4
  14. Polygon(A, ((ncounter * Δt), 0), ((ncounter * Δt), v((ncounter * Δt))), (t, v((ncounter * Δt)))) → lastunderrect, lastunderrect_1, lastunderrect_2, lastunderrect_3, lastunderrect_4
  15. UpperSum(v, 0, (ncounter * Δt), ncounter) → partialover
  16. LowerSum(v, 0, (ncounter * Δt), ncounter) → partialunder
  17. If(t < Δt, (v(0) * t), partialunder + lastunderrect) → totalunderdistance
  18. Point({totalunderdistance, 0.2}) → E
  19. If(t < Δt, (t * v(Δt)), partialover + lastoverrect) → totaloverdistance
  20. Point({totaloverdistance, -0.2}) → F
  21. Polygon((x(E), 0.17), (x(E) - 0.05, 0.17), (x(E) - 0.05, 0.21), (x(E), 0.21)) → underrover, underrover_1, underrover_2, underrover_3, underrover_4
  22. Polygon((x(F), (-0.15)), (x(F) - 0.05, (-0.15)), (x(F) - 0.05, (-0.11)), (x(F), (-0.11))) → overrover, overrover_1, overrover_2, overrover_3, overrover_4
  23. Sequence(Sum[Sequence[Element[changeindisests, j], j, 1, k]], k, 1, n + 1) → underpositions
  24. Append(0, Sequence[Sum[Sequence[(v((j * Δt)) * Δt), j, 1, k]], k, 1, n]) → overpositions
  25. Sequence(Point[{((k - 1) * Δt) - (1 / 2 * Δt), Element[changeindisests, k]}], k, 2, ncounter + 1) → areadispts
  26. Sequence(Segment[(Element[underpositions, k] - Element[underpositions, 1], 0.14), (Element[underpositions, k + 1] - Element[underpositions, 1], 0.14)], k, 1, ncounter) → underdislines
  27. Sequence(Segment[(Element[overpositions, k] - Element[overpositions, 1], (-0.18)), (Element[overpositions, k + 1] - Element[overpositions, 1], (-0.18))], k, 1, ncounter) → overdislines
  28. Sequence(Midpoint[Element[underdislines, k]], k, 1, ncounter) → undermidpts
  29. Sequence(Midpoint[Element[overdislines, k]], k, 1, ncounter) → overmidpts
  30. Sequence(Text[Element[changeindisests, k], (x(Element[undermidpts, k - 1]) - 0.025, y(Element[undermidpts, k - 1]) - 0.03)], k, 2, ncounter + 1) → underdistext
  31. Sequence(Text[Element[changeindisests, k], (x(Element[overmidpts, k - 2]) - 0.025, y(Element[overmidpts, k - 2]) - 0.03)], k, 3, ncounter + 2) → overdistext
  32. Point({((ncounter * Δt) + x(A)) / 2, (1 / 2 * undervelocity)}) → lastareadispt
  33. Text(lastoverrect, (x(lastareadispt) - 0.06, y(lastareadispt))) → lastoverrecttext
  34. Text(lastunderrect, (x(lastareadispt) - 0.06, y(lastareadispt) - 0.05)) → lastunderrecttext
  35. Sequence(Segment[(Element[positions, k - 1], (-0.04)), (Element[positions, k], (-0.04))], k, 2, ncounter + 1) → distancelines
  36. Sequence(Segment[(Element[positions, k], 0.01), (Element[positions, k], (-0.07))], k, 1, ncounter + 1) → distancesegments
  37. Segment((Element[underpositions, ncounter + 1], 0.14), (totalunderdistance, 0.14)) → underendseg
  38. Segment((Element[overpositions, ncounter + 1], (-0.18)), (totaloverdistance, (-0.18))) → overendseg
  39. Midpoint(underendseg) → Midunderseg
  40. Midpoint(overendseg) → Midoverendseg
  41. Text(lastoverrect, (x(Midoverendseg) - 0.03, y(Midoverendseg) - 0.03)) → overendtext
  42. Text(lastunderrect, (x(Midunderseg) - 0.03, y(Midunderseg) - 0.03)) → underendtext
  43. Semicircle((x(B) - 0.06, 0.08), (x(B) - 0.08, 0.06)) → rover_6
  44. Segment((x(B) - 0.05, 0.05), (x(B) - 0.08, 0.08)) → rover_5
  45. Sequence(Polygon[(Element[positions, k], 0.01), (Element[positions, k] - 0.05, 0.01), (Element[positions, k] - 0.05, 0.05), (Element[positions, k], 0.05)], k, 1, ncounter + 1) → rovershawdows
  46. Sequence(Segment[(Element[positions, k] - 0.05, 0.05), (Element[positions, k] - 0.08, 0.08)], k, 1, ncounter + 1) → rovershawdowsline
  47. Sequence(Semicircle[(Element[positions, k] - 0.06, 0.08), (Element[positions, k] - 0.08, 0.06)], k, 1, ncounter + 1) → roverdishes
  48. Sequence({Point[{Element[positions, k] - 0.04, 0.01}], Point[{Element[positions, k] - 0.015, 0.01}]}, k, 1, ncounter + 1) → rovershadowwheels
  49. Semicircle((x(F) - 0.06, (-0.08)), (x(F) - 0.08, (-0.1))) → overrover_6
  50. Segment((x(F) - 0.05, (-0.11)), (x(F) - 0.08, (-0.08))) → overrover_5
  51. Segment((-10, -0.1575), (10, -0.1575)) → overroad
  52. Sequence(Segment[(Element[overpositions, k], (-0.22)), (Element[overpositions, k], (-0.15))], k, 1, ncounter + 1) → overdissegs
  53. Segment((-10, 0.16), (10, 0.16)) → underroad
  54. Sequence(Segment[(Element[underpositions, k], 0.17), (Element[underpositions, k], 0.1)], k, 1, ncounter + 1) → underdissegs
  55. Segment((x(E) - 0.05, 0.21), (x(E) - 0.08, 0.24)) → underrover_5
  56. Semicircle((x(E) - 0.06, 0.24), (x(E) - 0.08, 0.22)) → underrover_6
  57. UpperSum(v, 0, (ncounter * Δt), ncounter) → errorover
  58. Integral(v, 0, t) → errorintegral
  59. LowerSum(v, 0, (ncounter * Δt), ncounter) → underwhiteregion
  60. Polygon(A, ((ncounter * Δt), 0), ((ncounter * Δt), v((ncounter * Δt))), (t, v((ncounter * Δt)))) → lastunderrectwhite, lastunderrectw_1, lastunderrectw_2, lastunderrectw_3, lastunderrectw_4
  61. Polygon(A, ((ncounter * Δt), 0), ((ncounter * Δt), overvelocity), (t, overvelocity)) → lastoverrecterror, lastoverrecterror_1, lastoverrecterror_2, lastoverrecterror_3, lastoverrecterror_4
  62. Segment((-0.14, 0.33), (0.26, 0.33)) → timeline_2
  63. Point(timeline_2) → timept
  64. Segment((x(B), 0.17), (x(B), 0)) → undereseg
  65. Segment((totaloverdistance, 0.01), (totaloverdistance, (-0.18))) → overeseg
  66. Sequence(Text[Element[changeindisests, k], (x(Element[areadispts, k - 1]) - 0.075, y(Element[areadispts, k - 1]) - 0.04)], k, 2, ncounter + 1) → undertext
  67. Sequence(Text[Element[changeindisests, k], (x(Element[areadispts, k - 2]) - 0.075, y(Element[areadispts, k - 2] + 0.02))], k, 3, ncounter + 2) → overtext
  68. Sequence(v((k * Δt)), k, 0, ncounter) → velocities
  69. Sequence(Segment[(0, Element[velocities, k + 1]), ((k * Δt), Element[velocities, k + 1])], k, 1, ncounter) → overvelocitylines
  70. Sequence(Segment[(0, Element[velocities, k]), (((k - 1) * Δt), Element[velocities, k])], k, 1, ncounter) → undervelocitylines
  71. Sequence(Text[Element[velocities, k], ((-0.15), Element[velocities, k] - 0.02)], k, 1, ncounter) → velocitiesundertext
  72. Sequence(Text[Element[velocities, k], ((-0.15), Element[velocities, k] - 0.02)], k, 2, ncounter + 1) → velocitiesovertext
  73. UpperSum(v, 0, (ncounter * Δt), ncounter) → ebgraph
  74. Polygon((t, undervelocity), ((ncounter * Δt), undervelocity), ((ncounter * Δt), overvelocity), (t, overvelocity)) → lastebrect, lastebrect_1, lastebrect_2, lastebrect_3, lastebrect_4
  75. Segment((totaloverdistance, (-0.04)), (x(B), (-0.04))) → overeline
  76. Segment((totalunderdistance, 0.14), (x(B), 0.14)) → undereline
  77. Segment((totalunderdistance, 0.17), (totalunderdistance, 0.075)) → ebunderseg
  78. Segment((totalunderdistance, 0.1), (totaloverdistance, 0.1)) → ebline
  79. Sequence(Text[Element[velocities, k], (Element[positions, k] - 0.04, 0.02)], k, 2, ncounter + 1) → velocitiesovertext_2
  80. Sequence(Text[Element[velocities, k], (Element[positions, k] - 0.04, 0.02)], k, 1, ncounter) → velocitiesundertext_2
  81. Sequence(Segment[(((k * 0.4 / 2) * Δt) - 0.14, 0.35), (((k * 0.4 / 2) * Δt) - 0.14, 0.31)], k, 0, n) → list1
  82. Segment((-0.14, 0.33), timept) → timeline_3
  83. Segment((totalunderdistance, 0.17), (totalunderdistance, 0.1)) → underdislastseg
  84. Segment((totaloverdistance, (-0.22)), (totaloverdistance, (-0.15))) → overdislastseg
  85. VerticalText("velocity in miles per hour") → text26
  86. Segment((totaloverdistance, (-0.18)), (totaloverdistance, 0.13)) → eboverseg
  87. Segment((x(B), 0.01), (x(B), (-0.07))) → overeroverseg
  88. Segment(A, (t, v(t))) → graphvelocityline_1
  89. Segment((t, v(t)), (0, v(t))) → graphvelocityline_2
  90. Text(v(t), ((-0.15), v(t) - 0.015)) → velocitytext
  91. Line(C, D) → b