Special Case of Binomial Multiplication: Interactive Practice on Perfect Square
Loading the math board and drawing, please wait…
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
Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {9, 9, 7, 5, 7, 4, 2, 8, 9, 7}Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumberTextfield(input) → inputBoxPolyLine(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) → sb02Segment(PosP1, PosA1) → seg11Segment(PosP4, PosA2) → seg12Point(Diagonalen) → PointPSegment(PosC + (0, disCap2), PosD + (0, disCap2)) → segCap11Segment(PosD + (0, disCap1), PosP3 + (0, disCap1)) → segCap12Segment(PosP3 + (0, disCap1), PosC + (0, disCap1)) → segCap13Segment(PosA + ((-disCap2), 0), PosD + ((-disCap2), 0)) → segCap14Segment(PosA + ((-disCap1), 0), PosP4 + ((-disCap1), 0)) → segCap15Segment(PosD + ((-disCap1), 0), PosP4 + ((-disCap1), 0)) → segCap16Sequence(PosD + (k * (PosA - PosD)), k, 0, 1, 0.05) → PointList03Point(PointList03) → Pos03PolyLine(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) → sb04PolyLine(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) → sb05Polygon(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_1PolyLine(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)) → pldd1Polygon(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_1Polygon(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_1Polygon(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_1PolyLine(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)) → pldd2PolyLine(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)) → pldd3PolyLine(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)) → pldd4Text("\textsf{\Big{a²}}", PosDD2 + (0, 0.05), false, true, 0, 0) → txtDD2Text("\textsf{\Big{b²}}", PosDD4 + (0, 0.05), false, true, 0, 0) → txtDD4Text("\textsf{\Big{a \cdot b}}", PosDD1 + (0, 0.05), false, true, 0, 0) → txtDD1Text("\textsf{\Big{a \cdot b}}", PosDD3 + (0, 0.05), false, true, 0, 0) → txtDD3If(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) → RegionDD1If(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) → RegionDD2If(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) → RegionDD3If(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) → RegionDD4PolyLine(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) → sb06PolyLine(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) → sb08PolyLine(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) → sb10If(PointP ∈ Diagonalen(1), 1, 2) → CasePSegment(PosA + (0, (-disCap2)), PosB + (0, (-disCap2))) → segCap21Segment(PosA + (0, (-disCap1)), PosQ1 + (0, (-disCap1))) → segCap22Segment(PosQ1 + (0, (-disCap1)), PosB + (0, (-disCap1))) → segCap23Segment(PosB + (disCap2, 0), PosC + (disCap2, 0)) → segCap24Segment(PosB + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap25Segment(PosC + (disCap1, 0), PosQ2 + (disCap1, 0)) → segCap26Sequence(PosImgTrixi1 + (0, -1.25) + (k * (0, (-heightdd) - 0.75)), k, 0, 3) → PosParkSelectedIndex(dropdown41) → index4SelectedIndex(dropdown111) → index111SelectedIndex(dropdown112) → index112If(step ≟ 3, (7.5, 3.5), (7.37, 1.25)) → PosImgFink1PolyLine(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) → sb01Textfield(input061) → InputBox061Textfield(input062) → InputBox062Textfield(input063) → InputBox063Textfield(input064) → InputBox064CircleArc(Midpoint[Pos101, Pos103] + (0, dis6), Pos103, Pos101) → arc101CircleArc(Midpoint[Pos101, Pos104] + (0, dis6), Pos104, Pos101) → arc102Mirror(CircleArc[Midpoint[Pos102, Pos103] + (0, dis6), Pos103, Pos102], SpiegelGerade) → arc103Mirror(CircleArc[Midpoint[Pos102, Pos104] + (0, dis6), Pos104, Pos102], SpiegelGerade) → arc104Textfield(input021) → InputBox021Textfield(input022) → InputBox022Textfield(input023) → InputBox023Textfield(input024) → InputBox024If(step ≟ 2, correct021 ∧ correct022 ∧ correct023 ∧ correct024, step ≟ 3, IndexOf[Pos03, PointList03] ≟ Length[PointList03], step ≟ 6, correct061 ∧ correct062 ∧ correct063 ∧ correct064, true) → clickableBtnNextPolyLine(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) → sb03Join({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) → RasterPunktePolyLine(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) → sb07Text("\textsf{\begin{array}{c}\bold{Zieh mich}\\\bold{↓}\end{array}", Pos03, false, true, 1, -1) → Cap03RemoveUndefined({Segment[PosP3, (x(PosP3), y(Pos03))], If[IndexOf[Pos03, PointList03] ≥ IndexOf[PosP4, PointList03], SegList1(2)]}) → SegList03Text((If[step ≟ 6 ∧ correct061, "\bold{", "{"] * "\textsf{\Big{a²}}}"), Midpoint[PosD, PosP5], false, true, 0, 0) → txtCap1Text((If[step ≟ 6 ∧ correct064, "\bold{", "{"] * "\textsf{\Big{b²}}}"), Midpoint[PosB, PosP5], false, true, 0, 0) → txtCap2Angle(Center[arc101] + (1, 0), Center[arc101], Point[arc101, 1]) → Angle611Angle(Center[arc101] + (1, 0), Center[arc101], Point[arc101, 0]) → Angle612CircleArc(Center[arc101], Center[arc101] + (Radius[arc101] * (cos(Angle611 + (anim061 * (Angle612 - Angle611))), sin(Angle611 + (anim061 * (Angle612 - Angle611))))), Point[arc101, 1]) → AnimArc101Angle(Center[arc102] + (1, 0), Center[arc102], Point[arc102, 1]) → Angle621Angle(Center[arc102] + (1, 0), Center[arc102], Point[arc102, 0]) → Angle622CircleArc(Center[arc102], Center[arc102] + (Radius[arc102] * (cos(Angle621 + (anim062 * (Angle622 - Angle621))), sin(Angle621 + (anim062 * (Angle622 - Angle621))))), Point[arc102, 1]) → AnimArc102Angle(Center[arc103] + (1, 0), Center[arc103], Point[arc103, 1]) → Angle631Angle(Center[arc104] + (1, 0), Center[arc104], Point[arc104, 1]) → Angle641Angle(Center[arc103] + (1, 0), Center[arc103], Point[arc103, 0]) → Angle632Angle(Center[arc104] + (1, 0), Center[arc104], Point[arc104, 0]) → Angle642CircleArc(Center[arc103], Point[arc103, 1], Center[arc103] + (Radius[arc103] * (cos(Angle631 + (anim063 * (Angle632 - Angle631))), sin(Angle631 + (anim063 * (Angle632 - Angle631)))))) → AnimArc103CircleArc(Center[arc104], Point[arc104, 1], Center[arc104] + (Radius[arc104] * (cos(Angle641 + (anim064 * (Angle642 - Angle641))), sin(Angle641 + (anim064 * (Angle642 - Angle641)))))) → AnimArc104PolyLine(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) → sb062Text((((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) → txtCap3Text((((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.