Match Functions with their Derivatives by cemccourseware
Loading the math board and drawing, please wait…
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
Random(-4, 4) → a2Random(a2 + 1, a2 + 4) → a3Random(-8, -2) → c2Random(c2 + 1, c2 + 3) → c3Random(c3 + 1, c3 + 3) → c4Random(c4 + 1, c4 + 3) → c5Random(-8, 0) → b2Random(b2 + 1, b2 + 4) → b3Random(b3 + 1, b3 + 4) → b4Flatten(Sequence[Sequence[(i, j), i, -15, -15 + (2 * 25), 25], j, 10, 10 - 26, -26]) → transVectorsZip(Derivative[A], A, allFuncs) → allDiffsZip({Root[A]}, A, allDiffs) → allDerivativeRootsShuffle({1, 2, 3}) → questionOrder, {3, 1, 2}Polygon((-11, -11), (-11, 11), (11, 11), (11, -11)) → polygonTemplate, f, g, h, iShuffle({-1, 2, -2, 1}) → aVals, {2, 1, -2, -1}Shuffle({2, 3, 4, 5, 6, -2, -3, -4, -5, -6}) → hVals, {-2, -4, 5, 6, -5, 4, 2, 3, -3, -6}Shuffle({2, 3, 4, 5, 6, -2, -3, -4, -5, -6}) → kVals, {3, 4, -5, 2, 5, -6, -4, 6, -3, -2}Join({allFuncs, allDiffs}) → allDisplayFuncsRandom(1, 4) → caseNumJoin({Zip[Element[transVectors, A], A, questionOrder], Zip[Element[transVectors, B], B, matchOrder]}) → displayOrderIf(Random[0, 1] ≟ 1, 1, -1) → aIf(Random[0, 1] ≟ 1, 1, -1) → bLaTeX((((("\text{\textbf{Question: }" * QUESTION) * "\\\textbf{Instructions: }") * INSTRUCTIONS) * "}")) → allInstrucTranslate(polygonTemplate, Vector[Element[displayOrder, 1]]) → graph1Translate(polygonTemplate, Vector[Element[displayOrder, 2]]) → graph2Translate(polygonTemplate, Vector[Element[displayOrder, 3]]) → graph3Translate(polygonTemplate, Vector[Element[displayOrder, 4]]) → graph4UnicodeToLetter(10003) → cmarkUnicodeToLetter(10007) → xmarkTranslate(polygonTemplate, Vector[Element[displayOrder, 5]]) → graph5Translate(polygonTemplate, Vector[Element[displayOrder, 6]]) → graph6Shuffle({-2, -3, -4, -6}) → r1Vals, {-2, -6, -3, -4}Shuffle({1, 2, 3, 4, 5, 6}) → r2Vals, {3, 4, 5, 2, 1, 6}Zip(Sort[{Intersect[A, polygonTemplate]}], A, allDisplayFuncs) → endPointsZip(Translate[If[x > x(Element[B, 1]) ∧ x < x(Element[B, 2]), C(x)], Vector[D]], B, endPoints, C, allDisplayFuncs, D, displayOrder) → funcSegmentsTranslate(polygonTemplate, Vector[Element[displayOrder, graphChosen]]) → highlightQuestionPolygon({(-11, -34), (-11, 11), (11, 11), (11, -34)}) → matchBoxTemplateTranslate(matchBoxTemplate, Element[transVectors, 1]) → match1Translate(matchBoxTemplate, Element[transVectors, 2]) → match2Translate(matchBoxTemplate, Element[transVectors, 3]) → match3Sequence(i + 3 ≟ Element[matches, i], i, 1, 3) → correctMatchesTranslate(polygonTemplate, Element[displayOrder, 1]) → q1BoxTranslate(polygonTemplate, Element[displayOrder, 2]) → q2BoxTranslate(polygonTemplate, Element[displayOrder, 3]) → q3BoxTranslate(polygonTemplate, Element[displayOrder, Element[matches, 3]]) → q3MatchingBoxTranslate(polygonTemplate, Element[displayOrder, Element[matches, 2]]) → q2MatchingBoxTranslate(polygonTemplate, Element[displayOrder, Element[matches, 1]]) → q1MatchingBoxRandom(c2 + 1, c2 + 4) → d2Zip(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) → axisTicksZip(Translate[{Segment[(-11, 0), (11, 0)], Segment[(0, -11), (0, 11)]}, A], A, transVectors) → axisZip(Translate[Sequence[Segment[(-11, i), (11, i)], i, -10, 10], Vector[A]], A, transVectors) → allHorizGridsZip(Translate[Sequence[Segment[(i, -11), (i, 11)], i, -10, 10], Vector[A]], A, transVectors) → allVertGridsZip(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) → allTxtXZip(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) → allTxtYZip(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) → axisArrowsZip(Text[A, (1.5, 14.5) + V, true, true], A, graphTitles, V, transVectors) → allTitlesLaTeX(("\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]])) → fbDisplayZip(Text[If[A, ("" * cmark)], V + (7.5, 14.5), true, true], A, correctMatches, V, displayOrder) → checkMarksZip(Text[If[A, "", ("" * xmark)], V + (7.5, 14.5), true, true], A, correctMatches, V, displayOrder) → xMarks