Match Functions with Their Derivatives

Match Functions with Their Derivatives
Loading the math board and drawing, please wait…
2019-07-09 02:08
This example demonstrates how to match a function graph with its derivative graph. The core math concepts involved include functions, derivatives, and graph recognition. Key GeoGebra commands/objects used in the construction include Zip, Random, Flatten, NumberListToLatex, Shuffle, Polygon, Join, If, LaTeX, Translate, UnicodeToLetter, Sequence, Element, Derivative, and Intersect. It is suitable for high school students learning calculus to understand the relationship between functions and their derivatives.

GeoGebra Commands & Parameters

  1. Zip(Rotate[{Segment[(11, 0), (10.5, 0.5)], Segment[(11, 0), (10.5, -0.5)]}, A, (0, 0)], A, {0, 90°, 180°, 270°}) → TemplateAxisArrows
  2. Random(-5, 5) → t3var2
  3. Random(3, 10) → t3var1
  4. Flatten({Zip[x(A), A, {Intersect[t3Derivative1, 0, -10, t3var2]}], Zip[x(A), A, {Intersect[t3Derivative2, 0, t3var2Negative, 10]}]}) → t3zeros
  5. Random(-9, -5) → t22y1
  6. Random(t22y1 + 2, t22y1 + 5) → t22y3
  7. Random(t22y3 + 1, 9) → t22y4
  8. Random(t22y3 + 2, t22y3 + 4) → t22y2
  9. Random(t22x1 + 2, t22x1 + 5) → t22x2
  10. Random(t22x2 + 2, Min[8, 8 - t22x2]) → t22x3
  11. Random(-4, 4) → a2
  12. Zip(Derivative[A], A, t2Funcs) → t2Derivatives
  13. Zip(round(x(A), 1), A, {Intersect[Element[t2Derivatives, 1], 0, -11, 11]}) → t21zeros
  14. NumberListToLatex(t21zeros) → t21zerosTXT
  15. Random(1, 2) → t2Indx
  16. Random(a2 + 1, a2 + 4) → a3
  17. Random(-8, -2) → c2
  18. Random(c2 + 1, c2 + 3) → c3
  19. Random(c3 + 1, c3 + 3) → c4
  20. Random(c4 + 1, c4 + 3) → c5
  21. Random(-8, 0) → b2
  22. Random(b2 + 1, b2 + 4) → b3
  23. Random(b3 + 1, b3 + 4) → b4
  24. Shuffle({1, 2, 3}) → questionOrder
  25. Flatten(Sequence[Sequence[(i, j), i, -15, -15 + (2 * 24), 24], j, 10, 10 - 26, -26]) → transVectors
  26. Polygon({(-11, -11), (-11, 11), (11, 11), (11, -11)}) → polygonTemplate
  27. Shuffle({-1, 2, -2, 1}) → t1aVals
  28. Shuffle({2, 3, 4, 5, 6, -2, -3, -4, -5, -6}) → t1hVals
  29. Shuffle({2, 3, 4, 5, 6, -2, -3, -4, -5, -6}) → t1kVals
  30. Random(1, 4) → caseNum
  31. Join({Zip[Element[transVectors, A], A, questionOrder], Zip[Element[transVectors, B], B, matchOrder]}) → displayOrder
  32. If(Random[0, 1] ≟ 1, 1, -1) → a
  33. If(Random[0, 1] ≟ 1, 1, -1) → b
  34. LaTeX((((("\text{\textbf{Question: }" * QUESTION) * "\\\textbf{Instructions: }") * INSTRUCTIONS) * "}")) → allInstruc
  35. Translate(polygonTemplate, Vector[Element[displayOrder, 1]]) → graph1
  36. Translate(polygonTemplate, Vector[Element[displayOrder, 2]]) → graph2
  37. Translate(polygonTemplate, Vector[Element[displayOrder, 3]]) → graph3
  38. Translate(polygonTemplate, Vector[Element[displayOrder, 4]]) → graph4
  39. UnicodeToLetter(10003) → cmark
  40. UnicodeToLetter(10007) → xmark
  41. Translate(polygonTemplate, Vector[Element[displayOrder, 5]]) → graph5
  42. Translate(polygonTemplate, Vector[Element[displayOrder, 6]]) → graph6
  43. Shuffle({-2, -3, -4, -6}) → r1Vals
  44. Join({Sequence[Segment[(-11, i), (11, i)], i, -10, 10], Sequence[Segment[(i, -11), (i, 11)], i, -10, 10]}) → TemplateGrid
  45. Shuffle({1, 2, 3, 4, 5, 6}) → r2Vals
  46. Translate(polygonTemplate, Vector[Element[displayOrder, graphChosen]]) → highlightQuestion
  47. Sequence(i + 3 ≟ Element[matches, i], i, 1, 3) → correctMatches
  48. Translate(polygonTemplate, Element[displayOrder, 1]) → q1Box
  49. Translate(polygonTemplate, Element[displayOrder, 2]) → q2Box
  50. Translate(polygonTemplate, Element[displayOrder, 3]) → q3Box
  51. Translate(polygonTemplate, Element[displayOrder, Element[matches, 3]]) → q3MatchingBox
  52. Translate(polygonTemplate, Element[displayOrder, Element[matches, 2]]) → q2MatchingBox
  53. Translate(polygonTemplate, Element[displayOrder, Element[matches, 1]]) → q1MatchingBox
  54. Random(c2 + 1, c2 + 4) → d2
  55. Random(1, 3) → t1Indx
  56. Element(t2Funcs, t2Indx) → t2Func
  57. Derivative(t2Func) → t2Derivative
  58. Intersect(t3Base, (t3multiplier * 11), t3var2 + 0.1, 11) → t3RightBoundary
  59. Zip(Derivative[A], A, t1Funcs) → t1Derivatives
  60. Join({t1Funcs, t1Derivatives}) → t1AllFuncs
  61. Zip(Sort[{Intersect[A, polygonTemplate]}], A, t1AllFuncs) → t1endPoints
  62. Zip(If[x > x(Element[B, 1]) ∧ x < x(Element[B, 2]), C(x)], B, t1endPoints, C, t1AllFuncs) → t1FuncsRestricted
  63. Element(t1FuncsRestricted, t1Indx) → t1Func
  64. Element(t1FuncsRestricted, t1Indx + 3) → t1Derivative
  65. Random(1, 2) → t3Indx
  66. If(t3Indx ≟ 1, t3Restricted1, t3Restricted2) → t3Func
  67. If(t3Indx ≟ 1, t3Derivative1, t3Derivative2) → t3Derivative
  68. Zip(Translate[A, Vector[D]], A, {t1Func, t2Func, t3Func}, D, displayOrder) → funcSegmentsRow1
  69. Zip(Translate[A, Vector[D]], A, {t1Derivative, t2Derivative, t3Derivative}, D, Take[displayOrder, 4]) → funcSegmentsRow2
  70. Zip(Translate[TemplateGrid, Vector[A]], A, Take[transVectors, 1, 3]) → allGridsRow1
  71. Zip({Roots[A, -10, 10]}, A, t1Derivatives) → t1zeros
  72. LaTeX(If[Length[t21zeros] > 0 ∧ Defined[Element[t21zeros, 1]], fbt21WithZeros, fbt21NoZeros]) → fbt21
  73. If(t1Indx ≟ 1, fbt11, If[t1Indx ≟ 2, fbt12, fbt13]) → fbt1
  74. If(t2Indx ≟ 1, fbt21, fbt22) → fbt2
  75. If(t3Indx ≟ 1, fbt31, fbt32) → fbt3
  76. Translate(Flatten[Zip[{(x(A), Slope[Line[A, B]]), (x(B), Slope[Line[A, B]])}, A, t22Points, B, Take[t22Points, 2]]], Element[displayOrder, 5]) → t22DerivativeEndPoints
  77. Join({TemplateAxisArrows, {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}], {Segment[(-11, 0), (11, 0)], Segment[(0, -11), (0, 11)]}}}) → TemplateAxis
  78. Zip(Translate[TemplateGrid, Vector[A]], A, Take[transVectors, 4, 6]) → allGridsRow2
  79. Zip(Translate[TemplateAxis, Vector[A]], A, Take[transVectors, 1, 3]) → allAxesRow1
  80. Zip(Translate[TemplateAxis, Vector[A]], A, Take[transVectors, 4, 6]) → allAxesRow2
  81. Zip(Zip[Text[A, B + V, true, true], A, {"-10", "-5", "5", "10", "x", "-10", "-5", "5", "10", "y"}, B, TemplateTxtLocations], V, Take[transVectors, 4, 6]) → allAxisLabelsRow2
  82. Zip(Zip[Text[A, B + V, true, true], A, {"-10", "-5", "5", "10", "x", "-10", "-5", "5", "10", "y"}, B, TemplateTxtLocations], V, Take[transVectors, 1, 3]) → allAxisLabelsRow1
  83. Zip(Text[A, (2, 14.5) + V, true, true], A, graphTitles, V, transVectors) → allTitles
  84. LaTeX(("\text{\textbf{Feedback: } (A checkmark in a column indicates a correct match.)\\" * If[IndexOf[fbIndx, questionOrder] ≟ 1, fbt1, If[IndexOf[fbIndx, questionOrder] ≟ 2, fbt2, fbt3]])) → fbDisplay
  85. Zip(Text[If[A, "", ("" * xmark)], V + (7.5, 14.2), true, true], A, correctMatches, V, displayOrder) → xMarks
  86. Zip(Text[If[A, ("" * cmark)], V + (7.5, 14.2), true, true], A, correctMatches, V, displayOrder) → checkMarks

AI Drawing Prompt Reference

Create a visual representation showing the relationship between functions and their derivatives. Start by plotting a coordinate axis, then generate several random functions along with their derivatives on the same axis. Label the zeros of both the functions and their derivatives. Combine these graphs and zero points into a matching game where users identify which graphs correspond to the same function and its derivative. Arrange all elements in a grid, highlighting one function and its derivative for comparison and matching.
The prompt above was compiled from the original drawing commands and is for reference only.