Comparing Division Models: Equal Sharing, Repeated Subtraction, and Arrays

Comparing Division Models: Equal Sharing, Repeated Subtraction, and Arrays
Loading the math board and drawing, please wait…
2023-10-22 02:16
This example compares several representations of division by showing how different models produce the same quotient (and potential remainder): equal sharing, repeated subtraction, and rectangular (array) grouping. Students are prompted to connect division to multiplication by rewriting a division statement as a multiplication sentence and solving it. Key concepts include modeling division as repeated grouping, interpreting quotient and remainder, and using the relationship between division and multiplication (divisor × quotient = dividend − remainder). The construction uses randomized problem generation (RandomUniform with allRandomSeeds, currentDividend, currentDivisor, randIndex/caseNum), organizes data flow with sequence tools (Sequence, IndexOf/Element/Take/Zip), computes quotient and remainder via Div (currentQuotient, remainder, numWholeTally), and builds visual array structures using geometric primitives (Corner, Segment, Polygon, plus Flatten to combine) along with text/feedback elements (Text, hint groups, cEQUAL/cDIVIDE, student input). Best suited for grades 4–5 to strengthen division modeling, equation writing, and conceptual understanding through interactive comparison.

GeoGebra Commands & Parameters

  1. RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.8423875051042135, 0.7526552070531833, 0.6110852451992259, 0.4099043155724901, 0.021509608753714, 0.06732719732233365, 0.04342350237929588, 0.2829575632854226, 0.9462462104710566, 0.2779995734953775, 0.7475007610400503, 0.8531659870443156, 0.6638096911051335, 0.75829698179575, 0.26929234051444634, 0.7358121475051854, 0.26052857233176885, 0.9858111556849061, 0.719875594772922, 0.14038651037955635, 0.38988961226886887, 0.08502502897005777, 0.6339080798624074, 0.2456443568380999, 0.1749587975379175, 0.8798543462988798, 0.21851534417684237, 0.49617891588002777, 0.9511170668230164, 0.8151776532222442, 0.04639049453699705, 0.20333343589726066, 0.0428888834788777, 0.28511445575696776, 0.30271821391693615, 0.9883835083273312, 0.6999200843294415, 0.19513739907294989, 0.3797841014687461, 0.2569644984490174, 0.09187955978157718, 0.9053680428881767, 0.4858154969323354, 0.6607022804870668, 0.33021245755284134, 0.6036069565943339, 0.17572344598443992, 0.7549253412798494, 0.05626508581051355, 0.8487873905508935, 0.050975434578909504, 0.5501932694080455, 0.8303307036805255, 0.11861833571896821, 0.733826930894824, 0.9201718650555176, 0.4346322260986038, 0.5991960636687792, 0.16757542821585805, 0.8191176753420408, 0.675162270303282, 0.8693144084060912, 0.48937340388780415, 0.9889044296450396, 0.6526426673726928, 0.5080931989363235, 0.6554471508008817, 0.3681312686084878, 0.5216447901186357, 0.03136985754883707, 0.36031694614092646, 0.9543977406087589, 0.5391290149024123, 0.33006311698113183, 0.3417991697552833, 0.6053129263578918, 0.15931595597144993, 0.842418988254286, 0.4221938040357015, 0.6842257903309064, 0.8808935064429438, 0.6816878103477814, 0.303122123860729, 0.44302172866938533, 0.4350937243042033, 0.08135722647378293, 0.19697651595559368, 0.48662447262414477, 0.05913958887645487, 0.6115796283217245, 0.6218805564998553, 0.5320756698423627, 0.34896663253806254, 0.7728840335301379, 0.23943003905099092, 0.4592340655093014, 0.847965857250423, 0.5666508194530249, 0.34529670616507324, 0.34024337743725674, 0.5547737097987645, 0.12615374434793902, 0.9720241092086732, 0.17096354452712592, 0.12285193335986061, 0.4872377469954148, 0.6810304819410277, 0.6395415482498733, 0.9877538771495491, 0.9739020800618146, 0.906957103801808, 0.475219031926396, 0.8045663072729657, 0.8311964750008354, 0.8220605487052456, 0.45433006173210483, 0.38804450114702876, 0.18591532225373888, 0.6013456035776169, 0.5902386612564284, 0.4714254755367403, 0.7145871198486826, 0.7905711849408456, 0.5396970153507289, 0.7868086059502695, 0.8382091397585135, 0.12913456183107458, 0.6597758750413981, 0.4203342003080856, 0.47406424765983113, 0.19814952073462747, 0.9571258710554313, 0.46917062170513774, 0.12678471175917497, 0.8707828304273976, 0.4548733834319995, 0.004536614078877677, 0.3635902034254978, 0.8770978999912357, 0.36193690571523335, 0.755640299827464, 0.3023288356923936, 0.8892785746418675, 0.9649701481873704, 0.723507883599412, 0.21558899897653047, 0.7951659818127885, 0.9044950883097932, 0.7112044590009037, 0.05972550878804619, 0.13853930425152008, 0.03408334696804246, 0.23791601752329844, 0.19415743171701816, 0.5735074947243917, 0.12467670212803178, 0.668766288402019, 0.29374618071218495, 0.317751296257717, 0.1753075126431198, 0.29008349449782256, 0.045451053871730075, 0.6151659857801569, 0.9665867831280271, 0.06111179083164283, 0.9597856276841269, 0.27270304078515556, 0.41437337055020895, 0.2878785396333206, 0.4378619665903485, 0.7588945298626673, 0.008019508308760479, 0.05308327666691498, 0.6760109627081038, 0.9626672863823164, 0.690508015205691, 0.03746565969091353, 0.3321056824781876, 0.7606139551166836, 0.3766540404360699, 0.9231393216633335, 0.060790665905520014, 0.5988866629444178, 0.07033914855788102, 0.7078450362638279, 0.40883418579393327, 0.1523143064195613, 0.04247755728928075, 0.23098109214513515, 0.14677100944284066, 0.40821720032126146, 0.9680851466739328, 0.28761063070211634, 0.05889250026877025, 0.23570425772674183, 0.4734279938990939, 0.03542459075876958, 0.330466915938727, 0.14298471345495983, 0.13277352205546858}
  2. IndexOf(true, onboardingRemaining) → onboardingCurrent
  3. Element({cornersGroup, cornersArray, cornersMultiply, cornersNumberLine}, onboardingCurrent) → cornersCurrent
  4. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  5. Element(Remove[{3, 4, 5, 6, 7, 8, 9}, {currentQuotient}], 1 + floor((currentRandomSeeds(2) * 6))) → currentDivisor
  6. Zip(If[A ≟ cDIVIDE, "\div", If[A ≟ cEQUAL, "=", ("" * A)]], A, studentInput) → studentChars
  7. Midpoint(cornersArray(1), cornersArray(3)) → CenterArray
  8. Div(currentDivisor, 5) → numWholeTally
  9. Corner(5) → layoutAppSize
  10. Sequence((A * lineStretchFactor), A, 0, lineLength, jumpSize) → numberPos, {0, 116.66666666666667, 233.33333333333334, 350, 466.6666666666667, 583.3333333333334, 700}
  11. Rotate(PolyLine[AnchorNumberLine + (-6, 10), AnchorNumberLine + (0, 4), AnchorNumberLine + (6, 10)], ((-2 * pi)) / 8, AnchorNumberLine + (0, 4)) → endArrowTemplate
  12. Sequence(AnchorNumberLine + (((jumpSize * lineStretchFactor) * (A + 0.5)), (((-cos((2 * pi / 8))) * jumpSize) * lineStretchFactor / 2)), A, 0, currentQuotient - 1) → arcCenter
  13. Sequence(Text[("" * (A * currentDivisor)), AnchorNumberLine + (numberPos(A + 1), 0), true, true, 0, -1], A, 0, currentQuotient) → xLbls
  14. Reverse(Zip[CircleArc[A, AnchorNumberLine + (B, 0), AnchorNumberLine + (C, 0)], A, arcCenter, B, Take[numberPos, 2], C, numberPos]) → allArcs
  15. Reverse(Zip[Text[("-" * currentDivisor), A + (0, (lineStretchFactor * ((0.5 * arcRadius) + 1.3))), true, true, 0, 0], A, arcCenter]) → textSubtract
  16. RemoveUndefined(Flatten[Sequence[Sequence[If[(groupColSize * j) + i ≤ currentQuotient, ((i * 20), ((-j) * 20))], i, 1, groupColSize], j, 0, groupRows - 1]]) → fullGroupTemplate
  17. Sequence(AnchorGroups + ((i * 80), 0), i, 0, 8) → groupingAnchors
  18. PixelsToPoint(Corner[1], Corner[3], Corner[5], (startButtonX + 160, startButtonY - 10)) → PxRightDisplay
  19. PixelsToPoint(Corner[1], Corner[3], Corner[5], (startButtonX + 10, startButtonY - 48)) → PxLeftDisplay
  20. Polygon({-5, 0}) → regionAnchor
  21. Segment(AnchorNumberLine + (-1, 0), AnchorNumberLine + ((lineLength * lineStretchFactor) + lineStretchFactor, 0)) → numberLine
  22. Zip(Segment[AnchorNumberLine + (A, 5), AnchorNumberLine + (A, -5)], A, numberPos) → numberTicks
  23. Sequence(allArcs(A), A, 1, animateNumberLine) → displayArcs, {}
  24. Reverse(Sequence[Translate[endArrowTemplate, (numberPos(A), 0)], A, 0, Length[numberPos] - 1]) → allArrows
  25. Sequence(allArrows(A), A, 1, animateNumberLine) → displayArrows, {}
  26. Sequence(Sequence[CenterArray + arrayOffset + ((30 * i), (20 * j)), i, 0, currentDivisor - 1], j, 0, currentQuotient - 1) → arrayAllPoints, {{(175.5, 235.5), (205.5, 235.5), (235.5, 235.5)}, {(175.5, 255.5), (205.5, 255.5), (235.5, 255.5)}, {(175.5, 275.5), (205.5, 275.5), (235.5, 275.5)}, {(175.5, 295.5), (205.5, 295.5), (235.5, 295.5)}, {(175.5, 315.5), (205.5, 315.5), (235.5, 315.5)}, {(175.5, 335.5), (205.5, 335.5), (235.5, 335.5)}}
  27. Flatten(Zip[Sequence[Translate[A, groupingAnchors(B)], B, 1, currentDivisor], A, fullGroupTemplate]) → groupedModel
  28. Polygon(cornersNumberLine) → boxNumberline
  29. Polygon(cornersArray) → boxArray
  30. Polygon(cornersGroup) → boxGroup
  31. Polygon(cornersMultiply) → boxMultiply
  32. Text("\textbf{Multiplication}", Midpoint[cornersMultiply(1), cornersMultiply(3)], true, true, 0, 0) → msgClickMultiply
  33. Take(textSubtract, 1, animateNumberLine) → displayTextSubtract
  34. Polygon(cornersCurrent) → pulsingBox
  35. Take(fullGroupTemplate, 1, animateGroup) → partialGroupTemplate
  36. Zip(Translate[partialGroupTemplate, A], A, Take[groupingAnchors, 1, currentDivisor]) → displayGroup
  37. Midpoint(cornersArray(1), cornersMultiply(3)) → PCenter
  38. Polygon(cornersTitle) → boxTitleBackground
  39. Polygon(cornersTitle) → boxTitle
  40. Text((((("\(" * currentDividend) * "\div") * currentDivisor) * "=\fbox{\phantom{2}}\)"), PCenter + (0, -15), true, true, 0, 0) → titleLine2
  41. Text("\text{Ways to Divide}", PCenter + (0, 35), true, true, 0, 0) → titleLine1
  42. Text((("\textbf{\(" * currentDivisor) * "\) Equal Groups}"), Midpoint[cornersGroup(1), cornersGroup(3)], true, true, 0, 0) → msgClickGroup
  43. Text((("\textbf{Groups of \(" * currentDivisor) * "\)}"), Midpoint[cornersArray(1), cornersArray(3)], true, true, 0, 0) → msgClickArray
  44. Text("\textbf{Number line model}", Midpoint[cornersNumberLine(1), cornersNumberLine(3)], true, true, 0, 0) → msgClickNumberLine
  45. Text((((((((("\(" * currentDividend) * "\div") * currentDivisor) * "=\Box\\\textsf\scalebox{0.85}{is the same as}\\") * currentDivisor) * "\times\Box=") * currentDividend) * "\)"), Midpoint[cornersMultiply(1), cornersMultiply(3)], true, true, 0, 0) → textMultiply
  46. Zip(A, A, Take[arrayAllPoints, 1, floor(animateArray)]) → displayArray
  47. Text((((((("\(" * (animateArray * currentDivisor)) * "\div") * currentDivisor) * "=") * animateArray) * "\)"), cornersArray(4), true, true, -1, 1) → arrayCounter
  48. Text((((((("\(" * (animateGroup * currentDivisor)) * "\div") * currentDivisor) * "=") * animateGroup) * "\)"), cornersGroup(4), true, true, -1, 1) → groupCounter

AI Drawing Prompt Reference

Describe a graphic showing three division models: equal sharing, repeated subtraction, and array grouping. Include a number line with labels showing the quotient, an array of rectangles representing grouping, a rectangle representing repeated subtraction, and a multiplication model showing the relationship. Add text labels such as "Multiplication Model", "Equal Groups", "Array Groups", and "Number Line Model". Construction order: randomly generate a division problem, then draw the number line, array, rectangle, and multiplication model, followed by adding labels and text. The graphic helps students understand the connection between division and multiplication.
The prompt above was compiled from the original drawing commands and is for reference only.