从齐次到线性:利用斜率与截距判别线性函数性质
几何画板及绘图内容加载中,请稍等……
所属专题
Lineare Funktionen
该范例通过选择题与开放题,引导学生从函数形式与图像位置关系出发,判读并计算线性函数的斜率k与y轴截距d,并纠正常见概念错误(如把常数项与斜率混淆)。核心数学概念包括线性函数的表达 f(x)=k·x+d、斜率k表示图像的倾斜程度、y轴截距d表示在x=0时的函数值,以及直线过点(0|d)时对图像平移与形态变化的影响。作图与交互要点体现在:使用诸如 Text、Textfield 输入题目说明与数值/答案;用 Segment、Polygon、Midpoint 构造几何辅助元素;用 Intersect 与 If 实现条件判断(例如判断选项真假或给出提示/反馈);通过 SelectedIndex 控制多题导航或选项状态;并用 Sequence、Element 生成用于作图或题目随机化的数据;同时用 Join 将界面与对象组合管理;对象如 txt011、txt021、txt031、inputBox、bt
GeoGebra 命令及参数
Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {5, 5, 7, 8, 3, 4, 7, 1, 6, 6}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) → RasterPunkteSelectedIndex(dropdown031) → index031Segment(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) → polyAxisSequence(Sequence[(x(PointsXAxis(k)) | y(PointsYAxis(m))), k, 1, Length[PointsXAxis]], m, 1, Length[PointsYAxis]) → AllPointsOnGridText("\textsf{\bold{f_1}}", AllPointsOnGrid(9, 6), false, true, 1, 1) → CapF1Segment(Origin, Origin + (disX | 0)) → segXSteigunsdreieckSegment(Origin + (disX | (2 * disY)), Origin + (disX | 0)) → segYSteigunsdreieckSegment(PointF21, PointF22) → segF2Intersect(segF2, Line[Origin, Origin + (0 | 01)]) → IntersectPointText("\textsf{\bold{\textcolor{db6114}{f_2}}}", AllPointsOnGrid(9, 4), false, true, 1, 1) → CapF2Text("\textsf{\bold{\textcolor{db6114}{f_2}}}", Intersect[segF2, Line[AllPointsOnGrid(9, 1), AllPointsOnGrid(9, 1) + (1 | 0)]], false, true, 1, 1) → CapF202Textfield(input011) → InputBox011Textfield(input031) → InputBox031Textfield(input032) → InputBox032Textfield(input051) → InputBox051SelectedIndex(dropdown041) → index041SelectedIndex(dropdown042) → index042SelectedIndex(dropdown043) → index043Textfield(Input033) → InputBox033If(step ≟ 1, Corner[txt012, 1] + (0 | -0.5), step ≟ 3, (6.41 | -0.5), step ≟ 5, Corner[txt053, 1] + (5 | -0.05), (6.41 | -0.5)) → PosBtnSolutionPolygon(DD1MO, DD1RO, DD1RU, DD1MU) → qDD1Check, segDD1_{3}, segDD1_{4}, segDD1_{5}, segDD1_{6}Polygon(DD2MO, DD2RO, DD2RU, DD2MU) → qDD2Check, segDD2_{4}, segDD2_{5}, segDD2_1, segDD1_{14}If(step ≟ 1, correct011, true, step ≟ 2, PointD ≟ IntersectPoint ∧ showFeedback02, step ≟ 3, correct031 ∧ correct032 ∧ correct033 ∧ correctdd031, step ≟ 4, correctdd041 ∧ correctdd042 ∧ correctdd043 ∧ correct041, step ≟ 5, correct051 ∧ correctDD) → clickableBtnNextSegment(Origin, PointD) → segAchsabschnittTextfield(input041) → InputBox041Midpoint(Corner[txtDD1, 1], Corner[txtDD1, 3]) → MDD1Midpoint(Corner[txtDD2, 1], Corner[txtDD2, 3]) → MDD2Polygon(DD1LO, DD1MO, DD1MU, DD1LU) → qDD1, segDD1_{2}, segDD1M, segDD1_{7}, segDD1_{8}Midpoint(DD1MU, DD1RO) → DD1MCheckPolygon(DD2LO, DD2MO, DD2MU, DD2LU) → qDD2, segDD2_{6}, segDD2M, segDD2_{2}, segDD2_{3}Midpoint(DD2MU, DD2RO) → DD2MCheckSegment(PArrow21O, PArrow21U) → arrow21Segment(PArrow22O, PArrow22U) → arrow22Segment(Trick1U, Trick1O) → trick1Segment(Trick2U, Trick2O) → trick2Text("\textsf{\bold{\textcolor{#616161}{f}}}", AllPointsOnGrid(9, 4), false, true, 1, 1) → CapF4