函数与其导数匹配 by cemccourseware
几何画板及绘图内容加载中,请稍等……
本范例演示如何匹配常见函数与其导数图像。涉及的核心数学概念包括导数的几何意义和函数的单调性。作图要点使用了GeoGebra的Random, Flatten, Zip, Shuffle, Polygon, Join, If, LaTeX, Translate, UnicodeToLetter, Sequence等命令和对象来随机生成函数和导数对,并通过图形化展示匹配过程。适合高中及大学初学者学习微积分和函数分析。
GeoGebra 命令及参数
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