真分数乘法化简的可视化演示

真分数乘法化简的可视化演示
几何画板及绘图内容加载中,请稍等……
2017-03-02 23:24
① This example visually demonstrates the multiplication of two proper fractions using a rectangular area model, showing how the product is simplified to its lowest terms. ② Core math concepts include fraction multiplication, simplification (greatest common factor), area models, and factorization. ③ Construction highlights: GeoGebra commands such as RemoveUndefined, Sequence, Flatten, Point, Polygon, Intersection, Element, Remove, Textfield, IndexOf, and Take are used to build interactive grids and rectangles; objects like Dfactors, Nfactors, productRectangles, and groupedProductDots help visualize the grouping and cancellation of common factors. ④ Suitable for upper elementary to middle school students learning fraction operations, and useful for teachers in classroom demonstrations or for student-led exploration.

GeoGebra 命令及参数

  1. RemoveUndefined(Sequence[If[pD / i ≟ floor(pD / i), i], i, 1, pD]) → Dfactors
  2. Sequence(Sequence[Polygon[(i, j), (i + 1 / D1, j), (i + 1 / D1, j + 1 / D2), (i, j + 1 / D2)], i, 0, 1 - 1 / D1, 1 / D1], j, 0, 1 - 1 / D2, 1 / D2) → altSmallRectangles
  3. Flatten(Sequence[If[i / 2 ≟ floor(i / 2), Reverse[Element[altSmallRectangles, i]], Element[altSmallRectangles, i]], i, 1, Length[altSmallRectangles]]) → reversedSmallRectangles
  4. Point({1 - mover, 0}) → f2Point
  5. Point({-1 + mover, 0}) → f1Point
  6. Polygon(f1Point, f1Point + (f1, 0), f1Point + (f1, 1), f1Point + (0, 1)) → f1poly, f1point, n, p, q
  7. Polygon(f2Point, E, G, H) → poly3, f2point, e, g_1, h_1
  8. RemoveUndefined(Sequence[If[pN / i ≟ floor(pN / i), i], i, 1, pN]) → Nfactors
  9. Intersection(Nfactors, Dfactors) → factors
  10. RemoveUndefined(Sequence[If[IsInRegion[Centroid[Element[reversedSmallRectangles, i]], poly3], Element[reversedSmallRectangles, i]], i, 1, Length[reversedSmallRectangles]]) → productRectangles
  11. Sequence(Take[productRectangles, i, i + Element[factors, simplify] - 1], i, 1, Length[productRectangles], Element[factors, simplify]) → groupedProduct
  12. Sequence(Flatten[Sequence[Sequence[Vertex[Element[groupedProduct, i, j], k], k, 1, 4], j, 1, Element[factors, simplify]]], i, 1, Length[groupedProduct]) → groupedProductDots
  13. Sequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (-1 / D1, -1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productDownLeft
  14. Sequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (-1 / D1, 1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productUpLeft
  15. Sequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (1 / D1, 1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productUpRight
  16. Sequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (1 / D1, -1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productDownRight
  17. Sequence(Sequence[If[Element[productUpRight, i, j], If[Element[productUpLeft, i, j], If[Element[productDownRight, i, j], If[Element[productDownLeft, i, j], true, false]]]], j, 1, Length[Element[groupedProductDots, i]]], i, 1, Length[groupedProductDots]) → productRemoveDeciders
  18. Sequence(Sequence[If[Element[productRemoveDeciders, i, j], Element[groupedProductDots, i, j]], j, 1, Length[Element[groupedProductDots, i]]], i, 1, Length[groupedProductDots]) → productRemoveMe
  19. Sequence(Sort[Remove[Unique[Element[groupedProductDots, i]], Element[productRemoveMe, i]]], i, 1, Length[groupedProductDots]) → betterProductDots
  20. Element(betterProductDots, c) → list1
  21. Remove(Flatten[Sequence[If[Mod[i, 2] ≠ Mod[N2, 2], Reverse[Element[altSmallRectangles, i]], Element[altSmallRectangles, i]], i, 1, Length[altSmallRectangles]]], productRectangles) → outsideRectangles
  22. Sequence(Take[outsideRectangles, i, i + Element[factors, simplify] - 1], i, 1, Length[outsideRectangles], Element[factors, simplify]) → groupedOutside
  23. Sequence(Flatten[Sequence[Sequence[Vertex[Element[groupedOutside, i, j], k], k, 1, 4], j, 1, Element[factors, simplify]]], i, 1, Length[groupedOutside]) → groupedOutsideDots
  24. Sequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (1 / D1, 1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → upRight
  25. Sequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (-1 / D1, 1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → upLeft
  26. Sequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (-1 / D1, -1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → downLeft
  27. Sequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (1 / D1, -1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → downRight
  28. Sequence(Sequence[If[Element[upRight, i, j], If[Element[upLeft, i, j], If[Element[downRight, i, j], If[Element[downLeft, i, j], true, false]]]], j, 1, Length[Element[groupedOutsideDots, i]]], i, 1, Length[groupedOutsideDots]) → removeDeciders
  29. Sequence(Sequence[If[Element[removeDeciders, i, j], Element[groupedOutsideDots, i, j]], j, 1, Length[Element[groupedOutsideDots, i]]], i, 1, Length[groupedOutsideDots]) → removeMe
  30. Textfield(f1Text) → InputBox1
  31. Textfield(f2Text) → InputBox2
  32. IndexOf(47, TextToUnicode[f1Text]) → slash1
  33. IndexOf(47, TextToUnicode[f2Text]) → slash2
  34. Take(f1Text, slash1 + 1) → D1Text
  35. Polygon(f1Point, f1Point + (1, 0), 4) → poly1, f, g, h, i, A, B
  36. Polygon(f2Point, f2Point + (1, 0), 4) → poly2, j, k, l, m, C, D
  37. Take(f2Text, slash2 + 1) → D2Text
  38. Sequence(Segment[f1Point + (i / D1, 0), f1Point + (i / D1, 1)], i, 1, D1 - 1) → f1Bars
  39. Sequence(Segment[f2Point + (0, i / D2), f2Point + (1, i / D2)], i, 1, D2 - 1) → f2Bars
  40. Polygon(f2Point, f2Point + (0, f2), f2Point + (1, f2), f2Point + (1, 0)) → f2poly, r, s, t, a
  41. Sequence(Sort[Remove[Unique[Element[groupedOutsideDots, i]], Element[removeMe, i]]], i, 1, Length[groupedOutsideDots]) → betterOutsideDots
  42. Sequence(Sum[Element[groupedOutsideDots, i]] / Length[Element[groupedOutsideDots, i]], i, 1, Length[groupedOutsideDots]) → outsideRemoveThese
  43. Sequence(IsInteger[((Perimeter[TravelingSalesman[Element[betterProductDots, i]]] * D1) * D2)], i, 1, Length[betterProductDots]) → productDrawThese
  44. Sequence(IsInteger[((Perimeter[TravelingSalesman[Element[betterOutsideDots, i]]] * D1) * D2)], i, 1, Length[betterOutsideDots]) → outsideDrawThese
  45. Sequence(TravelingSalesman[Element[betterOutsideDots, i]], i, 1, Length[betterOutsideDots]) → outsideSimplified
  46. Element(betterOutsideDots, c) → list2
  47. Sequence(Sum[Element[betterProductDots, i]] / Length[Element[betterProductDots, i]], i, 1, Length[betterProductDots]) → productCenters
  48. Sequence(Sequence[Angle[Element[betterProductDots, i, j] - Element[productCenters, i]], j, 1, Length[Element[betterProductDots, i]]], i, 1, Length[betterProductDots]) → productAnglers
  49. Sequence(Sort[Element[betterProductDots, i], Element[productAnglers, i]], i, 1, Length[betterProductDots]) → sortedProduct
  50. Sequence(Polygon[Element[sortedProduct, i]], i, 1, Length[sortedProduct]) → productSimplified
  51. Sequence(Sum[Element[betterOutsideDots, i]] / Length[Element[betterOutsideDots, i]], i, 1, Length[betterOutsideDots]) → outsideCenters