Factoring a Difference of Squares with Algebra Tiles
Loading the math board and drawing, please wait…
This GeoGebra activity demonstrates how to factor expressions of the form a² − b² by using algebra tiles and a structured visual decomposition. The key mathematical ideas are the difference of squares identity (a² − b² = (a − b)(a + b)), factoring quadratic polynomials, and recognizing a special product pattern through a model-to-algebra correspondence. In construction, the example uses randomized parameters (Shuffle, Take, Sequence, Zip) to generate different inputs, builds the relevant polynomial with Polynomial and extracts coefficients via Coefficients, and checks whether the result is factored using IsFactored. The decomposition steps and feedback are assembled with Split along with text and UI elements like Textfield and Text. Visual representation is handled through geometric primitives and transformations such as Polygon, Segment, Midpoint, Vertex, Translate, Mirror, Flatten, and PixelsToPoint, while layout utilities (Max, Corner) support consistent placement. It includes interactive elements for validation and guidance (e.g., hints and solutions). Suitable for grades 9–12 and for classroom practice on factoring quadratic polynomials and special products.
GeoGebra Commands & Parameters
Shuffle(Sequence[16]) → allRandomSeeds, {3, 7, 16, 6, 4, 14, 9, 11, 15, 12, 2, 1, 5, 13, 8, 10}Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeedsElement(allRandomSeeds, 1 + Mod[countQuestion, 16]) → optionElement(options_{1}, 1 + Mod[option, Length[options_{1}]]) → current_{1}Polynomial((abs(first_{1}) * x^(2))) → h_{1}If(first_{1} ≥ 0, (((((If[firstsq_{1} ≟ 1, "", "("] * Polynomial[(firstsq_{1} * x)]) * If[firstsq_{1} ≟ 1, "", ")"]) * "^2-") * secondsq_{1}) * "^2"), (((((secondsq_{1} * "^2-") * If[firstsq_{1} ≟ 1, "", "("]) * Polynomial[(firstsq_{1} * x)]) * If[firstsq_{1} ≟ 1, "", ")"]) * "^2")) → difSquares_{1}Split(difSquares_{1}, {"-"}) → l4_{1}If(first_{1} ≥ 0, (((((((("(" * Polynomial[(firstsq_{1} * x)]) * "-") * secondsq_{1}) * ")(") * Polynomial[(firstsq_{1} * x)]) * "+") * secondsq_{1}) * ")"), (((((((("(" * secondsq_{1}) * "-") * Polynomial[(firstsq_{1} * x)]) * ")(") * secondsq_{1}) * "+") * Polynomial[(firstsq_{1} * x)]) * ")")) → thirdRow_{1}Textfield(inputB) → InputBoxBPolynomial((first_{1} * x^(2)) + second_{1}) → f_{1}Coefficients(f_{1}) → coeffsCoefficients(StudInput) → coeffsStIsFactored(StudInput) → factoredCorner(5) → layoutAppSizeTextfield(inputC) → InputBoxCTextfield(StudInput) → InputBoxAElement({{onboardingX + 24, onboardingY - 12, 1, 0}, {onboardingX, onboardingY - 12, -1, 0}, {onboardingX + 18, onboardingY, 0, -1}, {onboardingX + 18, onboardingY - 36, 0, 0}}, onboardingCase) → onboardingPositionsPixelsToPoint((xMin, yMin), (xMax, yMax), (800, 500), (onboardingPositions(1), onboardingPositions(2))) → OnboardingTextPointText("\text{Drag to start}", OnboardingTextPoint, true, true, onboardingPositions(3), onboardingPositions(4)) → onboardingDisplayTextCorner(5) → AppSize_{1}Max(4 / firstsq_{1}, 1.5) → xlength_{1}If(first_{1} ≥ 0, AnimPointBlueLeft_{1}, AnimPointBlueRight_{1}) → Tx1_{1}Polygon((0, 0), (xlength_{1}, 0), 4) → tileX2_{1}Translate(tileX2_{1}, Vector[Tx1_{1}]) → tileX2'_{1}Flatten(Sequence[Sequence[Translate[tileX2'_{1}, Vector[((xlength_{1} + borderwidth_{1}) * (CLIPBOARDmagicSTRINGii, CLIPBOARDmagicSTRINGjj))]], CLIPBOARDmagicSTRINGii, 0, firstsq_{1} - 1], CLIPBOARDmagicSTRINGjj, 0, firstsq_{1} - 1]) → tilesX2_{1}Segment((x(Vertex[tileX2'_{1}, 1]), 8.2), (x(Vertex[tilesX2_{1}(-1), 3]), 8.2)) → g_{1}Midpoint(g_{1}) → PosLab1_{1}If(first_{1} ≥ 0, AnimPointPinkRight_{1}, AnimPointPinkLeft_{1}) → CornerSmallSquares_{1}Polygon((0, 0), (unitlength_{1}, 0), 4) → tileU_{1}Translate(tileU_{1}, Vector[CornerSmallSquares_{1}]) → tileU'_{1}Flatten(Sequence[Sequence[Translate[tileU'_{1}, Vector[((unitlength_{1} + borderwidth_{1}) * (CLIPBOARDmagicSTRINGii, CLIPBOARDmagicSTRINGjj))]], CLIPBOARDmagicSTRINGii, 0, secondsq_{1} - 1], CLIPBOARDmagicSTRINGjj, 0, secondsq_{1} - 1]) → tilesUnit_{1}Text(text3_{1}, PosLab1_{1}, true, true, 0, 1) → label1_{1}Vertex(tilesX2_{1}(firstsq_{1}), 2) → LimX2_{1}Text(text2_{1}, PosLab4_{1}, true, true, 0, 1) → label3_{1}Polygon({(-1, 8), (-1, -3), (16, -3), (16, 8)}) → q1_{1}Flatten(Sequence[Sequence[Tx1_{1} + (Tilex2size_{1} / firstsq_{1}, Tilex2size_{1} / firstsq_{1}) / 2 + ((CLIPBOARDmagicSTRINGii, CLIPBOARDmagicSTRINGjj) * Tilex2size_{1} / firstsq_{1}), CLIPBOARDmagicSTRINGii, 0, firstsq_{1} - 1], CLIPBOARDmagicSTRINGjj, 0, firstsq_{1} - 1]) → posLabelsx2_{1}Text(second_{1}, (If[first_{1} ≥ 0, 7, 0] + sqrt(abs(second_{1})) / 2, 1), true, true, 0, 0) → text8_{1}Polygon({(0, 0), (unitlength_{1}, 0), (unitlength_{1}, xlength_{1}), (0, xlength_{1})}) → tileX_{1}Polygon((borderwidth_{1}, borderwidth_{1}), (xlength_{1} - borderwidth_{1}, borderwidth_{1}), 4) → tileX2W_{1}Polygon({(borderwidth_{1}, borderwidth_{1}), (unitlength_{1} - borderwidth_{1}, borderwidth_{1}), (unitlength_{1} - borderwidth_{1}, xlength_{1} - borderwidth_{1}), (borderwidth_{1}, xlength_{1} - borderwidth_{1})}) → tileXW_{1}Polygon((borderwidth_{1}, borderwidth_{1}), (unitlength_{1} - borderwidth_{1}, borderwidth_{1}), 4) → tileUW_{1}Translate(tileUW_{1}, Vector[CornerSmallSquares_{1}]) → tileUW'_{1}Flatten(Sequence[Sequence[Translate[tileUW'_{1}, Vector[((unitlength_{1} + borderwidth_{1}) * (CLIPBOARDmagicSTRINGii, CLIPBOARDmagicSTRINGjj))]], CLIPBOARDmagicSTRINGii, 0, secondsq_{1} - 1], CLIPBOARDmagicSTRINGjj, 0, secondsq_{1} - 1]) → tilesUW_{1}Translate(tileX2W_{1}, Vector[Tx1_{1}]) → tileX2W'_{1}Flatten(Sequence[Sequence[Translate[tileX2W'_{1}, Vector[((xlength_{1} + borderwidth_{1}) * (CLIPBOARDmagicSTRINGii, CLIPBOARDmagicSTRINGjj))]], CLIPBOARDmagicSTRINGii, 0, firstsq_{1} - 1], CLIPBOARDmagicSTRINGjj, 0, firstsq_{1} - 1]) → tilesx2W_{1}Translate(hGuideline_{1}, Vector[(Vector[Corner[4] - Corner[1]] / 500 * 16)]) → hGuideline'_{1}Translate(tileX_{1}, PosxTile_{1}) → tileX'_{1}Flatten(Sequence[Sequence[Translate[tileX'_{1}, ((CLIPBOARDmagicSTRINGii * (borderwidth_{1} + unitlength_{1})), (CLIPBOARDmagicSTRINGjj * (borderwidth_{1} + xlength_{1})))], CLIPBOARDmagicSTRINGii, 0, secondsq_{1} - 1], CLIPBOARDmagicSTRINGjj, 0, firstsq_{1} - 1]) → tilesxV_{1}Mirror(tilesxV_{1}, Line[(8 - borderwidth_{1}, 0), (0, 8 - borderwidth_{1})]) → tilesxH_{1}Translate(tileXW_{1}, PosxTile_{1}) → tileXW'_{1}Sequence(Sequence[Translate[tileXW'_{1}, ((CLIPBOARDmagicSTRINGii * (borderwidth_{1} + unitlength_{1})), (jj * (borderwidth_{1} + xlength_{1})))], CLIPBOARDmagicSTRINGii, 0, secondsq_{1} - 1], jj, 0, firstsq_{1} - 1) → m1_{1}, {{2.8630342520170147, 2.8630342520170147, 2.8630342520170147, 2.8630342520170147}}Zip(Text[(If[first_{1} ≤ 0, "-", ""] * "x²"), PP, true, true, 0, 0], PP, CentsX2_{1}) → l1_{1}Zip(Text["x", PP, true, true, 0, 0], PP, CentsXH_{1}) → l2_{1}Zip(Centroid[PP], PP, tilesxV_{1}) → CentsXV_{1}Zip(Text["-x", PP, true, true, 0, 0], PP, CentsXV_{1}) → l3_{1}Zip(Text[(If[first_{1} ≤ 0, "", "-"] * "1"), PP, true, true, 0, 0], PP, CentsU_{1}) → l5_{1}Text(Polynomial[(first_{1} * x^(2))], (x(PosLab1_{1}), 1), true, true, 0, 0) → text1_{1}Segment((x(Vertex[tilesUnit_{1}(1), 1]), 8.2), (x(Vertex[tilesUnit_{1}(-1), 3]), 8.2)) → k_{1}Segment((-0.4, y(Vertex[tilesUnit_{1}(1), 1])), (-0.4, y(Vertex[tilesUnit_{1}(-1), 3]))) → j_{1}Midpoint(j_{1}) → PosLab3_{1}Text(secondsq_{1}, PosLab3_{1}, true, true, -1, 0) → label4_{1}Segment((-0.4, y(Vertex[tileX2'_{1}, 1])), (-0.4, y(Vertex[tilesX2_{1}(-1), 3]))) → i_{1}Midpoint(i_{1}) → PosLab2_{1}Text(If[first_{1} ≤ 0, (("(" * Polynomial[((sgn(first_{1}) * sqrt(abs(first_{1}))) * x)]) * ")"), ("" * Polynomial[((sgn(first_{1}) * sqrt(abs(first_{1}))) * x)])], PosLab2_{1}, true, true, -1, 0) → label2_{1}Text("+", Midpoint[Vertex[g_{1}, If[first_{1} ≥ 0, 2, 1]], Vertex[k_{1}, If[first_{1} ≥ 0, 1, 2]]], true, true, 0, 1) → text4_{1}Text("+", Midpoint[Vertex[i_{1}, If[first_{1} ≥ 0, 1, 2]], Vertex[j_{1}, If[first_{1} ≥ 0, 2, 1]]] + (0, 0.1), true, true, -1, 0) → text5_{1}Text(StudInput) → inputAsText
AI Drawing Prompt Reference
Draw a representation of the difference of squares using algebra tiles, including a positive square area and a negative square area. The side length of the positive square is a positive number, and the side length of the negative square is a negative number. Use the algebra tiles to represent the difference of squares formula a² - b² and decompose it into (a - b)(a + b). First, draw the positive square area, then draw the negative square area, and finally combine them to form the geometric representation of the difference of squares.
The prompt above was compiled from the original drawing commands and is for reference only.