Special Case of Binomial Multiplication: Interactive Practice on Perfect Square

Special Case of Binomial Multiplication: Interactive Practice on Perfect Square
Loading the math board and drawing, please wait…
2025-01-23 18:18
In collections Binomische Formeln
This GeoGebra example demonstrates a special case of binomial multiplication—the perfect square formulas (first and second binomial formulas) through interactive exercises and visual feedback. Core math concepts include binomial expansion, the identity (a+b)² = a² + 2ab + b², its reverse application, and using decomposition to quickly compute large squares. Construction highlights: the applet uses GeoGebra commands such as Sequence, Element, Textfield, PolyLine, Segment, Point, Polygon, Text, If, SelectedIndex, CircleArc, Mirror, Join, RemoveUndefined, and Angle, along with objects like input boxes, buttons, sliders, and dynamic graphics to create multiple-choice questions, open-ended prompts, and instant validation. Suitable for grades 7-8, this resource helps students derive, visualize, and apply the three binomial formulas, making it ideal for classroom interaction and self-paced practice.

GeoGebra Commands & Parameters

  1. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {9, 9, 7, 5, 7, 4, 2, 8, 9, 7}
  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. Sequence(PosD + (k * (PosA - PosD)), k, 0, 1, 0.05) → PointList03
  15. Point(PointList03) → Pos03
  16. 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
  17. 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
  18. 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_1, g_2, h_1, i_1, j_1, k_1
  19. 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
  20. 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_1, m_1, n_1, p_1, q_1
  21. 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_1, s_1, t_1, a_1, b_1
  22. 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_1, d_1, e_1, f_{2}, g_1
  23. 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
  24. 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
  25. 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
  26. Text("\textsf{\Big{a²}}", PosDD2 + (0, 0.05), false, true, 0, 0) → txtDD2
  27. Text("\textsf{\Big{b²}}", PosDD4 + (0, 0.05), false, true, 0, 0) → txtDD4
  28. Text("\textsf{\Big{a \cdot b}}", PosDD1 + (0, 0.05), false, true, 0, 0) → txtDD1
  29. Text("\textsf{\Big{a \cdot b}}", PosDD3 + (0, 0.05), false, true, 0, 0) → txtDD3
  30. 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
  31. 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
  32. 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
  33. 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
  34. PolyLine(PosSB, Corner[txt061, 2] + (-0.5, 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, 0.5), PosSB) → sb06
  35. PolyLine(PosSB, Corner[txt081, 2] + (-0.5, 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
  36. 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
  37. If(PointP ∈ Diagonalen(1), 1, 2) → CaseP
  38. Segment(PosA + (0, (-disCap2)), PosB + (0, (-disCap2))) → segCap21
  39. Segment(PosA + (0, (-disCap1)), PosQ1 + (0, (-disCap1))) → segCap22
  40. Segment(PosQ1 + (0, (-disCap1)), PosB + (0, (-disCap1))) → segCap23
  41. Segment(PosB + (disCap2, 0), PosC + (disCap2, 0)) → segCap24
  42. Segment(PosB + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap25
  43. Segment(PosC + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap26
  44. Sequence(PosImgTrixi1 + (0, -1.25) + (k * (0, (-heightdd) - 0.75)), k, 0, 3) → PosPark
  45. SelectedIndex(dropdown41) → index4
  46. SelectedIndex(dropdown111) → index111
  47. SelectedIndex(dropdown112) → index112
  48. If(step ≟ 3, (7.5, 3.5), (7.37, 1.25)) → PosImgFink1
  49. PolyLine(PosSB, Corner[txt011, 2] + (0.1, 0.4), Corner[txt011, 2] + (0.1, 0.1), Corner[txt011, 1] + (0, 0.1), Corner[txt011, 4] + (0, 0.1), Corner[txt011, 3] + (0.1, 0.1), Corner[txt011, 3] + (0.1, -0.3), PosSB) → sb01
  50. Textfield(input061) → InputBox061
  51. Textfield(input062) → InputBox062
  52. Textfield(input063) → InputBox063
  53. Textfield(input064) → InputBox064
  54. CircleArc(Midpoint[Pos101, Pos103] + (0, dis6), Pos103, Pos101) → arc101
  55. CircleArc(Midpoint[Pos101, Pos104] + (0, dis6), Pos104, Pos101) → arc102
  56. Mirror(CircleArc[Midpoint[Pos102, Pos103] + (0, dis6), Pos103, Pos102], SpiegelGerade) → arc103
  57. Mirror(CircleArc[Midpoint[Pos102, Pos104] + (0, dis6), Pos104, Pos102], SpiegelGerade) → arc104
  58. Textfield(input021) → InputBox021
  59. Textfield(input022) → InputBox022
  60. Textfield(input023) → InputBox023
  61. Textfield(input024) → InputBox024
  62. If(step ≟ 2, correct021 ∧ correct022 ∧ correct023 ∧ correct024, step ≟ 3, IndexOf[Pos03, PointList03] ≟ Length[PointList03], step ≟ 6, correct061 ∧ correct062 ∧ correct063 ∧ correct064, true) → clickableBtnNext
  63. PolyLine(PosSB, Corner[txt031, 2] + (0.1, 0.75), Corner[txt031, 2] + (0.1, 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.25), PosSB) → sb03
  64. 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
  65. 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
  66. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  67. PolyLine(PosSB, Corner[txt071, 2] + (-0.25, -0.1), Corner[txt071, 1] + (0, -0.1), Corner[txt071, 4] + (0, 0.1), Corner[txt071, 3] + (0.1, 0.1), Corner[txt071, 2] + (0.1, 0.5), PosSB) → sb07
  68. Text("\textsf{\begin{array}{c}\bold{Zieh mich}\\\bold{↓}\end{array}", Pos03, false, true, 1, -1) → Cap03
  69. RemoveUndefined({Segment[PosP3, (x(PosP3), y(Pos03))], If[IndexOf[Pos03, PointList03] ≥ IndexOf[PosP4, PointList03], SegList1(2)]}) → SegList03
  70. Text((If[step ≟ 6 ∧ correct061, "\bold{", "{"] * "\textsf{\Big{a²}}}"), Midpoint[PosD, PosP5], false, true, 0, 0) → txtCap1
  71. Text((If[step ≟ 6 ∧ correct064, "\bold{", "{"] * "\textsf{\Big{b²}}}"), Midpoint[PosB, PosP5], false, true, 0, 0) → txtCap2
  72. Angle(Center[arc101] + (1, 0), Center[arc101], Point[arc101, 1]) → Angle611
  73. Angle(Center[arc101] + (1, 0), Center[arc101], Point[arc101, 0]) → Angle612
  74. CircleArc(Center[arc101], Center[arc101] + (Radius[arc101] * (cos(Angle611 + (anim061 * (Angle612 - Angle611))), sin(Angle611 + (anim061 * (Angle612 - Angle611))))), Point[arc101, 1]) → AnimArc101
  75. Angle(Center[arc102] + (1, 0), Center[arc102], Point[arc102, 1]) → Angle621
  76. Angle(Center[arc102] + (1, 0), Center[arc102], Point[arc102, 0]) → Angle622
  77. CircleArc(Center[arc102], Center[arc102] + (Radius[arc102] * (cos(Angle621 + (anim062 * (Angle622 - Angle621))), sin(Angle621 + (anim062 * (Angle622 - Angle621))))), Point[arc102, 1]) → AnimArc102
  78. Angle(Center[arc103] + (1, 0), Center[arc103], Point[arc103, 1]) → Angle631
  79. Angle(Center[arc104] + (1, 0), Center[arc104], Point[arc104, 1]) → Angle641
  80. Angle(Center[arc103] + (1, 0), Center[arc103], Point[arc103, 0]) → Angle632
  81. Angle(Center[arc104] + (1, 0), Center[arc104], Point[arc104, 0]) → Angle642
  82. CircleArc(Center[arc103], Point[arc103, 1], Center[arc103] + (Radius[arc103] * (cos(Angle631 + (anim063 * (Angle632 - Angle631))), sin(Angle631 + (anim063 * (Angle632 - Angle631)))))) → AnimArc103
  83. CircleArc(Center[arc104], Point[arc104, 1], Center[arc104] + (Radius[arc104] * (cos(Angle641 + (anim064 * (Angle642 - Angle641))), sin(Angle641 + (anim064 * (Angle642 - Angle641)))))) → AnimArc104
  84. PolyLine(PosSB, Corner[txt063, 2] + (-0.25, 0), Corner[txt063, 1] + (-0.1, 0), Corner[txt063, 4] + (-0.1, 0.1), Corner[txt063, 3] + (0.1, 0.1), Corner[txt063, 2] + (0.1, 0.35), PosSB) → sb062
  85. Text((((If[step ≟ 6 ∧ correct063, "\bold{", "{"] * "\textsf{\Big{") * If[step < 6.5 ∧ Text[InputBox063] ≟ "b a", "b \cdot a", "a \cdot b"]) * "}}}"), Midpoint[PosA, PosP5], false, true, 0, 0) → txtCap3
  86. Text((((If[step ≟ 6 ∧ correct062, "\bold{", "{"] * "\textsf{\Big{") * If[step < 6.5 ∧ Text[InputBox062] ≟ "b a", "b \cdot a", "a \cdot b"]) * "}}}"), Midpoint[PosC, PosP5], false, true, 0, 0) → txtCap4

AI Drawing Prompt Reference

Draw a diagram containing two squares and two triangles. The sides of the two squares are a and b, the bases of the two triangles are a and b, and their heights are a*b and b*a. The vertices of the two squares are located at two points on the x-axis, and the vertices of the two triangles are located at the vertices of the squares and two points on the x-axis.
The prompt above was compiled from the original drawing commands and is for reference only.