圆周上“排斥粒子”最佳相对位置的优化演示

圆周上“排斥粒子”最佳相对位置的优化演示
几何画板及绘图内容加载中,请稍等……
2021-02-09 21:27
该范例展示:在圆周上给定一组彼此“排斥”的粒子时,如何通过改变相对角度与位置,使目标函数达到最优,从而可视化最优排布对应的几何结构。核心数学概念包括:圆周几何与弧长/弦关系、向量与角度参数化、求和/距离或势能类目标函数的构造、以及将优化问题转化为可计算的参数搜索或约束最优。作图要点来自构造摘要的 GeoGebra 命令与对象:使用Text、LaTeX进行公式与标注;用Circle定义基准圆;用Textfield与InputBox1/2/3提供可调参数与交互输入;用Sequence生成粒子在圆上的离散点(对象如p1、n及序列变量);用Segment连接关键点并结合Length计算相互距离(对象如Wi_P、Wii_P、r、l1c/l2与F_o等);通过RotateText、UnicodeToLetter等完成方向/角度标注的排版;使用Sum(以及命名的Sum_{max}、txt_pmax等)对目标量进行累加并输出结果表述。适合高中至大学早期的几何建模、数理优化与可视化教学,也可用于微积分/微分方程或数值优化的课堂演示与项目学习。

GeoGebra 命令及参数

  1. Text("" + Sum_{max}) → txt_pmax
  2. Text("" + Um1) → txt_p
  3. Sum(Flatten[Sequence[Append[Sequence[Element[txt_pmax, i], i, m1(k), m2(k)], " "], k, 1, 5]]) → txtUm1max
  4. Sum(Flatten[Sequence[Append[Sequence[Element[txt_p, i], i, m1(k), m2(k)], " "], k, 1, 5]]) → txtUm1
  5. Circle((0, 0), R) → p1
  6. Textfield(n) → InputBox1
  7. Sequence(Point[p1, random()], i, 1, n) → l2
  8. Textfield(i0) → InputBox2
  9. Textfield(R) → InputBox3
  10. Zip(ScientificText[a, 3], a, Wii_Pc) → l1c
  11. Zip(ScientificText[a, 3], a, Wii_P) → ll1
  12. TableText(Append["i", 1…n], Append[" \fgcolor{orange}{GM :Δφ_i}, rad", ll1], Append["\fgcolor{magenta}{GC :Δφ_i} , rad", l1c], "v") → text23
  13. LaTeX(Um0) → lll0
  14. LaTeX(Um1) → lll1
  15. TableText(ltxt0, ltxt1, "v") → textltxt01
  16. UnicodeToLetter(34) → u34
  17. Textfield(gg) → InputBox4
  18. Sequence(Text["" + (i), Wi_Pc1(i) + (0.25, 0.25), true, true], i, 1, n) → l4b
  19. Segment(R1q, R2q) → jq
  20. Segment(R0q, R01q) → hq
  21. Segment(R0, R01) → h
  22. Segment(R1, R2) → j
  23. RotateText(text15, 90°) → text16
  24. Text(("\underline{accuracy}= " * ScientificText[c, 3]) + "\\\;\;\;\;\;↘ up\; to\; 10^{-15} ", C, true, true) → text8
  25. Textfield(j01) → InputBox5
  26. Sequence(Text["" + (i), Wi_Pc2(i) + (0.25, 0.25), true, true], i, 1, n) → l4a
  27. Sequence(Sequence[Segment[Element[lP, k], Element[lP, t]], t, k + 1, n], k, 1, n - 1) → l1
  28. Zip(Ray[(0, 0), a], a, lP) → l3
  29. Zip(Vector[a, a + (1.5 * UnitVector[b])], a, lP, b, Wi_P) → lVectorGM
  30. Zip(Vector[a, a + (1.7 * UnitVector[b])], a, lP, b, Wi_Pc2) → lVectorGC
  31. Zip(Vector[x0, x0 + UnitVector[x0]], x0, lP) → lVectorP
  32. Zip(Text[" ∇f _{" + (a) + "}", b, true, true], a, 1…n, b, (-(0.25, 0.25)) + lP + lVectorGM) → lGM
  33. Zip(Text[" ∇f_q _{" + (a) + "}", b, true, true], a, 1…n, b, (0.25, 0.25) + lP + lVectorGC) → lGC
  34. Zip(Text[" ∇g _{" + (a) + "}", b, true, true], a, 1…n, b, lP + lVectorP) → lPV
  35. Sequence(((Angle[Wi_Pc2(k)] / (180°) * π), (n / 2 * Sum[Zip[Segment[a, Wi_Pc2(k)]^(2), a, lP \ {lP(k)}]] / ((((0.5 * n) * (n - 1)) * R)) / Sumq_{max})), k, 1, n) → Lrq
  36. Segment((0, y(Aa)), ((2 * π), y(Aa))) → seg
  37. Sequence(((Angle[lP(k)] / (180°) * π), ((n / 2 * Sum[Zip[Segment[a, lP(k)], a, lP \ {lP(k)}]] / ((((0.5 * n) * (n - 1)) * R)) / Sum_{max}) * 0.8)), k, 1, n) → Lr
  38. Length(lP) → lä

AI 绘图提示语参考

在一个圆上放置若干个粒子,粒子位置由角度参数化。粒子之间存在排斥力,目标函数是所有成对距离的求和。通过调整参数,可以改变粒子的分布,直到找到使目标函数最优的配置。图形包括圆、粒子点、成对距离线段、目标函数值标注等。构造顺序:先画圆,然后生成粒子点,计算成对距离,求和得到目标函数值,并标注。
以上提示语为根据原始绘图命令整理而来,仅供参考。