真分数乘法化简的可视化演示
几何画板及绘图内容加载中,请稍等……
① 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 命令及参数
RemoveUndefined(Sequence[If[pD / i ≟ floor(pD / i), i], i, 1, pD]) → DfactorsSequence(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) → altSmallRectanglesFlatten(Sequence[If[i / 2 ≟ floor(i / 2), Reverse[Element[altSmallRectangles, i]], Element[altSmallRectangles, i]], i, 1, Length[altSmallRectangles]]) → reversedSmallRectanglesPoint({1 - mover, 0}) → f2PointPoint({-1 + mover, 0}) → f1PointPolygon(f1Point, f1Point + (f1, 0), f1Point + (f1, 1), f1Point + (0, 1)) → f1poly, f1point, n, p, qPolygon(f2Point, E, G, H) → poly3, f2point, e, g_1, h_1RemoveUndefined(Sequence[If[pN / i ≟ floor(pN / i), i], i, 1, pN]) → NfactorsIntersection(Nfactors, Dfactors) → factorsRemoveUndefined(Sequence[If[IsInRegion[Centroid[Element[reversedSmallRectangles, i]], poly3], Element[reversedSmallRectangles, i]], i, 1, Length[reversedSmallRectangles]]) → productRectanglesSequence(Take[productRectangles, i, i + Element[factors, simplify] - 1], i, 1, Length[productRectangles], Element[factors, simplify]) → groupedProductSequence(Flatten[Sequence[Sequence[Vertex[Element[groupedProduct, i, j], k], k, 1, 4], j, 1, Element[factors, simplify]]], i, 1, Length[groupedProduct]) → groupedProductDotsSequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (-1 / D1, -1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productDownLeftSequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (-1 / D1, 1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productUpLeftSequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (1 / D1, 1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productUpRightSequence(Sequence[Defined[IndexOf[Element[groupedProductDots, j, i] + (1 / D1, -1 / D2), Element[groupedProductDots, j]]], i, 1, Length[Element[groupedProductDots, j]]], j, 1, Length[groupedProductDots]) → productDownRightSequence(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]) → productRemoveDecidersSequence(Sequence[If[Element[productRemoveDeciders, i, j], Element[groupedProductDots, i, j]], j, 1, Length[Element[groupedProductDots, i]]], i, 1, Length[groupedProductDots]) → productRemoveMeSequence(Sort[Remove[Unique[Element[groupedProductDots, i]], Element[productRemoveMe, i]]], i, 1, Length[groupedProductDots]) → betterProductDotsElement(betterProductDots, c) → list1Remove(Flatten[Sequence[If[Mod[i, 2] ≠ Mod[N2, 2], Reverse[Element[altSmallRectangles, i]], Element[altSmallRectangles, i]], i, 1, Length[altSmallRectangles]]], productRectangles) → outsideRectanglesSequence(Take[outsideRectangles, i, i + Element[factors, simplify] - 1], i, 1, Length[outsideRectangles], Element[factors, simplify]) → groupedOutsideSequence(Flatten[Sequence[Sequence[Vertex[Element[groupedOutside, i, j], k], k, 1, 4], j, 1, Element[factors, simplify]]], i, 1, Length[groupedOutside]) → groupedOutsideDotsSequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (1 / D1, 1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → upRightSequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (-1 / D1, 1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → upLeftSequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (-1 / D1, -1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → downLeftSequence(Sequence[Defined[IndexOf[Element[groupedOutsideDots, j, i] + (1 / D1, -1 / D2), Element[groupedOutsideDots, j]]], i, 1, Length[Element[groupedOutsideDots, j]]], j, 1, Length[groupedOutsideDots]) → downRightSequence(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]) → removeDecidersSequence(Sequence[If[Element[removeDeciders, i, j], Element[groupedOutsideDots, i, j]], j, 1, Length[Element[groupedOutsideDots, i]]], i, 1, Length[groupedOutsideDots]) → removeMeTextfield(f1Text) → InputBox1Textfield(f2Text) → InputBox2IndexOf(47, TextToUnicode[f1Text]) → slash1IndexOf(47, TextToUnicode[f2Text]) → slash2Take(f1Text, slash1 + 1) → D1TextPolygon(f1Point, f1Point + (1, 0), 4) → poly1, f, g, h, i, A, BPolygon(f2Point, f2Point + (1, 0), 4) → poly2, j, k, l, m, C, DTake(f2Text, slash2 + 1) → D2TextSequence(Segment[f1Point + (i / D1, 0), f1Point + (i / D1, 1)], i, 1, D1 - 1) → f1BarsSequence(Segment[f2Point + (0, i / D2), f2Point + (1, i / D2)], i, 1, D2 - 1) → f2BarsPolygon(f2Point, f2Point + (0, f2), f2Point + (1, f2), f2Point + (1, 0)) → f2poly, r, s, t, aSequence(Sort[Remove[Unique[Element[groupedOutsideDots, i]], Element[removeMe, i]]], i, 1, Length[groupedOutsideDots]) → betterOutsideDotsSequence(Sum[Element[groupedOutsideDots, i]] / Length[Element[groupedOutsideDots, i]], i, 1, Length[groupedOutsideDots]) → outsideRemoveTheseSequence(IsInteger[((Perimeter[TravelingSalesman[Element[betterProductDots, i]]] * D1) * D2)], i, 1, Length[betterProductDots]) → productDrawTheseSequence(IsInteger[((Perimeter[TravelingSalesman[Element[betterOutsideDots, i]]] * D1) * D2)], i, 1, Length[betterOutsideDots]) → outsideDrawTheseSequence(TravelingSalesman[Element[betterOutsideDots, i]], i, 1, Length[betterOutsideDots]) → outsideSimplifiedElement(betterOutsideDots, c) → list2Sequence(Sum[Element[betterProductDots, i]] / Length[Element[betterProductDots, i]], i, 1, Length[betterProductDots]) → productCentersSequence(Sequence[Angle[Element[betterProductDots, i, j] - Element[productCenters, i]], j, 1, Length[Element[betterProductDots, i]]], i, 1, Length[betterProductDots]) → productAnglersSequence(Sort[Element[betterProductDots, i], Element[productAnglers, i]], i, 1, Length[betterProductDots]) → sortedProductSequence(Polygon[Element[sortedProduct, i]], i, 1, Length[sortedProduct]) → productSimplifiedSequence(Sum[Element[betterOutsideDots, i]] / Length[Element[betterOutsideDots, i]], i, 1, Length[betterOutsideDots]) → outsideCenters