欧几里得算法可视化 by David Wees

欧几里得算法可视化 by David Wees
几何画板及绘图内容加载中,请稍等……
2019-10-24 03:04
①本范例演示欧几里得算法的执行过程与几何表示;②涉及核心数学概念包括整除、数列、差值与斜率;③作图要点:使用Min、Polygon、Midpoint、If等GeoGebra命令和对象a、b、A、scale、D、B、C等构建算法的几何模型;④适合高中数学教学,用于帮助学生直观理解算法原理与几何意义。

GeoGebra 命令及参数

  1. Min(5 / a, 5 / b) → scale
  2. Polygon(C, D, B, A) → q1, c, d, b_1, a_1
  3. Midpoint(C, A) → E
  4. Midpoint(B, A) → F
  5. Min(a, b) → s1
  6. If(a > b, (floor(a / s1) * s1), 0) → ss2a
  7. If(b > a, (floor(b / s1) * s1), 0) → ss2b
  8. If(a > b, a - s2, (s2 * ns2)) → ss3a
  9. If(b > a, b - s2, (s2 * ns2)) → ss3b
  10. If(b > a, Min[a - (s2 * ns2), s2], Min[b - (s2 * ns2), s2]) → s3
  11. If(b > a, (s1 * ns1) + (s3 * ns3), (s2 * ns2)) → ss4b
  12. If(b > a, (s2 * ns2), (s1 * ns1) + (s3 * ns3)) → ss4a
  13. If(b > a, (s2 * ns2) + (s4 * ns4), (s1 * ns1) + (s3 * ns3)) → ss5a
  14. If(b > a, (s1 * ns1) + (s3 * ns3), (s2 * ns2) + (s4 * ns4)) → ss5b
  15. If(b > a, (s2 * ns2) + (s4 * ns4), (s1 * ns1) + (s3 * ns3) + (s5 * ns5)) → ss6a
  16. If(b > a, (s1 * ns1) + (s3 * ns3) + (s5 * ns5), (s2 * ns2) + (s4 * ns4)) → ss6b
  17. If(b ≥ a, Sequence[Polygon[((m * scale), (ss4b * scale)), ((m * scale) + (s4 * scale), (ss4b * scale)), 4], m, ss4a, (s4 * (ns4 - 1)) + ss4a, s4], Sequence[Polygon[((ss4a * scale), (m * scale)), ((ss4a * scale) + (s4 * scale), (m * scale)), 4], m, ss4b, (s4 * (ns4 - 1)) + ss4b, s4]) → sequence4
  18. If(b ≥ a, Sequence[Polygon[((ss5a * scale), (m * scale)), ((ss5a * scale) + (s5 * scale), (m * scale)), 4], m, ss5b, (s5 * (ns5 - 1)) + ss5b, s5], Sequence[Polygon[((m * scale), (ss5b * scale)), ((m * scale) + (s5 * scale), (ss5b * scale)), 4], m, ss5a, (s5 * (ns5 - 1)) + ss5a, s5]) → sequence5
  19. If(b ≥ a, Sequence[Polygon[(0, (m * scale)), ((s1 * scale), (m * scale)), 4], m, 0, (s1 * (ns1 - 1)), s1], Sequence[Polygon[((m * scale) + (s1 * scale), 0), ((m * scale) + (s1 * scale), (s1 * scale)), 4], m, 0, (s1 * (ns1 - 1)), s1]) → sequence1
  20. If(b ≥ a, Sequence[Polygon[((m * scale), (ss2b * scale)), ((m * scale) + (s2 * scale), (ss2b * scale)), 4], m, 0, (s2 * (ns2 - 1)), s2], Sequence[Polygon[((ss2a * scale), (m * scale)), ((ss2a * scale) + (s2 * scale), (m * scale)), 4], m, 0, (s2 * (ns2 - 1)), s2]) → sequence2
  21. If(b ≥ a, Sequence[Polygon[((ss3a * scale), (m * scale)), ((ss3a * scale) + (s3 * scale), (m * scale)), 4], m, ss3b, (s3 * (ns3 - 1)) + ss3b, s3], Sequence[Polygon[((m * scale), (ss3b * scale)), ((m * scale) + (s3 * scale), (ss3b * scale)), 4], m, ss3a, (s3 * (ns3 - 1)) + ss3a, s3]) → sequence3
  22. If(b > a, (s2 * ns2) + (s4 * ns4) + (s6 * ns6), (s1 * ns1) + (s3 * ns3) + (s5 * ns5)) → ss7a
  23. If(b > a, (s1 * ns1) + (s3 * ns3) + (s5 * ns5), (s2 * ns2) + (s4 * ns4) + (s6 * ns6)) → ss7b
  24. If(b ≥ a, Sequence[Polygon[((ss7a * scale), (m * scale)), ((ss7a * scale) + (s7 * scale), (m * scale)), 4], m, ss7b, (s7 * (ns7 - 1)) + ss7b, s7], Sequence[Polygon[((m * scale), (ss7b * scale)), ((m * scale) + (s7 * scale), (ss7b * scale)), 4], m, ss7a, (s7 * (ns7 - 1)) + ss7a, s7]) → sequence7
  25. If(b ≥ a, Sequence[Polygon[((m * scale), (ss6b * scale)), ((m * scale) + (s6 * scale), (ss6b * scale)), 4], m, ss6a, (s6 * (ns6 - 1)) + ss6a, s6], Sequence[Polygon[((ss6a * scale), (m * scale)), ((ss6a * scale) + (s6 * scale), (m * scale)), 4], m, ss6b, (s6 * (ns6 - 1)) + ss6b, s6]) → sequence6

AI 绘图提示语参考

绘制一个用于可视化欧几里得算法的几何图形。首先确定两个正整数作为边长,并设定一个缩放比例。构造一个矩形,其边长对应这两个数。在矩形内部,根据两数的大小关系,用一系列小正方形或矩形块填充,这些块的大小依次对应辗转相除过程中得到的余数序列。每个块沿水平或垂直方向排列,形成阶梯状或网格状图案,直观展示除法与取余的迭代过程。整体图形由多个嵌套或并排的矩形区域组成,颜色或边界可区分不同步骤,帮助理解最大公约数的计算原理。
以上提示语为根据原始绘图命令整理而来,仅供参考。