Match Functions with their Derivatives by cemccourseware

Match Functions with their Derivatives by cemccourseware
Loading the math board and drawing, please wait…
2019-07-06 08:03
This example demonstrates how to match common functions with their derivative graphs. Key math concepts include the geometric meaning of derivatives and the monotonicity of functions. Construction highlights the use of GeoGebra commands and objects like Random, Flatten, Zip, Shuffle, Polygon, Join, If, LaTeX, Translate, UnicodeToLetter, Sequence to randomly generate function-derivative pairs and visually present the matching process. Suitable for high school and introductory college calculus students learning function analysis.

GeoGebra Commands & Parameters

  1. Random(-4, 4) → a2
  2. Random(a2 + 1, a2 + 4) → a3
  3. Random(-8, -2) → c2
  4. Random(c2 + 1, c2 + 3) → c3
  5. Random(c3 + 1, c3 + 3) → c4
  6. Random(c4 + 1, c4 + 3) → c5
  7. Random(-8, 0) → b2
  8. Random(b2 + 1, b2 + 4) → b3
  9. Random(b3 + 1, b3 + 4) → b4
  10. Flatten(Sequence[Sequence[(i, j), i, -15, -15 + (2 * 25), 25], j, 10, 10 - 26, -26]) → transVectors
  11. Zip(Derivative[A], A, allFuncs) → allDiffs
  12. Zip({Root[A]}, A, allDiffs) → allDerivativeRoots
  13. Shuffle({1, 2, 3}) → questionOrder, {3, 1, 2}
  14. Polygon((-11, -11), (-11, 11), (11, 11), (11, -11)) → polygonTemplate, f, g, h, i
  15. Shuffle({-1, 2, -2, 1}) → aVals, {2, 1, -2, -1}
  16. Shuffle({2, 3, 4, 5, 6, -2, -3, -4, -5, -6}) → hVals, {-2, -4, 5, 6, -5, 4, 2, 3, -3, -6}
  17. Shuffle({2, 3, 4, 5, 6, -2, -3, -4, -5, -6}) → kVals, {3, 4, -5, 2, 5, -6, -4, 6, -3, -2}
  18. Join({allFuncs, allDiffs}) → allDisplayFuncs
  19. Random(1, 4) → caseNum
  20. Join({Zip[Element[transVectors, A], A, questionOrder], Zip[Element[transVectors, B], B, matchOrder]}) → displayOrder
  21. If(Random[0, 1] ≟ 1, 1, -1) → a
  22. If(Random[0, 1] ≟ 1, 1, -1) → b
  23. LaTeX((((("\text{\textbf{Question: }" * QUESTION) * "\\\textbf{Instructions: }") * INSTRUCTIONS) * "}")) → allInstruc
  24. Translate(polygonTemplate, Vector[Element[displayOrder, 1]]) → graph1
  25. Translate(polygonTemplate, Vector[Element[displayOrder, 2]]) → graph2
  26. Translate(polygonTemplate, Vector[Element[displayOrder, 3]]) → graph3
  27. Translate(polygonTemplate, Vector[Element[displayOrder, 4]]) → graph4
  28. UnicodeToLetter(10003) → cmark
  29. UnicodeToLetter(10007) → xmark
  30. Translate(polygonTemplate, Vector[Element[displayOrder, 5]]) → graph5
  31. Translate(polygonTemplate, Vector[Element[displayOrder, 6]]) → graph6
  32. Shuffle({-2, -3, -4, -6}) → r1Vals, {-2, -6, -3, -4}
  33. Shuffle({1, 2, 3, 4, 5, 6}) → r2Vals, {3, 4, 5, 2, 1, 6}
  34. Zip(Sort[{Intersect[A, polygonTemplate]}], A, allDisplayFuncs) → endPoints
  35. Zip(Translate[If[x > x(Element[B, 1]) ∧ x < x(Element[B, 2]), C(x)], Vector[D]], B, endPoints, C, allDisplayFuncs, D, displayOrder) → funcSegments
  36. Translate(polygonTemplate, Vector[Element[displayOrder, graphChosen]]) → highlightQuestion
  37. Polygon({(-11, -34), (-11, 11), (11, 11), (11, -34)}) → matchBoxTemplate
  38. Translate(matchBoxTemplate, Element[transVectors, 1]) → match1
  39. Translate(matchBoxTemplate, Element[transVectors, 2]) → match2
  40. Translate(matchBoxTemplate, Element[transVectors, 3]) → match3
  41. Sequence(i + 3 ≟ Element[matches, i], i, 1, 3) → correctMatches
  42. Translate(polygonTemplate, Element[displayOrder, 1]) → q1Box
  43. Translate(polygonTemplate, Element[displayOrder, 2]) → q2Box
  44. Translate(polygonTemplate, Element[displayOrder, 3]) → q3Box
  45. Translate(polygonTemplate, Element[displayOrder, Element[matches, 3]]) → q3MatchingBox
  46. Translate(polygonTemplate, Element[displayOrder, Element[matches, 2]]) → q2MatchingBox
  47. Translate(polygonTemplate, Element[displayOrder, Element[matches, 1]]) → q1MatchingBox
  48. Random(c2 + 1, c2 + 4) → d2
  49. Zip(Translate[Join[{Zip[Segment[(A, -0.3), (A, 0.3)], A, {-10, -5, 5, 10}], Zip[Segment[(0.3, B), (-0.3, B)], B, {10, 5, -5, -10}]}], C], C, transVectors) → axisTicks
  50. Zip(Translate[{Segment[(-11, 0), (11, 0)], Segment[(0, -11), (0, 11)]}, A], A, transVectors) → axis
  51. Zip(Translate[Sequence[Segment[(-11, i), (11, i)], i, -10, 10], Vector[A]], A, transVectors) → allHorizGrids
  52. Zip(Translate[Sequence[Segment[(i, -11), (i, 11)], i, -10, 10], Vector[A]], A, transVectors) → allVertGrids
  53. Zip(Zip[Text[A, B + V, true, true], A, {"-10", "-5", "5", "10", "x"}, B, {(-13, -0.5), (-7, -0.5), (4.5, -0.5), (9, -0.5), (11, 1)}], V, transVectors) → allTxtX
  54. Zip(Zip[Text[A, B + V, true, true], A, {"-10", "-5", "5", "10", "y"}, B, {(-4, -9), (-3, -4), (-2, 6), (-3, 11), (0, 12)}], V, transVectors) → allTxtY
  55. Zip(Translate[Zip[Rotate[{Segment[(11, 0), (10.5, 0.5)], Segment[(11, 0), (10.5, -0.5)]}, A, (0, 0)], A, {0, 90°, 180°, 270°}], B], B, transVectors) → axisArrows
  56. Zip(Text[A, (1.5, 14.5) + V, true, true], A, graphTitles, V, transVectors) → allTitles
  57. LaTeX(("\text{\textbf{Feedback: } (A checkmark in a column indicates a correct match.)\\" * If[IndexOf[fbIndx, questionOrder] ≟ 1, fbfunc1, If[IndexOf[fbIndx, questionOrder] ≟ 2, fbFunc2, fbFunc3]])) → fbDisplay
  58. Zip(Text[If[A, ("" * cmark)], V + (7.5, 14.5), true, true], A, correctMatches, V, displayOrder) → checkMarks
  59. Zip(Text[If[A, "", ("" * xmark)], V + (7.5, 14.5), true, true], A, correctMatches, V, displayOrder) → xMarks