Dividing Fractions

Dividing Fractions
Loading the math board and drawing, please wait…
2022-12-23 12:00
This example demonstrates how to perform fraction division, especially with unlike denominators, using GeoGebra. Through commands like RandomUniform, Take, If, PrimeFactors, GCD, Text, TextToUnicode, CountIf, Zip, Textfield, Polygon, Corner, Flatten, Sequence, Mod, Translate, Length, First, PartitionPoint, students can understand the principles of fraction division. Suitable for 4th to 5th grade students for practice.

GeoGebra Commands & Parameters

  1. RandomUniform(0, 0.99, 200) → allRandoms, {0.2641672330294202, 0.5771217701168445, 0.7713426996768162, 0.12466409521532323, 0.9805709227149851, 0.513429117972684, 0.26509914662538225, 0.5510645083180115, 0.1960542177321791, 0.4064259136601884, 0.4385879710320415, 0.8005125009836908, 0.7079312495007495, 0.3443283948513142, 0.516299876868448, 0.7921221784608996, 0.059325325066750575, 0.2686705055935912, 0.30354686513260687, 0.5207102611026377, 0.5674191604433858, 0.39687523971144373, 0.39939814617871316, 0.4471197290733726, 0.8168278338282713, 0.26664272810559103, 0.47163518147245564, 0.0187593425864648, 0.7080462795725838, 0.9144681075734733, 0.32767660801471354, 0.6700694484470828, 0.16915629226795423, 0.1300066127890218, 0.7278752520669621, 0.39499713542645937, 0.37314691667070266, 0.4908445460494482, 0.06097857522094599, 0.4743752753665196, 0.02331048094177369, 0.22851471909952806, 0.02586924006831273, 0.5003469204194116, 0.14522096534582468, 0.9563113854533588, 0.02896685240351268, 0.7976631533311919, 0.7457837153908824, 0.3626140506125784, 0.852872897930659, 0.3278044848030568, 0.5677658844266223, 0.5300214926248208, 0.8189791224411063, 0.8864375083261401, 0.9520740097482704, 0.14062625645075166, 0.6548368608890324, 0.9177155688765247, 0.1798400569592478, 0.95122721881875, 0.9560970606283208, 0.40036849828250015, 0.05211016873757255, 0.04918154935082413, 0.2727830567771379, 0.4403990517541617, 0.20659957398794648, 0.0999397168119656, 0.28054650115780294, 0.09351461229713724, 0.028584952978718128, 0.5910860115626191, 0.18938271048595864, 0.2271702422595861, 0.6265507595278268, 0.2749242354511057, 0.6350456155320581, 0.11728543740279597, 0.20268743669885297, 0.08230222899830467, 0.18210394452455125, 0.11831919048441787, 0.3037606535612083, 0.1744609134683093, 0.7722183612267549, 0.1874492373424522, 0.7692270346865956, 0.8572226519093379, 0.40679568264328375, 0.36409874744621046, 0.26076745229476483, 0.2528006718398864, 0.4596905658804555, 0.16498994723314772, 0.440641074177587, 0.218915497116467, 0.20307493597154558, 0.8322766614036646, 0.505433277406455, 0.882746073189943, 0.2979855881613974, 0.8381184129748627, 0.5168782188596754, 0.1385228777369055, 0.07038518915242835, 0.40330709473431176, 0.8724813399041301, 0.7222866516252157, 0.8438368542015848, 0.9802424424093321, 0.22564998211336415, 0.6554909533058699, 0.6310924717293966, 0.6716755327615296, 0.7479598186922879, 0.9507186773920497, 0.9190345131678783, 0.8662004897082867, 0.10504246702613819, 0.5878114838175247, 0.564486795387072, 0.49947216601701033, 0.7123745120927875, 0.4971785868270106, 0.1824232822020228, 0.8965634146027522, 0.747980474407329, 0.6989547797365463, 0.69305574145517, 0.8857484328048, 0.47573245702272277, 0.3020203149068305, 0.40016873167537964, 0.06730939609550832, 0.31553624173540434, 0.7556736454115189, 0.8598977686365921, 0.2627113241081677, 0.5952388912464858, 0.24896573874095393, 0.09690919163142205, 0.25967622836216825, 0.4135750649054635, 0.9683579317615617, 0.24364203274478455, 0.17730992379925317, 0.8638894067297014, 0.37345825540621574, 0.2879105229856867, 0.7924960711069069, 0.474729645272561, 0.7331194210606679, 0.12474229578744431, 0.9742695016720081, 0.3856998391617848, 0.3801490343902821, 0.6298407942108183, 0.5968171254887685, 0.635195967064251, 0.7122868588451757, 0.44451175306205504, 0.01412697578772166, 0.6408158080594786, 0.6599454885985239, 0.22528214395677482, 0.870117005465513, 0.6733422304867572, 0.6774904648368916, 0.5557662597113623, 0.25732329031196516, 0.22124434187699576, 0.324552072148715, 0.7335971727528967, 0.32491243056850283, 0.6446233579312435, 0.6370162025999921, 0.9514430435668898, 0.6629066949819653, 0.8554493918940063, 0.8939326169848579, 0.7782666205405971, 0.14407004683596467, 0.18479352061394233, 0.14660882265301103, 0.03506186202729255, 0.4879022142206246, 0.03755400123045731, 0.7596242353977052, 0.5883160788674899, 0.36262289127700575, 0.6309081040214667, 0.850403848112918, 0.04439630201386007, 0.3209013289165719, 0.27439067459684763, 0.4443322438937494, 0.41894835434629163, 0.33339734347409117}
  2. Take(allRandoms, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  3. If(testMode, testDen1, 3 + floor((currentRandomSeeds(1) * 7))) → randD1
  4. PrimeFactors(randD1) → factRandD1
  5. If(testMode, testDen2, countQuestion ≟ 0, randD2Start, 3 + floor((currentRandomSeeds(2) * 7)) ≟ randD1, randD1 - 1, 3 + floor((currentRandomSeeds(2) * 7))) → randD2
  6. PrimeFactors(randD2) → factRandD2
  7. If(randN2Start > randD2, {randD2 - 1}, PrimeFactors[randN2Start]) → randN2List
  8. If(Length[Remove[randN2List, factRandD2]] > 0, Remove[randN2List, factRandD2], {1}) → randN2Final
  9. If(testMode, testNum2, Sum[randN2Final]) → randN2
  10. If(randN1Start > randD1, {randD1 - 1}, PrimeFactors[randN1Start]) → randN1List
  11. If(Length[Remove[randN1List, factRandD1]] > 0, Remove[randN1List, factRandD1], {1}) → randN1Final
  12. If(testMode, testNum1, Sum[randN1Final]) → randN1
  13. GCD({solutionList(1), solutionList(2)}) → gcfSolution
  14. Text(input1, false) → textInput
  15. TextToUnicode(stringA) → studentChars
  16. CountIf(n ≟ 47, n, studentChars) → divCountInput
  17. TextToUnicode(" 0123456789./()") → validChars
  18. Zip(UnicodeToLetter[n], n, TextToUnicode[textInput]) → listInput
  19. Textfield(input1) → InputBox1
  20. Polygon(Zip[PixelsToPoint[Corner[1], Corner[3], Corner[5], A], A, {(pixelsLeft, pixelsTop), (pixelsLeft, y(Corner[5]) - pixelsBottom), Corner[5] - (pixelsRight, pixelsBottom), (x(Corner[5]) - pixelsRight, pixelsTop)}]) → borderBox
  21. Corner(5) → layoutAppSize
  22. Corner(5) → Dims
  23. Flatten(Sequence[Sequence[Point[{Start3 + ((i * 5 / randD1), (j * 5 / randD2))}], i, 0, randD1 - 1], j, 0, randD2 - 1]) → modelAnimationPoints1
  24. Flatten(Sequence[Sequence[Point[{Start1 + ((i * 5 / randD1), (j * 5 / randD2))}], i, 0, randN1 - 1], j, 0, randD2 - 1]) → modelAnimationPoints2
  25. Zip(Distance[a, b], a, modelAnimationPoints1, b, modelAnimationPoints2) → modelAnimationDistance
  26. Sequence(Sum[First[modelAnimationDistance, n]] + animation2End, n, 1, Length[modelAnimationDistance]) → modelNumRangeSequence, {82.5, 98.83524648659389, 116.64987842528717}
  27. If(0 ≤ animationSlider < animation1bEnd, 0, animationSlider < animation1bEnd + animation2Range, animationSlider - animation1bEnd, animation2Range) → animation2Slider
  28. Polygon({Start1, Start1 + (((randN1 * 5)) / randD1, 0), Start1 + (((randN1 * 5)) / randD1, 5), Start1 + (0, 5)}) → frac1
  29. Sequence(Segment[Start2 + (0, (i * 5 / randD2)), Start2 + (5, (i * 5 / randD2))], i, 0, randD2 - 1) → modelParts2
  30. Sequence(Segment[Start1 + ((i * 5 / randD1), 0), Start1 + ((i * 5 / randD1), 5)], i, 0, randD1 - 1) → modelParts1
  31. Polygon({Start1, Start1 + (5, 0), Start1 + (5, 5), Start1 + (0, 5)}) → model1
  32. Polygon({Start2, Start2 + (5, 0), Start2 + (5, 5), Start2 + (0, 5)}) → model2
  33. Polygon({Start2, Start2 + (0, (randN2 * 5 / randD2)), Start2 + (5, (randN2 * 5 / randD2)), Start2 + (5, 0)}) → frac2
  34. Mod(solutionFinal(1), solutionFinal(2)) → numPartAnswer
  35. Translate(modelParts1, Vector[Start1, Start2]) → modelCommonParts1
  36. Translate(modelParts2, Vector[Start2, Start1]) → modelCommonParts2
  37. Flatten(Sequence[Sequence[Polygon[{Start1 + ((i * 5 / randD1), (j * 5 / randD2)), Start1 + (((i + 1) * 5 / randD1), (j * 5 / randD2)), Start1 + (((i + 1) * 5 / randD1), ((j + 1) * 5 / randD2)), Start1 + ((i * 5 / randD1), ((j + 1) * 5 / randD2))}], i, 0, randN1 - 1], j, 0, randD2 - 1]) → modelAnimation1
  38. Length(modelAnimationPoints2) → numMax
  39. Sequence(If[a > 1, If[0 ≤ animationSlider ≤ modelNumRangeSequence(a - 1), 0, animationSlider < modelNumRangeSequence(a), animationSlider - modelNumRangeSequence(a - 1), modelAnimationDistance(a)], If[0 ≤ animationSlider ≤ animation2End + animation1bRange, 0, animationSlider < modelNumRangeSequence(a), animationSlider - (animation2End + animation1bRange), modelAnimationDistance(a)]], a, 1, Length[modelNumRangeSequence]) → modelNumAnimationSequence
  40. Zip(PartitionPoint[b, a, c, d], a, modelAnimationPoints1, b, modelAnimationPoints2, c, modelNumAnimationSequence, d, modelAnimationDistance) → modelAnimationPoints3
  41. Zip(Vector[a, b], a, modelAnimationPoints2, b, modelAnimationPoints3) → modelAnimationVectors
  42. First(modelAnimation1, numMax) → modelAnimationStart
  43. Zip(Translate[a, Vector[b]], a, modelAnimation1, Vector[b], modelAnimationVectors) → modelAnimationMove
  44. CountIf(n > 0, n, modelNumAnimationSequence) → total
  45. PartitionPoint(Start2, Start3, animation2Slider, animation2Range) → PointAnimation2Move
  46. Sequence(Segment[Start2 + ((i * 5 / randD1), 0), Start2 + ((i * 5 / randD1), (5 * randN2 / randD2))], i, 0, randD1) → modelParts1b
  47. If(animationSlider < animation1bRange, animationSlider, animation1bRange) → animation1aSlider
  48. PartitionPoint(Start1, Start2, animation1aSlider, animation1bRange) → PointAnimation1aMove
  49. Translate(modelParts1, Vector[Start1, PointAnimation1aMove]) → modelAnimationParts1
  50. Zip(Vector[b, a], a, modelAnimationPoints1, b, modelAnimationPoints2) → translationVectorRanges
  51. Flatten({animation1bRange, animation2Range, modelNumRangeSequence}) → modelAllRanges
  52. If(abs(animationSlider - animationRange) > 0.01, total - 1, total) → totalReduced
  53. If(showCD, animation1bRange, 0) → animationSliderStart
  54. If(0 ≤ animationSlider < animation1bRange, 0, animationSlider < (animation1bRange * 2), animationSlider - animation1bRange, animation1bRange) → animation1bSlider
  55. PartitionPoint(Start2, Start1, animation1bSlider, animation1bRange) → PointAnimation1bMove
  56. Translate(modelParts2, Vector[Start2, PointAnimation1bMove]) → modelAnimationParts2
  57. Sequence(Segment[Start2 + (0, (i * 5 / randD2)), Start2 + (5, (i * 5 / randD2))], i, 0, randN2) → modelParts2b
  58. Translate({modelParts2b, modelParts1b}, Vector[Start2, PointAnimation2Move]) → modelParts2'
  59. If(showhint, If[showhinttypicalerror, 42 + 8 + 24 + 16 + 32, 42 + 8 + 24], 0) → yAddHint

AI Drawing Prompt Reference

Create a practice-style fraction-division scene with two adjacent 5×5 grid square containers. Use the grids to represent two fractions: highlight the cells corresponding to the first fraction’s numerator within its left container and highlight the cells corresponding to the second fraction’s numerator within its right container. Show a step-by-step sliding/transformation process where the grid is partitioned into small rectangular segments, and these segments move and overlap between the two containers to form a new combined subdivision that reflects the division setup. Keep a text input area and a visible result/result-placeholder region in the composition so students can enter values and read the outcome.
The prompt above was compiled from the original drawing commands and is for reference only.