Graphical Derivation of the Third Binomial Formula

Graphical Derivation of the Third Binomial Formula
Loading the math board and drawing, please wait…
2025-09-23 23:35
In collections Binomische Formeln
This example graphically derives the third binomial formula, illustrating how to visually understand algebraic formulas through geometric shapes. By constructing two trapezoids and a rectangle, students can see the geometric meaning of (a + b) ⋅ (a - b) = a² - b². GeoGebra commands used include Point, Polygon, Rotate, Mirror, Segment, and Text. Suitable for 7-8 grade students and teachers.

GeoGebra Commands & Parameters

  1. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {3, 3, 10, 4, 9, 2, 4, 8, 1, 3}
  2. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  3. Textfield(input) → inputBox
  4. PolyLine(PosSB, Corner[txt021, 2] + (-0.5, 0), Corner[txt021, 1], Corner[txt021, 4] + (0, 0.1), Corner[txt021, 3] + (0, 0.1), Corner[txt021, 2] + (0, 0.5), PosSB) → sb02
  5. SelectedIndex(dropdown031) → index031
  6. SelectedIndex(dropdown032) → index032
  7. SelectedIndex(dropdown033) → index033
  8. If(correct031 ∧ correct032 ∧ correct033, 4, correct031 ∧ correct032, 3, correct031, 2, 1) → step3
  9. CircleArc(Midpoint[PosCalc11, PosCalc13] + (0, dis3), PosCalc13, PosCalc11) → arc031
  10. CircleArc(Midpoint[PosCalc11, PosCalc14] + (0, dis3), PosCalc14, PosCalc11) → arc032
  11. SelectedIndex(dropdown034) → index034
  12. PolyLine(PosSB, Corner[txt072, 2] + (0.1, 0.25), Corner[txt072, 2] + (0.1, 0), Corner[txt072, 1] + (-0.1, 0), Corner[txt072, 4] + (-0.1, 0.1), Corner[txt072, 3] + (0.1, 0.1), Corner[txt072, 2] + (0.1, 0.75), PosSB) → sb07
  13. Segment(PosA + (0, (-disCap1)), PosB + (0, (-disCap1))) → segCap081
  14. Text("\textsf{a}", Midpoint[segCap081] + (0, 0.05), false, true, 0, -1) → Cap081
  15. Segment(PosB + (disCap1, 0), PosP2 + (disCap1, 0)) → segCap091
  16. Text("\textsf{b}", Midpoint[segCap091] + (0, 0.05), false, true, 1, 0) → Cap091
  17. SelectedIndex(dropdown101) → index101
  18. Segment(PosC + (disCap1, 0), PosP2 + (disCap1, 0)) → segCap101
  19. SelectedIndex(dropdown111) → index111
  20. SelectedIndex(dropdown112) → index112
  21. Textfield(input121) → InputBox121
  22. Flatten({1, Shuffle[2…5]}) → OrderDD121
  23. Sort({"$\textsf{\phantom{ a \(-\) b }\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{\(-\) }b\phantom{ a}\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{ \(-\) }a\phantom{ b}\vphantom{(b\(-\)a)}}$", "$\textsf{(a \(-\) b) \vphantom{(b\(-\)a)}}$", "$\textsf{(b \(-\) a) \vphantom{(b\(-\)a)}}$"}, OrderDD121) → dropdown121
  24. SelectedIndex(dropdown121) → index121
  25. Segment(PosA + (0, (-disCap2)), PosB + (0, (-disCap2))) → segCap121
  26. Segment(PosP1 + (0, (-disCap1)), PosB + (0, (-disCap1))) → segCap122
  27. Text("\textsf{a}", Midpoint[segCap121] + (0, 0.05), false, true, 0, -1) → Cap121
  28. Text("\textsf{b}", Midpoint[segCap122] + (0, 0.05), false, true, 0, -1) → Cap122
  29. Segment(PosP1, PosP1 + (4, 2)) → seg131
  30. Point(seg131) → PosQ
  31. Polygon(PosQ, PosQ + ((parab * sidelength), 0), PosQ + ((parab * sidelength), (parab * sidelength)), PosQ + (0, (parab * sidelength))) → Quadrat2, segQ23, segQ21, segQ22, segQ24
  32. Text("\textsf{b²}", Midpoint[PosQ, PosQ + ((parab * sidelength), (parab * sidelength))] + (0, 0.05), false, true, 0, 0) → CapQ2
  33. SelectedIndex(dropdown141) → index141
  34. SelectedIndex(dropdown142) → index142
  35. Rotate(PosA + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2) → PosR11
  36. Rotate(PosP1 + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2) → PosR12
  37. Rotate(PosP + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2) → PosR13
  38. Rotate(PosP4 + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2) → PosR14
  39. Segment(Rotate[PosA + ((-disCap1), 0) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2], Rotate[PosP4 + ((-disCap1), 0) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2]) → segCap151
  40. Text("\textsf{b}", Midpoint[Segment[Rotate[PosA + ((-disCap1) - 0.3, 0.05) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2], Rotate[PosP4 + (-0.3 - disCap1, 0.05) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2]]], false, true, 0, 0) → Cap151
  41. Segment(Rotate[PosA + (0, (-disCap1)) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2], Rotate[PosP1 + (0, (-disCap1)) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2]) → segCap152
  42. Text("\textsf{a \(-\) b}", Midpoint[Segment[Rotate[PosA + (0, (-disCap1) + If[slider151 > 1, -0.75, -0.25]) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2], Rotate[PosP1 + (0, (-disCap1) + If[slider151 > 1, -0.75, -0.25]) + (Min[slider151, 1] * (PosB - PosA)), If[slider151 < 1, 0°, ((slider151 - 1) * 90°)], PosP2]]], false, true, 0, 0) → Cap152
  43. PolyLine(PosSB, Corner[txt161, 2] + (-0.5, 0), Corner[txt161, 1], Corner[txt161, 4] + (0, 0.1), Corner[txt161, 3] + (0, 0.1), Corner[txt161, 2] + (0, 0.5), PosSB) → sb16
  44. SelectedIndex(dropdown161) → index161
  45. SelectedIndex(dropdown162) → index162
  46. PolyLine(PosSB + (0.5, -0.5), Corner[txt171, 2] + (0, 0.5), Corner[txt171, 2] + (0, 0), Corner[txt171, 1], Corner[txt171, 4] + (0, 0.1), Corner[txt171, 3] + (0, 0.1), Corner[txt171, 2] + (0, 1), PosSB + (0.5, -0.5)) → sb17
  47. Flatten({1, Shuffle[2…5]}) → OrderDD122
  48. Sort({"$\textsf{\phantom{ a \(-\) b }\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{\(-\) }b\phantom{ a}\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{ \(-\) }a\phantom{ b}\vphantom{(b\(-\)a)}}$", "$\textsf{(a \(-\) b) \vphantom{(b\(-\)a)}}$", "$\textsf{(b \(-\) a) \vphantom{(b\(-\)a)}}$"}, OrderDD122) → dropdown122
  49. SelectedIndex(dropdown122) → index122
  50. PolyLine(PosSB + (0.4, -0.25), Corner[txt011, 2] + (-0.5, 0), Corner[txt011, 1], Corner[txt011, 4] + (0, 0.1), Corner[txt011, 3] + (0, 0.1), Corner[txt011, 2] + (0, 0.5), PosSB + (0.4, -0.25)) → sb01
  51. Mirror(CircleArc[Midpoint[PosCalc12, PosCalc13] + (0, dis3), PosCalc13, PosCalc12], SpiegelGerade) → arc033
  52. Mirror(CircleArc[Midpoint[PosCalc12, PosCalc14] + (0, dis3), PosCalc14, PosCalc12], SpiegelGerade) → arc034
  53. PointIn(Polygon[PPolyLight1, PPolyLight2, PPolyLight3, PPolyLight4]) → PLight
  54. Circle(PLight, LightRadius) → LightCircle1
  55. Point(Segment[PosDDStart052, PosDDEnd052]) → PosDD052
  56. Point(Segment[PosDDStart053, PosDDEnd053]) → PosDD053
  57. Segment(PosA + ((-disCap1), 0), PosD + ((-disCap1), 0)) → segCap082
  58. Text("\textsf{a}", Midpoint[segCap082] + (0, 0.05), false, true, -1, 0) → Cap082
  59. Text("\textsf{a \cdot b}", Midpoint[PosB, PosP4] + (0, 0.05), false, true, 0, 0) → Cap092
  60. Text((If[step ≟ 10, "\textcolor{#db6114}{\bold{", "{{"] * "\textsf{a \(-\) b}}}"), Midpoint[segCap101] + (0, 0.05), false, true, 1, 0) → Cap101
  61. Text("\textsf{a \cdot (a \(-\) b)}", Midpoint[PosC, PosP4] + (0, 0.05), false, true, 0, 0) → Cap111
  62. Text("$\textsf{Zieh mich!}$", Midpoint[PosB, PosP2] + (1, 0), false, true, 1, -1) → txtCap13
  63. Segment(Midpoint[Corner[txtCap13, 1], Corner[txtCap13, 4]], Midpoint[Corner[txtCap13, 1], Corner[txtCap13, 4]] + (-1.5, 0)) → arrow13
  64. Text("\textsf{(a \(-\) b) \cdot b}", Midpoint[PosP4, PosP1] + (0, 0.05), false, true, 0, 0) → Cap141
  65. Text("\textsf{(a + b) \cdot (a \(-\) b)}", Midpoint[PosD, PosP2] + (PosP2 - PosP) / 2 + (0, 0.05), false, true, 0, 0) → Cap161
  66. PolyLine(PosSB + (0.4, -0.25), Corner[txt032, 2] + (-0.5, 0), Corner[txt032, 1], Corner[txt032, 4] + (0, 0.1), Corner[txt032, 3] + (0, 0.1), Corner[txt032, 2] + (0, 0.5), PosSB + (0.4, -0.25)) → sb03
  67. PolyLine(PosSB, Corner[txt041, 2] + (0.1, 0.35), Corner[txt041, 2] + (0.1, -0.1), Corner[txt041, 1] + (0, -0.1), Corner[txt041, 4] + (0, 0.1), Corner[txt041, 3] + (0.1, 0.1), Corner[txt041, 3] + (0.1, -0.5), PosSB) → sb04
  68. PolyLine(PosSB, Corner[txt043, 2] + (0.1, 0.35), Corner[txt043, 2] + (0.1, -0.1), Corner[txt043, 1] + (0, -0.1), Corner[txt043, 4] + (0, 0.1), Corner[txt043, 3] + (0.1, 0.1), Corner[txt043, 3] + (0.1, -0.5), PosSB) → sb04b
  69. Circle(PLight, LightRadius) → LightCircle2
  70. Circle(PTorch, TorchSize) → TorchCircle
  71. Line(PLight, PTorch) → LightLine
  72. Intersect(TorchCircle, LightLine) → PosTorch_{1}, PosTorch_{2}
  73. Tangent(PosTorch_{2}, LightCircle1) → LightTangent_{1}, LightTangent_{2}
  74. Rotate(PosTorch_{2} - (0.2 * UnitOrthogonalVector[LightLine]), -68°, PTorch) → PosImgTorch2
  75. IsInRegion(PLight, Polygon[Corner[text1, 1], Corner[text1, 2], Corner[text1, 3], Corner[text1, 4]]) → clickableBtnValidateLight
  76. Text("\textsf{\bold{Zieh mich!}}", PLight + (0, -0.25), false, true, 0, -1) → CapLightZiehMich
  77. Point(Segment[PosDDStart051, PosDDEnd051]) → PosDD051
  78. Text((("\textcolor{" * If[PosDD051 ≟ PosDDEnd051, "#616161", "#000000"]) * "}{\textsf{\(-\) a \cdot b + a \cdot b}}"), PosDD051, false, true, 0, 0) → txtDD051
  79. Text("\textsf{\bold{Zieh mich!}}", PosDD051 + (0, -0.35), false, true, 0, -1) → CapZiehMich051
  80. Text("{\textsf{a²}", PosDD052, false, true, 0, 0) → txtDD052
  81. Text("{\textsf{\(-\) b²}", PosDD053, false, true, 0, 0) → txtDD053
  82. PolyLine(PosSB, Corner[txt052, 2] + (0.1, 0.35), Corner[txt052, 2] + (0.1, -0.1), Corner[txt052, 1] + (0, -0.1), Corner[txt052, 4] + (0, 0.1), Corner[txt052, 3] + (0.1, 0.1), Corner[txt052, 2] + (0.1, 0.75), PosSB) → sb051
  83. PolyLine(Vertex[polyDD052(1), 2], Vertex[polyDD052(1), 3], Vertex[polyDD052(1), 4], Vertex[polyDD052(1), 5], Vertex[polyDD052(1), 2]) → segDrag052
  84. PolyLine(Vertex[polyDD053(1), 2], Vertex[polyDD053(1), 3], Vertex[polyDD053(1), 4], Vertex[polyDD053(1), 5], Vertex[polyDD053(1), 2]) → segDrag053
  85. PolyLine(PosDDEnd052 - PosDD052 + {Vertex[polyDD052(1), 2], Vertex[polyDD052(1), 3], Vertex[polyDD052(1), 4], Vertex[polyDD052(1), 5], Vertex[polyDD052(1), 2]}) → segDragEnd052
  86. PolyLine(PosDDEnd053 - PosDD053 + {Vertex[polyDD053(1), 2], Vertex[polyDD053(1), 3], Vertex[polyDD053(1), 4], Vertex[polyDD053(1), 5], Vertex[polyDD053(1), 2]}) → segDragEnd053
  87. Text("\textsf{\bold{Zieh mich!}}", PosDD052 + (0, 0.15), false, true, 0, 1) → CapZiehMich052
  88. Text("\textsf{\bold{Zieh mich!}}", PosDD053 + (0, 0.15), false, true, 0, 1) → CapZiehMich053
  89. PolyLine(PosSB, Corner[txt053, 2] + (0.1, 0.35), Corner[txt053, 2] + (0.1, -0.1), Corner[txt053, 1] + (0, -0.1), Corner[txt053, 4] + (0, 0.1), Corner[txt053, 3] + (0.1, 0.1), Corner[txt053, 2] + (0.1, 0.75), PosSB) → sb052
  90. Sequence(PosQ4 + (k / 20 * (PosQ41 - PosQ4)), k, 0, 20) → PointsP08
  91. Point(PointsP08) → Pos08
  92. Text("\textsf{\bold{\begin{array}{c}Zieh mich!\\↓\end{array}}}", Pos08 + (-0.25, 0), false, true, 1, -1) → CapZiehMich08
  93. PolyLine(PosSB + (0.25, -0.25), Corner[txt082, 2] + (0, 0.4), Corner[txt082, 2] + (0, 0), Corner[txt082, 1] + (0, 0), Corner[txt082, 4] + (0, 0.1), Corner[txt082, 3] + (0, 0.1), Corner[txt082, 3] + (0, -0.25), PosSB + (0.25, -0.25)) → sb08
  94. Segment(PosQ4 + (0, disQ1 + 0.65), PosQ4 + ((dimQ * (1 + parQ)), disQ1 + 0.65)) → segQ081
  95. Segment(PosQ4 + (0, disQ1 + If[step ∈ {10, 11, 12, 13, 14, 15}, 0.65, 0]), PosQ4 + ((dimQ * 1), disQ1 + If[step ∈ {10, 11, 12, 13, 14, 15}, 0.65, 0])) → segQ082
  96. Segment(PosQ4 + (dimQ, disQ1), PosQ4 + ((dimQ * (1 + parQ)), disQ1)) → segQ083
  97. Text("\textsf{(a \(+\) b)}", Midpoint[segQ081] + (0, disQ1), false, true, 0, 0) → CapQ081
  98. Text("\textsf{a}", Midpoint[segQ082] + (0, disQ1), false, true, 0, 0) → CapQ082
  99. Text("\textsf{b}", Midpoint[segQ083] + (0, disQ1 + 0.075), false, true, 0, 0) → CapQ083
  100. Segment(PosQ4 + ((-disQ1) - If[step ∈ {8, 17}, 1.65, step ≟ 9, 0, 0.65], 0), PosQ4 + ((-disQ1) - If[step ∈ {8, 17}, 1.65, step ≟ 9, 0, 0.65], (-dimQ))) → segQ084
  101. Segment(PosQ4 + ((-disQ1), 0), PosQ4 + ((-disQ1), ((-dimQ) * (1 - parQ)))) → segQ085
  102. Segment(PosQ4 + ((-disQ1), ((-dimQ) * (1 - parQ))), PosQ4 + ((-disQ1), ((-dimQ) * 1))) → segQ086
  103. Text("\textsf{(a \(-\) b)}", Midpoint[segQ085] + (0.1, 0), false, true, -1, 0) → CapQ085
  104. Text("\textsf{b}", Midpoint[segQ086] + (0, 0), false, true, -1, 0) → CapQ086
  105. Text("\textsf{a}", Midpoint[segQ084] + (0, 0), false, true, -1, 0) → CapQ084
  106. If(step ≟ 3, correct03, step ≟ 14, correct141 ∧ correct142, step ≟ 15, slider151 ≟ 2, step ≟ 16, correct161 ∧ correct162, step ≟ 5, PosDD051 ≟ PosDDEnd051 ∧ PosDD052 ≟ PosDDEnd052 ∧ PosDD053 ≟ PosDDEnd053, true, step ≟ 4.5, validateLight ∧ (correctLight ∨ attemptCountLight ≥ 2), step ≟ 8, Pos08 ≟ PosQ41, step ≟ 11, PosP111 ≟ PosDD111, step ≟ 13, PosQ ≟ Point[seg131, 1]) → clickableBtnNext
  107. PolyLine(PosSB, Corner[txt091, 2] + (-0.25, 0), Corner[txt091, 1] + (-0.1, 0), Corner[txt091, 4] + (-0.1, 0.1), Corner[txt091, 3] + (0.1, 0.1), Corner[txt091, 2] + (0.1, 0.35), PosSB) → sb09
  108. PolyLine(PosSB, Corner[txt101, 2] + (-0.25, -0.1), Corner[txt101, 1] + (-0.1, -0.1), Corner[txt101, 4] + (-0.1, 0.1), Corner[txt101, 3] + (0.1, 0.1), Corner[txt101, 2] + (0.1, 0.25), PosSB) → sb10
  109. Segment(PosQ3 + (0, disQ1), PosQ3 + (((-parQ) * dimQ), disQ1)) → segQ091
  110. Text("\textsf{b}", Midpoint[segQ091] + (0, disQ1 + 0.075), false, true, 0, 0) → CapQ091
  111. PolyLine(PosSB, Corner[txt111, 2] + (-0.25, 0), Corner[txt111, 1] + (-0.1, 0), Corner[txt111, 4] + (-0.1, 0.1), Corner[txt111, 3] + (0.1, 0.1), Corner[txt111, 2] + (0.1, 0.35), PosSB) → sb11
  112. PolyLine(PosSB, Corner[txt131, 2] + (-0.25, 0), Corner[txt131, 1] + (-0.1, 0), Corner[txt131, 4] + (-0.1, 0.1), Corner[txt131, 3] + (0.1, 0.1), Corner[txt131, 2] + (0.1, 0.35), PosSB) → sb13
  113. PolyLine(PosSB, Corner[txt141, 2] + (-0.25, -0.1), Corner[txt141, 1] + (-0.1, -0.1), Corner[txt141, 4] + (-0.1, 0.1), Corner[txt141, 3] + (0.1, 0.1), Corner[txt141, 2] + (0.1, 0.25), PosSB) → sb14
  114. Segment(PosQ1 + (0, (-disQ1)), PosQ1 + (((1 - parQ) * dimQ), (-disQ1))) → segQ141
  115. Segment(PosQ3 + (disQ1, 0), PosQ3 + (disQ1, ((-(1 - parQ)) * dimQ))) → segQ142
  116. PolyLine(PosSB, Corner[txt151, 2] + (-0.25, 0), Corner[txt151, 1] + (-0.1, 0), Corner[txt151, 4] + (-0.1, 0.1), Corner[txt151, 3] + (0.1, 0.1), Corner[txt151, 2] + (0.1, 0.35), PosSB) → sb15
  117. Circle((7.345, 4.43), LightRadius) → c
  118. Text("\textsf{b²\vphantom{g}}", PosP111 + (0, 0.05), false, true, 0, 0) → txtDD111
  119. Text("\textsf{\bold{Zieh mich!}}", PosP111 + (0, 0.5), false, true, 0, 1) → CapZiehMich11

AI Drawing Prompt Reference

Draw a diagram to derive the binomial formula (a+b)(a-b)=a²-b², including two trapezoids and a rectangle, to illustrate the relationship between algebraic formulas and geometric shapes. Start by drawing two trapezoids and a rectangle, label the positions of a and b, then combine the trapezoids and rectangle through rotation and reflection operations to form the geometric representation of a²-b², finally label the areas of each part to help the audience intuitively understand the formula.
The prompt above was compiled from the original drawing commands and is for reference only.