单摆测重力加速度
用长度和时间测量重力,用残差和摆角理解模型。
改变摆长、重复计时,将周期平方与有效摆长联系起来,求出重力加速度。再从小角度近似走向非线性单摆,观察摆幅如何改变周期与测量结果。
进入虚拟实验 · 读实验报告 · 浏览器交互 · Python 笔记本 · Wolfram 笔记本
图 1 从摆长与计时读数到重力加速度
选择你的入口
| 用途 | 入口 | 打开方式 |
|---|---|---|
| 操作装置、计时、拟合并导出自己的记录 | 单摆虚拟实验 | 浏览器实时运行;模型与文献依据 |
| 阅读原理、测量记录和实验结论 | 完整实验报告 · 排版阅读版 | GitHub、Markdown 阅读器或本地浏览器 |
| 筛选数据、改变摆角、播放运动 | HTML 交互阅读版 | 直接在线打开,也可下载到本机 |
| 逐步运行和修改 Python 计算 | Jupyter Notebook | JupyterLab 或 VS Code |
| 进行符号推导与原生交互计算 | Wolfram Notebook · Paclet 安装包 | Wolfram 前端 |
| 对照原始实验报告 | 源报告 PDF | GitHub 或 PDF 阅读器 |
从一组读数开始
实验记录包含 6 组摆长、每组 3 次计时,每次计时对应 20 次全振动;摆球直径另有 6 次测量。
取平均直径 $\bar d$ 和平均计时 $\bar t$,得到有效摆长与周期:
$$ L'=L+\frac{\bar d}{2},\qquad T=\frac{\bar t}{20}. $$
小角度条件下,周期平方与有效摆长呈线性关系。用含截距模型拟合:
$$ T^2=kL'+b,\qquad g=\frac{4\pi^2}{k}. $$
表 1 两种数据处理方法得到的重力加速度
| 处理方法 | $g/(\mathrm{m}/\mathrm{s}^2)$ | 计算入口 |
|---|---|---|
| 各组计算后取算术平均 | 9.797523 | 报告:逐组计算 |
| 含截距线性拟合 | 9.735218 | 报告:数据处理 |
两种方法对截距项和误差结构的处理不同。对照拟合曲线、残差及测量条件,可以进一步理解结果的差异。
让拟合与残差一起说话

图 2 周期平方与有效摆长的含截距线性拟合及残差;误差条表示重复计时传播得到的 A 类标准不确定度
Notebook 中可以选择重复计时、暂不纳入某组数据,观察拟合参数与残差如何响应。完整数据表、不确定度定义及结果讨论见实验报告。
把摆角放大,观察近似何时发生偏离
理想无阻尼单摆满足
$$ \ddot\theta+\frac{g}{L'}\sin\theta=0. $$
运动示例取有效摆长 $L'=1\ \mathrm m$、初始摆角 $20^\circ$、初始角速度为零,观察 10 s 内的运动;重力参数采用实验拟合值。摆角扫描从 $1^\circ$ 延伸至 $60^\circ$,比较非线性周期与小角度近似。
|
|
|
图 3 摆角与角速度 比较运动波形与随时间累积的相位差。 |
图 4 初始摆角扫描 连接周期增量与重力估计偏差。 |
四个交互探索
| 操作 | 观察什么 |
|---|---|
| 筛选重复计时 | 均值、周期与重复性分量的变化 |
| 调整参与拟合的数据组 | 斜率、截距、重力估计和残差的变化 |
| 改变摆长与初始摆角,播放或拖动时间 | 摆球运动、摆角与角速度的对应关系 |
| 在摆角扫描中移动滑块 | 小角度近似的周期偏差及其对重力估计的影响 |
在 HTML 中直接操作已有控件;在 Jupyter 或 Wolfram 中运行全部单元,可继续修改计算参数与模型。
在本机打开
安装步骤见使用指南。在仓库根目录启动本实验的 Jupyter Notebook:
.\.venv\Scripts\python.exe -m jupyterlab experiments/course-01/pendulum/notebooks/analysis.ipynb
Wolfram 可安装本实验的独立 Paclet,再通过包入口打开 Notebook。将下面的仓库路径改为本机路径:
PacletInstall["D:/general-physics-lab/notebook/paclets/PendulumLab/dist/PendulumLab-0.1.0.paclet"];
Needs["PendulumLab`"];
PendulumLab`PLOpenNotebook[]
数据与计算实现
| 内容 | 文件 |
|---|---|
| 摆长与重复计时 | measurements.csv |
| 摆球直径 | diameters.csv |
| 单位、分析参数与模型条件 | experiment.json |
| Python 计算模块 | pendulum.py |
| Wolfram 包实现 | PendulumLab.wl |

