使用模型进行减法运算的探索

使用模型进行减法运算的探索
几何画板及绘图内容加载中,请稍等……
2023-06-26 05:40
这个范例通过虚拟十进制块可视化减法运算,帮助学生理解减法中的借位概念。核心数学概念包括两位数和三位数的减法运算,以及借位规则。作图要点包括使用GeoGebra命令如RandomUniform、Take、Flatten、Sequence、TableText等来动态展示减法过程。适合小学四年级到五年级的学生,用于数与运算的教学和练习。

GeoGebra 命令及参数

  1. RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.5906110323826387, 0.7268080374522716, 0.9118709155069585, 0.41451620065255607, 0.2029124621893124, 0.20099460133452454, 0.039512456433051645, 0.9366424573364799, 0.005443811026513574, 0.8841095329425244, 0.0622292325219573, 0.9505876951206025, 0.9103636841153411, 0.30686535727297215, 0.17934520755763977, 0.008786771617779156, 0.6665336091838664, 0.2477791316087306, 0.5672546434554852, 0.05827575401366608, 0.6432132755151814, 0.6417480155756566, 0.9586718306589629, 0.6319580632234549, 0.34995359595505127, 0.2554711160205048, 0.01758582844139282, 0.9436547896099483, 0.3012014135137204, 0.6197919355569738, 0.027550544607891924, 0.07171534231399412, 0.4844719825128846, 0.2199242593818139, 0.6992509442554742, 0.08357236010481385, 0.5947243387299566, 0.04635042997587192, 0.9100342356061775, 0.45716942703668395, 0.15479142533658363, 0.5019447425846038, 0.10328075876122708, 0.7346726042459282, 0.26237152389056534, 0.8545756148415754, 0.8991116285837103, 0.02929691816031092, 0.22817883927855834, 0.08907946598518555, 0.8099916406942561, 0.7474361451356991, 0.4073807008184468, 0.5580744212143193, 0.045283146764376996, 0.5855791816811685, 0.7474156180473288, 0.5875967671267206, 0.6777428906534005, 0.4147287962056228, 0.19969048706092166, 0.4409933352740622, 0.21232611676233018, 0.7442085931121704, 0.7204975110182437, 0.17289197237936524, 0.7434734781885358, 0.10185093398638433, 0.1277700768194435, 0.2743989350450953, 0.051303921249931286, 0.33860428610275245, 0.7750141760834934, 0.8909346240716955, 0.17982235368191637, 0.2225800403280334, 0.5219059956081146, 0.1053213401089486, 0.9013739557132049, 0.9104794894516411, 0.48263795987216496, 0.4808748774696457, 0.3711376285713273, 0.5331984926002564, 0.14812536117464575, 0.21232776808678505, 0.2634489101992408, 0.3872027320405448, 0.22665162263276126, 0.5264262115956458, 0.8181786672186397, 0.9139986250822033, 0.9094355099656283, 0.46899349862555567, 0.23026613668240953, 0.07669496287047152, 0.9029446845022044, 0.6211413950385858, 0.5188163913481142, 0.11525759001245102, 0.1885594980544305, 0.6041373870365785, 0.09391976309924858, 0.7806049763698527, 0.9324080883255239, 0.9501991974228037, 0.8995360395120632, 0.08217381285024515, 0.1338473284375126, 0.12518898491035027, 0.019410381063559436, 0.7140051680279507, 0.21015690738276852, 0.29881888357569814, 0.6800471588069104, 0.9507576070989755, 0.07754246524999679, 0.8785547122753187, 0.3502667691575514, 0.2473499146337571, 0.07451065304192554, 0.5049197081473977, 0.030805860537259103, 0.7641677948755503, 0.8930834941823592, 0.6183498952139547, 0.16979439767375076, 0.9139386263020863, 0.5061610213355061, 0.9011425436110574, 0.9407534163239005, 0.346486817439801, 0.8456203790079607, 0.8523644159229216, 0.9690056266440742, 0.23362578669529319, 0.9654567588728524, 0.1988509700383363, 0.8600764402595459, 0.15842633676515536, 0.357425225135805, 0.011628383446564378, 0.7297859373466693, 0.9810201982720398, 0.6332350961538609, 0.7442288046810577, 0.690293065531578, 0.9569554951934933, 0.6873769927221677, 0.657445992506782, 0.6093511902637462, 0.3139154318003273, 0.008129908141038646, 0.4240915103947274, 0.9214698079099953, 0.5283442251873862, 0.5812002399052042, 0.2872636024786896, 0.12955031606567452, 0.6551939403766803, 0.1207856739757746, 0.3165283797980887, 0.5538739154518104, 0.7916135918207666, 0.1466370805335619, 0.8882404916020484, 0.5820684694749446, 0.31894662328253603, 0.8229075358411615, 0.98899301534121, 0.8188658156832515, 0.2168853313629093, 0.665232518089929, 0.3648882373410539, 0.9680849566962954, 0.32905060233879, 0.8465766837548219, 0.19395896529591353, 0.12133631946560752, 0.21062312180237944, 0.189912362308768, 0.49464696407628445, 0.7384409146340812, 0.7659467379269319, 0.5967610048664085, 0.009757984208515657, 0.5334933624557894, 0.9072572397166687, 0.8650340303345876, 0.972764814725517, 0.08787123698505554, 0.8148597137223978, 0.9674506002230482, 0.041717770452611554, 0.877302965495666, 0.6641852499752987, 0.5930892692702819, 0.8353485112973998, 0.6843556737951144, 0.10620232794969511}
  2. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  3. Flatten(Sequence[Sequence[AnchorUnits + (3.5, 0) + (((i * 0.2) * blockWidth), ((j * 0.2) * blockWidth)), i, 0, 2], j, 0, 2]) → unitAnchors
  4. Sequence(AnchorHundreds + (1, 0) + (((i * 1.2) * blockWidth), 0), i, 2, 0, -1) → hundredAnchors
  5. TableText({"\textcolor{#0F8538}{Hundreds}", "\textcolor{#5145A8}{Tens}", "\textcolor{#C75000}{Ones}"}, {"\hspace{250px}", "\hspace{55px}", "\hspace{105px}"}, "c") → backTable
  6. Element(Sequence[0, numHundredsA - 1], indexHundredsB) → numHundredsB
  7. Max(numTensTemp1, numTensTemp2) → numTensB
  8. If(numTensTemp1 ≟ numTensTemp2, numTensTemp1 - 1, Min[numTensTemp1, numTensTemp2]) → numTensA
  9. Sequence(AnchorTens + (1, 0) + ((((A - 1) * 2) * blockWidth / 10), 0), A, 1, 9) → tensAnchors
  10. Sequence(cornerBox[blockWidth, blockWidth, hundredAnchors(A) + num2Offset], A, 1, numHundredsB) → hundredsB
  11. Sequence(cornerBox[blockWidth / 10, blockWidth / 10, unitAnchors(A)], A, 1, numUnitsA) → unitsA
  12. Sequence(cornerBox[blockWidth / 10, blockWidth / 10, unitAnchors(A) + num2Offset], A, 1, numUnitsB) → unitsB
  13. Polygon({AnchorHundreds + (0, -13), AnchorTens + (0, -13), AnchorTens + (0, 23), AnchorHundreds + (0, 23)}) → hundredsBackground
  14. Polygon({AnchorTens + (0, -13), AnchorUnits + (0, -13), AnchorUnits + (0, 23), AnchorTens + (0, 23)}) → tensBackground
  15. Polygon({AnchorUnits + (0, -13), AnchorUnits + (9.4, -13), AnchorUnits + (9.4, 23), AnchorUnits + (0, 23)}) → unitsBackground
  16. If(numUnitsA ≥ numUnitsB, numTensA, numTensA - 1) → numTensAfterCarry
  17. Sequence(tensAnchors(1) + ((2 * (i - 1)), If[numTensA ≟ 0, 0, 11.2]), i, 1, 10) → borrowAnchorTens
  18. Sequence(Vector[AnchorTens + (A - 1, 11), borrowAnchorTens(A)], A, 1, 10) → vMoveBorrowHundreds
  19. If(animateBorrowHundredControl < 1, animateBorrowHundredControl, 1) → animateBorrowHundredA
  20. Sequence(cornerBox[blockWidth / 10, blockWidth, tensAnchors(A) + num2Offset], A, 1, numTensB) → tensB
  21. If(numTensA ≥ numTensB, numHundredsA, numHundredsA - 1) → numHundredsAfterCarry
  22. Sequence(cornerBox[blockWidth, blockWidth, hundredAnchors(A)], A, 1, If[animateBorrowHundredA > 0, numHundredsAfterCarry, numHundredsA]) → hundredsA
  23. Segment((-0.3, -0.3), (1.3, 1.3)) → slashUnit
  24. If(animateSubtractUnitsControl < 1, animateSubtractUnitsControl, 1) → animateCancelUnits
  25. If(borrowTens, Join[{Take[tensAnchors, 1, numTensA + If[borrowUnits, -1, 0]], borrowAnchorTens}], tensAnchors) → tensAnchorCurrent
  26. Sequence(AnchorUnits + (1, ((1.5 * A) * blockWidth / 10)), A, 0, 9) → borrowAnchorUnits
  27. Sequence(Vector[AnchorUnits + (0, A - 1), borrowAnchorUnits(A)], A, 1, 10) → vMoveBorrowTens
  28. If(borrowUnits, Join[{Take[unitAnchors, 1, numUnitsA], borrowAnchorUnits}], Reverse[Take[unitAnchors, 1, numUnitsA]]) → unitsAnchorCurrent
  29. Sequence(Translate[slashUnit, unitAnchors(A) + num2Offset], A, 1, Min[(animateCancelUnits * 10), numUnitsB]) → slashUnitsB
  30. If(animateSubtractUnitsControl < 1, 0, animateSubtractUnitsControl - 1) → animateShowUnitAnswer
  31. Translate(unitAnchors, Vector[(2 * num2Offset)]) → unitAnchorsSoln
  32. Translate(tensAnchors, Vector[(2 * num2Offset)]) → tenAnchorsSoln
  33. Translate(hundredAnchors, Vector[(2 * num2Offset)]) → hundredsAnchorsSoln
  34. If(borrowUnits, Take[unitsAnchorCurrent, numUnitsB + 1, numUnitsSoln + numUnitsB], Reverse[Take[unitsAnchorCurrent, numUnitsB + 1, numUnitsSoln + numUnitsB]]) → moveUnitsStart
  35. Zip(cornerBox[blockWidth / 10, blockWidth / 10, A + (animateShowUnitAnswer * (B - A))], A, moveUnitsStart, B, unitAnchorsSoln) → movingSolnUnits
  36. Take(tensAnchorCurrent, numTensB + 1, numTensSoln + numTensB) → movingTensStart
  37. Max(0, animateSubtractTensControl - 1) → animateShowTensAnswer
  38. Zip(cornerBox[blockWidth / 10, blockWidth, A + (animateShowTensAnswer * (B - A))], A, movingTensStart, B, tenAnchorsSoln) → movingSolnTens
  39. If(animateSubtractHundredsControl < 1, 0, animateSubtractHundredsControl - 1) → animateShowHundredsAnswer
  40. Take(hundredAnchors, 1, numHundredsSoln) → movingHundredsStart
  41. Zip(cornerBox[blockWidth, blockWidth, A + (animateShowHundredsAnswer * (B - A))], B, hundredsAnchorsSoln, A, movingHundredsStart) → movingSolnHundreds
  42. Min(animateSubtractTensControl, 1) → animateCancelTen
  43. Max(0, animateSubtractHundredsControl - 1) → animateCancelHundred
  44. Segment((-0.4, -0.4), (1.4, 10.4)) → slashTen
  45. Segment((-0.5, -0.5), (10.5, 10.5)) → slashHundredTemplate
  46. Sequence(Translate[slashTen, tensAnchors(A) + num2Offset], A, 1, Min[(animateCancelTen * 10), numTensB]) → slashTensB
  47. Sequence(Translate[slashTen, tensAnchorCurrent(A)], A, 1, Min[(animateCancelTen * 10), numTensB]) → slashTens
  48. If(animateBorrowTenControl < 1, animateBorrowTenControl, 1) → animateBorrowTenA
  49. Translate(cornerBox[blockWidth / 10, blockWidth, tensAnchors(numTensA)], (animateBorrowTenA * (AnchorUnits - tensAnchors(numTensA)))) → borrowTenA
  50. If(animateBorrowTenControl < 1, 0, animateBorrowTenControl - 1) → animateBorrowTenB
  51. Zip(cornerBox[blockWidth / 10, blockWidth / 10, AnchorUnits + (0, B) + (animateBorrowTenB * A)], Vector[A], vMoveBorrowTens, B, Sequence[K, K, 0, 9]) → borrowTenB
  52. If(animateBorrowTenControl ≟ 0, numTensA, numTensAfterCarry) → numTensCurrent
  53. Sequence(cornerBox[blockWidth / 10, blockWidth, tensAnchors(A)], A, 1, numTensCurrent) → tensA
  54. cornerBox(blockWidth, blockWidth, hundredAnchors(numHundredsA) + (animateBorrowHundredA * (AnchorTens + (0, 11) - hundredAnchors(numHundredsA)))) → borrowHundredA
  55. Max(0, animateBorrowHundredControl - 1) → animateBorrowHundredB
  56. Sequence(cornerBox[blockWidth / 10, blockWidth, AnchorTens + (A - 1, 11) + (animateBorrowHundredB * vMoveBorrowHundreds(A))], A, 1, 10) → borrowHundredB
  57. Translate(slashHundredTemplate, hundredAnchors(If[borrowTens, numHundredsA - 1, numHundredsA])) → slashHundredsA
  58. Segment((68, -13), (100, -13)) → lineDisplay
  59. Translate(slashHundredTemplate, hundredAnchors(numHundredsB) + num2Offset) → slashHundredsB
  60. Flatten(Sequence[Sequence[Anchor + (i, (-j)), i, 0, 27, 8], j, 0, 12, 12]) → digitAnchors
  61. Zip(Text[A, B, false, true, 1, 0], A, {"", If[numHundredsA ≟ 0, "", ("" * numHundredsA)], ("" * numTensA), ("" * numUnitsA), "\minus", If[numHundredsB > 0, ("" * numHundredsB), ""], ("" * numTensB), ("" * numUnitsB)}, B, Flatten[digitAnchors]) → digitsLatex
  62. Min(floor((animateCancelUnits * 10)), numUnitsB) → numSlashes
  63. Sequence(Translate[slashUnit, unitsAnchorCurrent(A)], A, 1, numSlashes) → slashUnits
  64. Flatten({hundredsA, hundredsB}) → frameHundreds
  65. Flatten({unitsA, unitsB}) → frameUnits
  66. Flatten({tensA, tensB}) → frameTens
  67. Segment((0, -1), (x(Vertex[unitsBackground, 2]), -1)) → divisionLine
  68. Text((("\textcolor{#5145A8}{" * numTensSoln) * "}"), digitAnchors(7) + (0, -15), false, true, 1, 0) → digitTensAnswer
  69. Text(("" * numUnitsSoln), digitAnchors(8) + (0, -15), false, true, 1, 0) → digitUnitsAnswer
  70. Text(("" * numHundredsSoln), digitAnchors(6) + (0, -15), false, true, 1, 0) → digitHundredsAnswer

AI 绘图提示语参考

展示两位数和三位数减法带借位的可视化模型,使用虚拟的百位、十位和个位方块。背景分为百位、十位和个位区域,每个区域有对应的方块。当个位不够减时,从十位借位,十位不够时从百位借位,通过箭头和移动的方块展示借位过程。最终显示减法结果,包括百位、十位和个位方块,以及中间的减号和等号。
以上提示语为根据原始绘图命令整理而来,仅供参考。