根据图像寻找函数解析式
几何画板及绘图内容加载中,请稍等……
所属专题
Lineare Funktionen
①本范例演示根据给定函数图像寻找其解析式的过程;②涉及核心数学概念:函数图像、线性函数、斜率、y轴截距;③构造要点:使用了Sequence, Element, Textfield, Join, PolyLine, Segment, Text, Point, If, Rotate等GeoGebra命令;④适合初中七、八年级学生,用于练习解析几何和函数图像的理解。
GeoGebra 命令及参数
Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {3, 1, 7, 2, 4, 4, 4, 10, 7, 9}Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumberTextfield(input) → inputBoxJoin({Sequence[Segment[Corner[4] + (RasterPixMat * ((k * RasterStepXY), 0)), Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY))], k, 0, RasterMaxX / RasterStepXY], Sequence[Segment[Corner[4] + (RasterPixMat * (0, (k * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], k, 0, RasterMaxY / RasterStepXY]}) → RasterStreckenJoin({Sequence[Text[UnicodeToLetter[65 + k], Midpoint[Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY)), Corner[4] + (RasterPixMat * (((k + 1) * RasterStepXY), RasterMaxY))], false, true, 0, -1], k, 0, RasterMaxX / RasterStepXY - 1], Sequence[Text[("" * k), Midpoint[Corner[4] + (RasterPixMat * (RasterMaxX, ((k - 1) * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], false, true, 1, 0], k, 1, RasterMaxY / RasterStepXY]}) → RasterBeschriftungSequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkteTextfield(input021) → InputBox021Textfield(input022) → InputBox022Textfield(input041) → InputBox041Textfield(input042) → InputBox042PolyLine(PosSB, Corner[txt011, 1] + (0.25, -0.1), Corner[txt011, 2] + (0.1, -0.1), Corner[txt011, 3] + (0.1, 0.1), Corner[txt011, 4] + (-0.1, 0.1), Corner[txt011, 1] + (-0.1, 0.25), PosSB) → sb01PolyLine(PosSB, Corner[txt031, 1] + (0.25, -0.1), Corner[txt031, 2] + (0.1, -0.1), Corner[txt031, 3] + (0.1, 0.1), Corner[txt031, 4] + (-0.1, 0.1), Corner[txt031, 1] + (-0.1, 0.25), PosSB) → sb03Segment(Origin + ((minX / stepX * disX) - edgeAxisX, 0), Origin + ((maxX / stepX * disX) + edgeAxisX, 0)) → segAxisXSegment(Origin + (0, (minY / stepY * disY) - edgeAxisY), Origin + (0, (maxY / stepY * disY) + edgeAxisY)) → segAxisYSequence(Origin + ((minX / stepX * disX), 0) + (k * (disX, 0)), k, 0, maxX / stepX - minX / stepX) → PointsXAxisSequence(Origin + (0, (minY / stepY * disY)) + (k * (0, disY)), k, 0, maxY / stepY - minY / stepY) → PointsYAxisSequence(Segment[PointsXAxis(k) + (0, (-disSeg)), PointsXAxis(k) + (0, disSeg)], k, 1, Length[PointsXAxis]) → segXAxisSequence(Segment[PointsYAxis(k) + ((-disSeg), 0), PointsYAxis(k) + (disSeg, 0)], k, 1, Length[PointsYAxis]) → segYAxisSequence(m, m, minX, maxX, stepX) → numbersXAxisSequence(Text[((("\textsf{\footnotesize{\(" * If[numbersXAxis(k) ≥ 0, "\phantom{\(-\)}", ""]) * If[Element[numbersXAxis, k] ≟ 0, "", ("" * Element[numbersXAxis, k])]) * "\)}}"), PointsXAxis(k) + (-0.12, (-disSeg)), false, true, 0, -1], k, 1, (maxX - minX) / stepX + 1) → CapXSequence(m, m, minY, maxY, stepY) → numbersYAxisSequence(Text[((("\textsf{\footnotesize{\(" * If[numbersYAxis(k) ≥ 0, "\phantom{\(-\)}", ""]) * If[Element[numbersYAxis, k] ≟ 0, "", ("" * Element[numbersYAxis, k])]) * "\)}}"), PointsYAxis(k) + ((-disSeg) + 0.05, 0), false, true, -1, 0], k, 1, (maxY - minY) / stepY + 1) → CapYElement({Polygon[(x(PointsXAxis(1)), y(PointsYAxis(1))) + ((-edgeAxisX) - 0.05, (-edgeAxisY) - 0.05), (x(PointsXAxis(Length[PointsXAxis])), y(PointsYAxis(1))) + (edgeAxisX + 0.05, (-edgeAxisY) - 0.05), (x(PointsXAxis(Length[PointsXAxis])), y(PointsYAxis(Length[PointsYAxis]))) + (edgeAxisX + 0.05, edgeAxisY + 0.05), (x(PointsXAxis(1)), y(PointsYAxis(Length[PointsYAxis]))) + ((-edgeAxisX) - 0.05, edgeAxisY + 0.05)]}, 1) → polyAxisSegment(Origin, PointD) → segdText("\textsf{\textcolor{#1565c0}{\bold{d}}}", Midpoint[Origin, PointD] + ((-disX), 0), false, true, 0, 0) → CapdSegment(PointD + (disX, 0), PointD + ((7 * disX), 0)) → segPSDPoint(segPSD) → PointSDSegment(PointD, PointSD) → segSD1Segment((x(PointSD), FuncTransform(x(PointSD))), PointSD) → segSD2Text("\bold{\textsf{f}}", PointD + ((6 * disX), (4 * disY)), false, true, 1, 0) → CapFText("\textsf{\bold{\textcolor{#50c1ce}{Zieh mich!}}}", PointSD, false, true, 1, -1) → CapZiehMich03If(step ≟ 2 ∧ (¬correct021), PosImgKind1 + (3.75, -1.6), step ≟ 2, PosImgKind1 + (2.5, -2.85), PosImgKind1 + (4.5, -0.6)) → PosSolutionIf(step ≟ 2, correct021 ∧ correct022 ∧ sub02, step ≟ 3, showSD ∧ PointSD ∈ PointD + {((3 * disX), 0), ((6 * disX), 0)}, step ≟ 4, correct04 ∧ sub04, true) → clickableBtnNextPolyLine(PosSB, Corner[txt041, 1] + (0.25, -0.1), Corner[txt041, 2] + (0.1, -0.1), Corner[txt041, 3] + (0.1, 0.1), Corner[txt041, 4] + (-0.1, 0.1), Corner[txt041, 1] + (-0.1, 0.25), PosSB) → sb04PolyLine(PosSB, Corner[txt052, 1] + (0.25, 0.05), Corner[txt052, 2] + (0.1, 0.05), Corner[txt052, 3] + (0.1, 0.1), Corner[txt052, 4] + (-0.1, 0.1), Corner[txt052, 1] + (-0.1, 0.25), PosSB) → sb05Text((("\textsf{\bold{\textcolor{#9c4381}{\footnotesize{" * ReplaceAll[(round(x(PointSD - PointD) / disX, 1) * ""), ".", ","]) * "}}}}"), Midpoint[segSD1], false, true, 0, -1) → CapSD1Text((("\textsf{\bold{\textcolor{#db6114}{\footnotesize{" * ReplaceAll[(round(y(Point[segSD2, 0] - PointSD) / disY, 1) * ""), ".", ","]) * "}}}}"), Midpoint[segSD2], false, true, 1, 0) → CapSD2Rotate(Segment[ArrowCenter + (ArrowDistance, 0), ArrowCenter + (ArrowDistance + ArrowLength, 0)], ArrowAngle + ((1 - 1) * (360°) / ArrowNumber), ArrowCenter) → arrow1Rotate(Segment[ArrowCenter + (ArrowDistance, 0), ArrowCenter + (ArrowDistance + ArrowLength, 0)], ArrowAngle + ((3 - 1) * (360°) / ArrowNumber), ArrowCenter) → arrow3Segment(PointD, (x(PointD) + (Min[anim04, 1] * x(PointSD - PointD)), y(PointSD))) → segSD1AnimSegment(PointSD, (x(PointSD), y(PointSD) + (Min[1, anim04 - 1] * y((x(PointSD), FuncTransform(x(PointSD))) - PointSD)))) → segSD2AnimPolyLine(PosSB, Corner[txt021, 1] + (0.25, 0.23), Corner[txt021, 2] + (0.1, 0.23), Corner[txt021, 3] + (0.1, 0.1), Corner[txt021, 4] + (-0.1, 0.1), Corner[txt021, 1] + (-0.1, 0.35), PosSB) → sb02Segment(AnimArrow042A, AnimArrow042A + (anim042 * Direction[Line[AnimArrow042A, AnimArrow042B]])) → AnimArrow042Segment(AnimArrow02A, AnimArrow02A + (anim02 * Direction[Line[AnimArrow02A, AnimArrow02B]])) → AnimArrow02