齐次线性函数的三种表征:数值表、函数表达式与图像

齐次线性函数的三种表征:数值表、函数表达式与图像
几何画板及绘图内容加载中,请稍等……
2025-10-04 18:59
本范例展示齐次线性函数在“取值表—函数关系式—函数图像”三种视角之间如何相互切换,并通过斜率参数刻画直线的几何走向。核心数学概念包括:一次函数/齐次线性函数的一般形式、斜率k与参数(如位移项/截距相关参数d)的作用、从斜率三角形理解函数图像为直线、用取值表验证函数值随x变化的规律,以及所有齐次线性函数的公共通过点(体现为固定截距条件下的交点)。作图与交互要点主要体现在:利用 GeoGebra 的对象集合与交互组件(如文本框、按钮、输入框)驱动题目流程;用多段线与线段构造图像折线/直线片段;通过直线与坐标轴/网格中相关元素的相交计算得到关键点;并用文本标注显示提示、解答与步骤。构造摘要中提到的关键命令/对象包括:Sequence(生成序列数据用于取值表)、Element 与 Textfield(创建/显示交互与输入)、Join 与 SelectedIndex(拼接与选择不同选项/步骤)、If

GeoGebra 命令及参数

  1. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {8, 1, 8, 7, 1, 8, 4, 5, 4, 3}
  2. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  3. Textfield(input) → inputBox
  4. Join({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]}) → RasterStrecken
  5. Join({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]}) → RasterBeschriftung
  6. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  7. Textfield(input021) → InputBox021
  8. Textfield(input022) → InputBox022
  9. Textfield(input023) → InputBox023
  10. Textfield(input024) → InputBox024
  11. Textfield(input025) → InputBox025
  12. Textfield(input026) → InputBox026
  13. SelectedIndex(dropdown071) → index071
  14. SelectedIndex(dropdown072) → index072
  15. If(step ≟ 1, (2, 2.2), (-0.45, 6.75)) → PosImgNora1
  16. PolyLine(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) → sb01
  17. Segment(Origin + ((minX / stepX * disX) - edgeAxisX, 0), Origin + ((maxX / stepX * disX) + edgeAxisX, 0)) → segAxisX
  18. Segment(Origin + (0, (minY / stepY * disY) - edgeAxisY), Origin + (0, (maxY / stepY * disY) + edgeAxisY)) → segAxisY
  19. Sequence(Origin + ((minX / stepX * disX), 0) + (k * (disX, 0)), k, 0, maxX / stepX - minX / stepX) → PointsXAxis
  20. Sequence(Origin + (0, (minY / stepY * disY)) + (k * (0, disY)), k, 0, maxY / stepY - minY / stepY) → PointsYAxis
  21. Sequence(Segment[PointsXAxis(k) + (0, (-disSeg)), PointsXAxis(k) + (0, disSeg)], k, 1, Length[PointsXAxis]) → segXAxis
  22. Sequence(Segment[PointsYAxis(k) + ((-disSeg), 0), PointsYAxis(k) + (disSeg, 0)], k, 1, Length[PointsYAxis]) → segYAxis
  23. Sequence(m, m, minX, maxX, stepX) → numbersXAxis
  24. Sequence(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) → CapX
  25. Sequence(m, m, minY, maxY, stepY) → numbersYAxis
  26. Sequence(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) → CapY
  27. Sequence(Sequence[PosTable + (Sum[ListSpalte, k], (-Sum[ListZeile, m])), k, 0, 2], m, 0, 7) → TablePosMat
  28. Sequence(((("\textsf{\(" * If[k ≥ 0, "\phantom{-}", ""]) * k) * "\)}"), k, -1, 4) → txtXList
  29. Sequence(((("\textsf{\(" * If[FuncOriginal(k) ≥ 0, "\phantom{-}", ""]) * ReplaceAll[("" * FuncOriginal(k)), ".", ","]) * "\)}"), k, -1, 4) → txtYList
  30. Element({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) → polyAxis
  31. Intersect(Line[PointsOnGraph(1), PointsOnGraph(2)], polyAxis) → ISPoint1, ISPoint2
  32. Segment(ISPoint1, ISPoint1 + (anim03 * (ISPoint2 - ISPoint1))) → segGraph
  33. PolyLine(PosSB, Corner[txt041, 1] + (-0.1, 0.25), Corner[txt041, 1] + (-0.1, -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.75), PosSB) → sb04
  34. Text((((("\textsf{\bold{\large{f(x) = \textcolor{" * If[step > 3, "#988c00", "black"]) * "}{\(") * ReplaceAll[(sliderK * ""), ".", ","]) * "\)} \cdot x}}}"), TablePosMat(1, 2) + (0, 0.6), false, true, 0, 0) → headerTable
  35. Text("\textsf{\bold{f}}", ISPoint2, false, true, 1, 0) → CapF
  36. PolyLine(PosSB, Corner[txt071, 1] + (0.25, -0.1), Corner[txt071, 2] + (0.1, -0.1), Corner[txt071, 3] + (0.1, 0.1), Corner[txt071, 4] + (-0.1, 0.1), Corner[txt071, 1] + (-0.1, 0.25), PosSB) → sb07
  37. If(step > 4, (0.09, -0.44), (7, 5.75)) → PosKB
  38. If(step ≟ 5, 3, step > 4, 2.75, 5.2) → heightKB
  39. SelectedIndex(dropdown061) → index061
  40. Sequence(Text[Element[{"\textsf{\(\phantom{-}1\)}", "\textsf{\(\phantom{-}2\)}", "\textsf{\(\phantom{-}3\)}"}, k], Midpoint[TablePosMat(k + 1, 1), TablePosMat(k + 2, 2)] + (-0.15, 0), false, true, 0, 0], k, 1, 3) → CapTableX07
  41. Sequence(Text[txtYList(k + 2), Midpoint[TablePosMat(k + 1, 2), TablePosMat(k + 2, 3)] + (-0.15, 0), false, true, 0, 0], k, 1, 3) → CapTableY07
  42. Take(PointsOnGraph, 1, If[step ≟ 2, anim02 - 1, 6]) → GraphedPoints
  43. If(step ≟ 2, anim02 ≟ 0 ∨ anim02 ≟ 7, step ≟ 3, anim03 ≟ 0 ∨ anim03 ≟ 1, true) → clickableBtnBack
  44. Sequence(Text[txtXList(k), Midpoint[TablePosMat(k + 1, 1), TablePosMat(k + 2, 2)] + (-0.15, 0), false, true, 0, 0], k, 1, If[step < 4, 6, 4]) → CapTableX
  45. Sequence(Text[txtYList(k), Midpoint[TablePosMat(k + 1, 2), TablePosMat(k + 2, 3)] + (-0.15, 0), false, true, 0, 0], k, 1, If[step < 4, 6, 4]) → CapTableY
  46. SelectedIndex(dropdown041) → index041
  47. If(step ≟ 2, correct021 ∧ correct022 ∧ correct023 ∧ correct024 ∧ correct025 ∧ correct026 ∧ anim02 ≟ 7, true, step ≟ 3, anim03 ≟ 1, step ≟ 4, moved04 ∧ correctdd072 ∧ correctdd041, step ≟ 5, moved05 ∧ correctdd071, step ≟ 6, sliderK > 3) → clickableBtnNext
  48. PolyLine(PosSB, Corner[txt051, 1] + (-0.1, 0.25), Corner[txt051, 1] + (-0.1, -0.1), Corner[txt051, 2] + (0.1, -0.1), Corner[txt051, 3] + (0.1, 0.1), Corner[txt051, 4] + (-0.1, 0.1), Corner[txt051, 1] + (-0.1, 0.75), PosSB) → sb05
  49. PolyLine(PosSB, Corner[txt061, 1] + (-0.1, 0.25), Corner[txt061, 1] + (-0.1, -0.1), Corner[txt061, 2] + (0.1, -0.1), Corner[txt061, 3] + (0.1, 0.1), Corner[txt061, 4] + (-0.1, 0.1), Corner[txt061, 1] + (-0.1, 0.75), PosSB) → sb06
  50. Sequence(Midpoint[TablePosMat(1 + k, 1), TablePosMat(2 + k, 2)], k, 1, 4) → MPTableLeft
  51. Sequence(Midpoint[TablePosMat(1 + k, 2), TablePosMat(2 + k, 3)], k, 1, 4) → MPTableRight
  52. Sequence(CircleArc[Midpoint[MPTableLeft(k) + (0, (-disArrowTable)), MPTableLeft(k + 1) + (0, disArrowTable)] + disArrowLeft, MPTableLeft(k) + disArrowLeft + (0, (-disArrowTable)), MPTableLeft(k + 1) + disArrowLeft + (0, disArrowTable)], k, 1, 3) → ArcLeft04
  53. Sequence(CircleArc[Midpoint[MPTableRight(k) + (0, (-disArrowTable)), MPTableRight(k + 1) + (0, disArrowTable)] + disArrowRight, MPTableRight(k + 1) + disArrowRight + (0, disArrowTable), MPTableRight(k) + disArrowRight + (0, (-disArrowTable))], k, 1, 3) → ArcRight04
  54. Segment(Point[ArcLeft04(1), 1], Point[ArcLeft04(1), 1] + (0.01, 0)) → segArrow041
  55. Segment(Point[ArcLeft04(2), 1], Point[ArcLeft04(2), 1] + (0.01, 0)) → segArrow042
  56. Segment(Point[ArcLeft04(3), 1], Point[ArcLeft04(3), 1] + (0.01, 0)) → segArrow043
  57. Segment(Point[ArcLeft04(4), 1], Point[ArcLeft04(4), 1] + (0.01, 0)) → segArrow044
  58. Segment(Point[ArcRight04(1), 0], Point[ArcRight04(1), 0] + (0.01, 0)) → segArrow045
  59. Segment(Point[ArcRight04(2), 0], Point[ArcRight04(2), 0] + (0.01, 0)) → segArrow046
  60. Segment(Point[ArcRight04(3), 0], Point[ArcRight04(3), 0] + (0.01, 0)) → segArrow047
  61. Sequence(Text[((("\textsf{\bold{\scriptsize{" * If[sliderK < 0, "\(-\) ", "+ "]) * ReplaceAll[(abs(sliderK) * ""), ".", ","]) * "\vphantom{,}}}}"), TablePosMat(k + 2, 3) + (-0.15, 0.05), false, true, 1, 0], k, 1, 3) → CapArrowTableRight
  62. Sequence(Text["\textsf{\bold{\scriptsize{+ 1\vphantom{,}}}}", TablePosMat(k + 2, 1) + (0, 0.05), false, true, -1, 0], k, 1, 3) → CapArrowTableLeft