二项式平方的图形化验证: (a+b)² 展开

二项式平方的图形化验证: (a+b)² 展开
几何画板及绘图内容加载中,请稍等……
2024-06-26 16:55
所属专题 Binomische Formeln
这个范例通过“用一个正方形分割”的方式,把 (c+d)²、(g+h)² 等二项式平方从代数表达直观地对应到面积分块,帮助学生理解展开式为何出现中间项 2cd(或 2gh)。核心数学概念是二项式公式,尤其是平方和公式:(x+y)²=x²+2xy+y²;并进一步训练把题目中含有不同字母的表达式进行正确展开、用图形分区检验结果。作图要点:在 GeoGebra 中使用 Sequence、Element 来生成用于分割与标注的参数;用 Rectangle/PolyLine/Segment/Point/Polygon 构造分割区域与边界;用 Text 与 Textfield 输出问题与步骤文字;用 If 控制选择题反馈与提示;用 SelectedIndex、Join、Sort 支持交互流程;并通过 CircleArc、Polygon 等辅助对象呈现关键形状与标记。适合 7-8 年级学生用于代数基础巩固、几何面积直观学习以及课堂互动练习或作业测评。

GeoGebra 命令及参数

  1. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {6, 5, 2, 7, 6, 5, 2, 1, 10, 3}
  2. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  3. Textfield(input) → inputBox
  4. PolyLine(PosSB, Corner[txt021, 2] + (-0.5, 0.1), Corner[txt021, 1] + (0, 0.1), Corner[txt021, 4] + (0, 0.1), Corner[txt021, 3] + (0.1, 0.1), Corner[txt021, 2] + (0.1, 0.5), PosSB) → sb02
  5. Segment(PosP1, PosA1) → seg11
  6. Segment(PosP4, PosA2) → seg12
  7. Point(Diagonalen) → PointP
  8. Segment(PosC + (0, disCap2), PosD + (0, disCap2)) → segCap11
  9. Segment(PosD + (0, disCap1), PosP3 + (0, disCap1)) → segCap12
  10. Segment(PosP3 + (0, disCap1), PosC + (0, disCap1)) → segCap13
  11. Segment(PosA + ((-disCap2), 0), PosD + ((-disCap2), 0)) → segCap14
  12. Segment(PosA + ((-disCap1), 0), PosP4 + ((-disCap1), 0)) → segCap15
  13. Segment(PosD + ((-disCap1), 0), PosP4 + ((-disCap1), 0)) → segCap16
  14. PolyLine(PosSB, Corner[txt041, 2] + (-0.5, 0.1), Corner[txt041, 1] + (0, 0.1), Corner[txt041, 4] + (0, 0.1), Corner[txt041, 3] + (0.1, 0.1), Corner[txt041, 2] + (0.1, 0.5), PosSB) → sb04
  15. PolyLine(PosSB, Corner[txt051, 2] + (-0.5, 0.1), Corner[txt051, 1] + (0, 0.1), Corner[txt051, 4] + (0, 0.1), Corner[txt051, 3] + (0.1, 0.1), Corner[txt051, 2] + (0.1, 0.5), PosSB) → sb05
  16. Polygon(PosDD1, PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd1, f, g, h, i, j, k
  17. PolyLine(PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, ((-heightdd)) / 2), PosDD1 + (widthdd / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, heightdd / 2), PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd1
  18. Polygon(PosDD2, PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd2, posdd2, l, m, n, p, q
  19. Polygon(PosDD3, PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd3, posdd3, r, s, t, a, b
  20. Polygon(PosDD4, PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → polydd4, posdd4, c, d, e, f_1, g_1
  21. PolyLine(PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, ((-heightdd)) / 2), PosDD2 + (widthdd / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, heightdd / 2), PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd2
  22. PolyLine(PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, ((-heightdd)) / 2), PosDD3 + (widthdd / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, heightdd / 2), PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd3
  23. PolyLine(PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, ((-heightdd)) / 2), PosDD4 + (widthdd / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, heightdd / 2), PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2)) → pldd4
  24. Text("\textsf{\Big{a²}}", PosDD2 + (0, 0.05), false, true, 0, 0) → txtDD2
  25. Text("\textsf{\Big{b²}}", PosDD4 + (0, 0.05), false, true, 0, 0) → txtDD4
  26. Text("\textsf{\Big{a \cdot b}}", PosDD1 + (0, 0.05), false, true, 0, 0) → txtDD1
  27. Text("\textsf{\Big{a \cdot b}}", PosDD3 + (0, 0.05), false, true, 0, 0) → txtDD3
  28. If(IndexOf[true, Sequence[IsInRegion[PosDD1 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD1 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD1, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD1
  29. If(IndexOf[true, Sequence[IsInRegion[PosDD2 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD2 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD2, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD2
  30. If(IndexOf[true, Sequence[IsInRegion[PosDD3 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD3 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD3, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD3
  31. If(IndexOf[true, Sequence[IsInRegion[PosDD4 + (((-widthdd)) / 2, ((-heightdd)) / 2), QuadratList(k, 1)], k, 1, 5]] ≟ IndexOf[true, Sequence[IsInRegion[PosDD4 + (widthdd / 2, heightdd / 2), QuadratList(k, 1)], k, 1, 5]], IndexOf[true, Sequence[IsInRegion[PosDD4, QuadratList(k, 1)], k, 1, 5]], NaN) → RegionDD4
  32. Text("\textsf{(a + b)² = a² + ab + ab + b²\vphantom{g}}", Pos72, false, true, 0, 0) → txt071
  33. Text("\textsf{\left(a + b\right)² = a² \bold{+ ab + ab} + b²\\\phantom{\left(a + b\right)² }= a² \bold{+ 2ab} + b²\vphantom{g}}", Pos72, false, true, 0, 0) → txt082
  34. PolyLine(PosSB, Corner[txt101, 2] + (-0.5, 0.1), Corner[txt101, 1] + (0, 0.1), Corner[txt101, 4] + (0, 0.1), Corner[txt101, 3] + (0.1, 0.1), Corner[txt101, 2] + (0.1, 0.5), PosSB) → sb10
  35. CircleArc(Midpoint[Pos101, Pos103], Pos103, Pos101) → arc101
  36. CircleArc(Midpoint[Pos101, Pos104], Pos104, Pos101) → arc102
  37. CircleArc(Midpoint[Pos102, Pos103], Pos103, Pos102) → arc103
  38. CircleArc(Midpoint[Pos102, Pos104], Pos104, Pos102) → arc104
  39. If(PointP ∈ Diagonalen(1), 1, 2) → CaseP
  40. Segment(PosA + (0, (-disCap2)), PosB + (0, (-disCap2))) → segCap21
  41. Segment(PosA + (0, (-disCap1)), PosQ1 + (0, (-disCap1))) → segCap22
  42. Segment(PosQ1 + (0, (-disCap1)), PosB + (0, (-disCap1))) → segCap23
  43. Segment(PosB + (disCap2, 0), PosC + (disCap2, 0)) → segCap24
  44. Segment(PosB + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap25
  45. Segment(PosC + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap26
  46. Sequence(PosImgTrixi1 + (0, -1.5) + (k * (0, (-heightdd) - 0.75)), k, 0, 3) → PosPark
  47. SelectedIndex(dropdown41) → index4
  48. SelectedIndex(dropdown111) → index111
  49. SelectedIndex(dropdown112) → index112
  50. Join({{1}, Shuffle[2…5]}) → Order031
  51. Sort({"$\textsf{\phantom{2 \cdot a \cdot b. }\vphantom{2g}}$", "$\textsf{a + b. \vphantom{2g}}$", "$\textsf{a \(-\) b. \vphantom{2g}}$", "$\textsf{a \cdot b. \vphantom{2g}}$", "$\textsf{2 \cdot a \cdot b. \vphantom{2g}}$"}, Order031) → dropdown031
  52. SelectedIndex(dropdown031) → index031
  53. If(step ≟ 6, (7.37, 3.86), (7.37 - 0.5, 1.25)) → PosImgFink1
  54. Sequence(PolyLine[MPList(k) + {(((-widthdd)) / 2, ((-heightdd)) / 2) + (-0.1, -0.1), (widthdd / 2, ((-heightdd)) / 2) + (0.1, -0.1), (widthdd / 2, heightdd / 2) + (0.1, 0.1), (((-widthdd)) / 2, heightdd / 2) + (-0.1, 0.1), (((-widthdd)) / 2, ((-heightdd)) / 2) + (-0.1, -0.1)}], k, 1, 4) → DDArea
  55. PolyLine(PosSB, Corner[txt061, 2] + (0.1, 0.5), Corner[txt061, 2] + (0.1, 0.1), Corner[txt061, 1] + (0, 0.1), Corner[txt061, 4] + (0, 0.1), Corner[txt061, 3] + (0.1, 0.1), Corner[txt061, 2] + (0.1, 1), PosSB) → sb06
  56. PolyLine(PosSB, Corner[txt073, 2] + (0.1, 0.5), Corner[txt073, 2] + (0.1, 0.1), Corner[txt073, 1] + (0, 0.1), Corner[txt073, 4] + (0, 0.1), Corner[txt073, 3] + (0.1, 0.1), Corner[txt073, 2] + (0.1, 1), PosSB) → sb07
  57. Text("\textsf{\bold{Zieh mich!}}", PosPark(1) + (0, 1.25), false, true, 0, 0) → CapDD5
  58. Segment(Midpoint[Corner[CapDD5, 1], Corner[CapDD5, 2]], Midpoint[Corner[CapDD5, 1], Corner[CapDD5, 2]] + (0, -0.3)) → arrowDD5
  59. PolyLine(PosSB, Corner[txt031, 2] + (0.1, 0.75), Corner[txt031, 2] + (0.1, 0.1), Corner[txt031, 2] + (-0.5, 0.1), Corner[txt031, 1] + (0, 0.1), Corner[txt031, 4] + (0, 0.1), Corner[txt031, 3] + (0.1, 0.1), Corner[txt031, 2] + (0.1, 1.6), PosSB) → sb03
  60. PolyLine(PosSB, Corner[txt06b1, 2] + (-0.25, 0), Corner[txt06b1, 1] + (-0.1, 0), Corner[txt06b1, 4] + (-0.1, 0.1), Corner[txt06b1, 3] + (0.1, 0.1), Corner[txt06b1, 2] + (0.1, 0.35), PosSB) → sb06b
  61. 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
  62. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  63. 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
  64. SelectedIndex(dropdown032) → index032
  65. Text("\textsf{\Big{a²}}", Midpoint[PosD, PosP5], false, true, 0, 0) → txtCap1
  66. Text("\textsf{\Big{a \cdot b}}", Midpoint[PosC, PosP5], false, true, 0, 0) → txtCap4
  67. Text("\textsf{\Big{a \cdot b}}", Midpoint[PosA, PosP5], false, true, 0, 0) → txtCap3
  68. Text("\textsf{\Big{b²}}", Midpoint[PosB, PosP5], false, true, 0, 0) → txtCap2
  69. If(selection61 ≟ 1 ∨ selection61 ≟ 4, If[selection62 ≠ 1 ∧ selection62 ≠ 4, Pos62, Pos63], selection61 ≟ 3, Pos61, Pos64) → PosEnd61
  70. If(selection62 ≟ 1 ∨ selection62 ≟ 4, Pos62, selection62 ≟ 3, Pos61, Pos64) → PosEnd62
  71. If(selection63 ≟ 1 ∨ selection63 ≟ 4, Pos63, selection63 ≟ 3, Pos61, Pos64) → PosEnd63
  72. If(selection64 ≟ 1 ∨ selection64 ≟ 4, If[selection63 ≠ 1 ∧ selection63 ≠ 4, Pos63, Pos62], selection64 ≟ 3, Pos61, Pos64) → PosEnd64
  73. Text((("\textsf{\colorbox{d0d0d0}{" * If[selection61 ≟ 3, "a²\vphantom{b²}", selection61 ≟ 1 ∨ selection61 ≟ 4, "a \cdot b\vphantom{b²}", selection61 ≟ 2, "b²", "\phantom{a² \cdot b²}"]) * "}}"), Pos61 + (slider6 * (PosEnd61 - Pos61)), false, true, 0, 0) → txtM61
  74. Text((("\textsf{\colorbox{d0d0d0}{" * If[selection62 ≟ 3, "a²\vphantom{b²}", selection62 ≟ 1 ∨ selection62 ≟ 4, "a \cdot b\vphantom{b²}", selection62 ≟ 2, "b²", "\phantom{a² \cdot b²}"]) * "}}"), Pos62 + (slider6 * (PosEnd62 - Pos62)), false, true, 0, 0) → txtM62
  75. Text((("\textsf{\colorbox{d0d0d0}{" * If[selection63 ≟ 3, "a²\vphantom{b²}", selection63 ≟ 1 ∨ selection63 ≟ 4, "a \cdot b\vphantom{b²}", selection63 ≟ 2, "b²", "\phantom{a² \cdot b²}"]) * "}}"), Pos63 + (slider6 * (PosEnd63 - Pos63)), false, true, 0, 0) → txtM63
  76. Text((("\textsf{\colorbox{d0d0d0}{" * If[selection64 ≟ 3, "a²\vphantom{b²}", selection64 ≟ 1 ∨ selection64 ≟ 4, "a \cdot b\vphantom{b²}", selection64 ≟ 2, "b²", "\phantom{a² \cdot b²}"]) * "}}"), Pos64 + (slider6 * (PosEnd64 - Pos64)), false, true, 0, 0) → txtM64
  77. Text("\textsf{{\bold{a²}}}", Pos6B1, false, true, 0, 0) → Cap6B1
  78. Text("\textsf{{\bold{a \cdot b}}}", Pos6B2, false, true, 0, 0) → Cap6B2
  79. Text("\textsf{{\bold{a \cdot b}}}", Pos6B3, false, true, 0, 0) → Cap6B3
  80. Text("\textsf{{\bold{b²}}}", Pos6B4, false, true, 0, 0) → Cap6B4
  81. Text("\textsf{{\bold{(a + b)²}}}", Midpoint[PosA, PosC], false, true, 0, 0) → Cap6B5
  82. Text("\textsf{\bold{\textcolor{#50c1ce}{Zieh mich!}}}", PosPark6B + (((-par1) * sidelength / 2), 0.05), false, true, -1, 0) → CapZiehMich6B
  83. PolyLine(PosSB, Corner[txt081, 2] + (-0.25, -0.1), Corner[txt081, 1] + (0, -0.1), Corner[txt081, 4] + (0, 0.1), Corner[txt081, 3] + (0.1, 0.1), Corner[txt081, 2] + (0.1, 0.5), PosSB) → sb08
  84. PolyLine(PosSB, Corner[txt032, 2] + (-0.25, 0), Corner[txt032, 1] + (-0.1, 0), Corner[txt032, 4] + (-0.1, 0.1), Corner[txt032, 3] + (0.1, 0.1), Corner[txt032, 2] + (0.1, 0.35), PosSB) → sb032
  85. Text((((("\textsf{" * If[anim07 ≟ 0, "A = ", "\phantom{A = }"]) * "(a + b)²") * If[anim07 ≟ 1, " = ", "\phantom{ = }"]) * "\vphantom{gb²}}"), Pos73 + (anim07 * (Pos72 + (-3, 0) - Pos73)), false, true, 0, 0) → txtAnim072
  86. Text((("\textsf{" * If[anim07 ≟ 0, "A = ", "\phantom{A = }"]) * "a² + a \cdot b + a \cdot b + b²\vphantom{b²g}}"), Pos71 + (anim07 * (Pos72 + (1.35, 0) - Pos71)), false, true, 0, 0) → txtAnim071
  87. Text("\textsf{\left(a + b\right)² = a² + 2ab + b²\vphantom{g}}", Pos72, false, true, 0, 0) → txt092
  88. If(step ≟ 2, slider1 ≟ 1, step ≟ 6.5, Pos6B4 ≟ MPList(2), step ≟ 7, anim07 ≟ 1, step ≟ 11, correct111 ∧ correct112 ∧ movedP, true, step ≟ 3, correctdd031, step ≟ 3.5, correctdd032, step ≟ 4, correct4 ∧ correctdd1 ∧ correctdd2 ∧ correctdd3 ∧ correctdd4 ∧ zugeordnet ∧ correctDD4, step ≟ 6, Sort[{selection61, selection62, selection63, selection64}] ≟ {1, 2, 3, 4} ∧ (correctSelection ∨ slider6 ≟ 1)) → clickableBtnNext

AI 绘图提示语参考

画一个二项式平方的几何视觉化图形,包含一个正方形,边长为随机数,分成四个区域,分别标记为 a²、ab、ab、b²。图形中还包含一些圆弧和线段,用于辅助理解二项式平方的展开式。
以上提示语为根据原始绘图命令整理而来,仅供参考。