提示信息

使用 Manim 实现高尔顿板模型

金庸 已关注

高尔顿板(Galton Board)是一种经典的概率和统计学装置,用来展示二项分布和正态分布的概念。我们可以使用 Manim,一个用于数学动画的 Python 库,来创建高尔顿板的模拟动画。

以下是如何在 Manim 中实现基本的高尔顿板模型的示例代码:

首先,确保你已经安装了 Manim。你可以在终端中运行:

  1. pip install manim

接下来,创建一个 Python 文件(例如 galton_board.py)并添加以下代码:

  1. from manim import *
  2. import numpy as np
  3. class GaltonBoard(Scene):
  4. def construct(self):
  5. # Parameters for the Galton Board
  6. rows = 6
  7. ball_radius = 0.1
  8. spacing = 0.5
  9. # Create pegs
  10. for i in range(rows):
  11. for j in range(i+1):
  12. peg = Dot(point=np.array([j - i / 2, -i * spacing, 0]), radius=0.05, color=GRAY)
  13. self.add(peg)
  14. # Create balls
  15. balls = VGroup()
  16. for _ in range(20): # Number of balls
  17. ball = Dot(radius=ball_radius, color=BLUE).move_to([0, 1, 0])
  18. balls.add(ball)
  19. self.play(Create(balls))
  20. # Animate balls falling
  21. for ball in balls:
  22. path_points = [ball.get_center()]
  23. current_x = path_points[0][0]
  24. current_y = path_points[0][1]
  25. for row in range(rows):
  26. current_y -= spacing
  27. # Decide whether to go left or right at each peg
  28. current_x += np.random.choice([-0.5, 0.5])
  29. path_points.append(np.array([current_x, current_y, 0]))
  30. ball_path = VMobject()
  31. ball_path.set_points_as_corners([*path_points])
  32. self.play(MoveAlongPath(ball, ball_path), run_time=2, rate_func=linear)
  33. self.wait()
  34. if __name__ == "__main__":
  35. import os
  36. os.system("manim -pql galton_board.py GaltonBoard")

代码说明:

  1. 参数设置:我们设置了 rows 表示高尔顿板的行数(也对应于高度)。ball_radius 定义了球的半径,spacing 定义了 peg 之间的间距。

  2. 创建 Pegs:我们使用 Dot 类在不同的位置上创建 peg。peg 的位置沿着 x 轴以等间距排列,呈现出一个三角形的分布。

  3. 创建 Balls:生成一定数量的球并堆放在顶部。

  4. 模拟下落:对每个球定义一个路径,随机选择每行是向左还是向右移动。这个过程利用 numpy 的 random.choice 函数生成。

  5. 演示动画:使用 MoveAlongPath 动画函数,通过指定的路径将球移动。

运行代码:

确保你在命令行中执行以下命令来运行这个 Manim 文件:

  1. manim -pql galton_board.py GaltonBoard

这将生成并播放动画。-pql 选项表示使用 "quality" 和 "low" 的设置,适合快速预览。如果你想生成高质量的视频,你可以使用 -pqh

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
金庸 关注 已关注

最近一次登录:2024-11-20 22:25:28   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图