Writing Equivalent Fractions Using a Visual Model

Writing Equivalent Fractions Using a Visual Model
Loading the math board and drawing, please wait…
2023-09-28 02:56
This GeoGebra lesson uses a visual partition model to help students write equivalent fractions with a different denominator. It demonstrates how the same total amount can be represented by different equal shares, focusing on equal fractions, relationships between halves/fourths/eighths and thirds/sixths, and the idea of composing or decomposing fractional parts to build equivalences. The construction is driven by randomly generated numerator/denominator parameters and validity checks (RandomUniform, Take, Element, Mod, If, RemoveUndefined) and supports interactive student input and answer validation (Textfield, inputOK/inputSaved, studentAnswer, enableBtnValidate). Visually, it builds and labels the model using geometric elements and text/LaTeX rendering (CircleArc, Polygon, Rotate, Translate, Split, TextToUnicode, LaTeX, PointToPixels) and animates or reveals partial vs. full unit representations (animateNumer, animateStudent, showhint/showsolution). Best suited for Grades 4–5 for practicing “use models to write equivalent fractions.”

GeoGebra Commands & Parameters

  1. RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.17974004018571862, 0.024508932089415437, 0.44242052420323336, 0.15091281912768453, 0.2106682121266081, 0.6913173313371165, 0.37705582549361044, 0.8889536832264192, 0.47062835979326045, 0.8179160857280386, 0.6041698416686374, 0.33857267288959497, 0.8880389985591565, 0.704190363813229, 0.9159535534605943, 0.8688779654387159, 0.33520196666307955, 0.38893540099715745, 0.5408809329383841, 0.10210516021779112, 0.44135410149546184, 0.5052481051159169, 0.7005048558001792, 0.9373951413181137, 0.7791610032765989, 0.1698433918594705, 0.7957911419510416, 0.024440309995123678, 0.7700460737329563, 0.3780041723239429, 0.2566212479571363, 0.7811248211977124, 0.05326895685966367, 0.01062908343859731, 0.7524586439666985, 0.8926338254160215, 0.020376461437383638, 0.8392862846596528, 0.38872708625533375, 0.7825443735404926, 0.2805459368892761, 0.02931188746450613, 0.5221888679014497, 0.5291348773632844, 0.5334246808903582, 0.009810153902707647, 0.9895392136980694, 0.06256218894095153, 0.2943404000405486, 0.28291834609654726, 0.24654805683152767, 0.15065532075297536, 0.4922171566534184, 0.2928927234853512, 0.6003829809265485, 0.8428610117065043, 0.6631774351232047, 0.2584529459182551, 0.8252377366090778, 0.78335224781294, 0.8126446142596825, 0.24939004842029097, 0.36106823709672425, 0.275471986143332, 0.5957824913567739, 0.43069987457902553, 0.4271031286121307, 0.2105339961862672, 0.6603164568827186, 0.2744463658330293, 0.3958488301141626, 0.634540673197527, 0.3271783896190442, 0.4611907079706652, 0.19954935770758864, 0.1866010611325028, 0.7630003477520532, 0.4391398474037436, 0.6894886577815387, 0.7027455591829455, 0.06425462541018886, 0.740174716012046, 0.16913854308230722, 0.23843262717999436, 0.2757957138587617, 0.787611133549987, 0.9349582002303891, 0.7323303196226925, 0.676707105586195, 0.36092732813547374, 0.23364136485847, 0.16292980707450982, 0.9236892410880416, 0.7677608118781155, 0.021784685832851945, 0.14821063285041597, 0.6767466563812087, 0.703232716316599, 0.6033167326017949, 0.9069262960014326, 0.7136412312197833, 0.6611012242554599, 0.041579238255107495, 0.07811662199646567, 0.11847514549952873, 0.2903766784599847, 0.2566924921681163, 0.6931776248156535, 0.3458508540536639, 0.20484915596311015, 0.13476479856676152, 0.2722315651075238, 0.5153271206084468, 0.49148538905019706, 0.14362108466379847, 0.3336398013932779, 0.16134898069790982, 0.7368448871703038, 0.4000279119052628, 0.02228812167448159, 0.021475947158092337, 0.308546399034551, 0.2958834848974863, 0.23874832468525437, 0.3605670664666672, 0.6113838725233696, 0.6955179291991309, 0.06758297347978738, 0.20060242899630057, 0.3149472969498082, 0.05311467662799364, 0.5889085154846122, 0.6450302309716643, 0.611546639731338, 0.19831720764609725, 0.7428705158248339, 0.3629245627812956, 0.41986852390007984, 0.9593242206441547, 0.5419080083419908, 0.6318232915200225, 0.6911132540779966, 0.8662055727830161, 0.7805970207499178, 0.24888693336151815, 0.14036580603075552, 0.252785416391905, 0.5174625920516209, 0.6579780965579207, 0.31664785860567335, 0.3732423824331841, 0.43743567964902297, 0.4054080692020239, 0.410478453695243, 0.739566428782549, 0.9576059849798187, 0.8594304358271065, 0.07783965902875466, 0.9281900528299796, 0.9825839542680347, 0.7380840363684646, 0.26419930813055575, 0.7184767407520588, 0.11913474003423043, 0.6166951911451756, 0.5016858852504459, 0.2423019225097508, 0.7527838426426546, 0.9402472318665824, 0.7866423266759152, 0.14270254661583082, 0.631819197469252, 0.706907982348389, 0.19360291413890696, 0.4604984396661335, 0.10652612753696086, 0.807278116394772, 0.2652438160087239, 0.0509044246605182, 0.1535912893938989, 0.849381935427575, 0.6260514911203884, 0.8274546149434033, 0.13739944259719966, 0.6720689136923127, 0.36033300201300933, 0.26805054258970257, 0.11142019531437436, 0.42932782001981035, 0.3927618885699845, 0.4976225852156198, 0.0540454229357734, 0.46503742222494043, 0.7919081744130131, 0.6237593317270814, 0.43408685173162653, 0.5318860578931571, 0.604144872172955, 0.5257124737396354, 0.3616802664108506}
  2. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  3. RemoveUndefined(Sequence[If[GCD[A, denom] < denom, A], A, 1, (denom * 5)]) → validNumers
  4. Element(validNumers, 1 + floor((currentRandomSeeds(2) * Length[validNumers]))) → numer
  5. If(showsolution, (numer * factor), lastNumer) → rightNumer
  6. If(showsolution, (denom * factor), lastDenom) → rightDenom
  7. Textfield(studentAnswer) → inputA
  8. Mod(animateNumer, rightDenom) → rightNumerPartial
  9. Mod(numer, denom) → numerPartial
  10. If(numerPartial ≟ 0, Max[numer / denom, 1], numModelFullUnits + 1) → numModelTotalUnits
  11. If(rightNumerPartial ≟ 0, Max[animateNumer / rightDenom, 1], numRightFullUnits + 1) → numRightTotalUnits
  12. If(Defined[animateStudent], Max[1 - Max[animateStudent, 0] / (numer / denom), -1], 0) → currentPosition
  13. Rotate(PCenter + (armRadius, 0), (currentPosition * pi / 10), PCenter) → PRightRotate
  14. If(showBalance, AnchorMoveRight, (3, -1)) → AnchorRight
  15. LaTeX(("" * inputA)) → inputFormatted
  16. TextToUnicode(inputFormatted) → inputUnicode
  17. If(showBalance, AnchorMoveLeft, AnchorA) → AnchorModel
  18. Rotate(PCenter + (armRadius, 0), ((-pi)) / 10, PCenter) → PLowRight
  19. Rotate(PCenter + (armRadius, 0), pi / 10, PCenter) → PHighRight
  20. CircleArc(PCenter, PLowRight, PHighRight) → movePath
  21. Polygon({(0, 0), (boxWidth, 0), (boxWidth, boxHeight), (0, boxHeight)}) → modelTemplate
  22. Sequence(AnchorModel + (((boxWidth + gap) * A), 0), A, 0, numModelTotalUnits - 1) → modelAnchors
  23. Sequence(Segment[AnchorModel + (0, A), AnchorModel + (boxWidth, A)], A, 0, boxHeight, boxHeight / denom) → modelSubDivisionTemplate
  24. Translate(Polygon[{(0, 0), (boxWidth, 0), (boxWidth, (numerPartial / denom * boxHeight)), (0, (numerPartial / denom * boxHeight))}], modelAnchors(-1)) → modelFillPartial
  25. PointToPixels(PLeftRotate, Corner[1], Corner[3], Corner[5]) → PLeftPX
  26. PointToPixels(PRightRotate, Corner[1], Corner[3], Corner[5]) → PRightPX
  27. PointToPixels(PCenter, Corner[1], Corner[3], Corner[5]) → PCenterPX
  28. Take(modelAnchors, 1, Length[modelAnchors] - 1) → unitAnchors
  29. ReplaceAll(LaTeX[("" * inputFormatted)], "frac", "") → inputNoFrac
  30. Split(("" * inputA), {"/"}) → inputValues
  31. Zip(Translate[modelSubDivisionTemplate, A - AnchorModel], A, modelAnchors) → modelSubDivisions
  32. Zip(Translate[modelTemplate, A], A, Take[modelAnchors, 1, Length[modelAnchors] - 1]) → modelFillUnits
  33. Zip(Translate[modelTemplate, A], A, modelAnchors) → allModelOutlines
  34. Sequence(AnchorRight + (((boxWidth + gap) * A), 0), A, 0, numRightTotalUnits - 1) → rightAnchors
  35. Zip(Translate[modelTemplate, A], A, rightAnchors) → allRightOutlines
  36. Sequence(Segment[AnchorRight + (0, A), AnchorRight + (boxWidth, A)], A, 0, boxHeight, boxHeight / If[rightDenom > 0, rightDenom, 1]) → rightSubDivisionTemplate
  37. Zip(Translate[rightSubDivisionTemplate, A - AnchorRight], A, rightAnchors) → rightSubDivisions
  38. If(studentDenom ≠ denom ∧ currentPosition ≟ 0 ∧ showBalance, {0 / 255, 132 / 255, 117 / 255}, {218 / 255, 37 / 255, 112 / 255}) → fillColor
  39. Zip(Translate[modelTemplate, A], A, Take[rightAnchors, 1, numRightFullUnits]) → rightFillUnits
  40. Translate(Polygon[{(0, 0), (boxWidth, 0), (boxWidth, (rightNumerPartial / rightDenom * boxHeight)), (0, (rightNumerPartial / rightDenom * boxHeight))}], rightAnchors(-1)) → rightPartialFill
  41. If(validate ∧ correct ∧ showsolution, {0, 132 / 255, 117 / 255}, {218 / 255, 37 / 255, 112 / 255}) → animateColor
  42. LaTeX(("" * inputString)) → testInput
  43. If(Defined[rightNumer], rightNumer, 0) → maxSlider

AI Drawing Prompt Reference

Draw a visual model for teaching equivalent fractions: two rectangles of equal height placed side by side. The left rectangle is divided into a certain number of equal parts (e.g., 4), with some parts shaded to represent a fraction (e.g., 2/4). The right rectangle is divided into a different number of equal parts (e.g., 8), with the shaded area representing the equivalent fraction (e.g., 4/8). Label each rectangle with its fraction. Include a text input field for the student to enter the equivalent fraction, and optionally a button to check or reveal the answer. Use distinct colors for shaded and unshaded regions.
The prompt above was compiled from the original drawing commands and is for reference only.