Appearance
实验 02 · Python 与数学最小坡道 — 读懂第4章代码前的最小练习集
本实验为进入第4章独立手写标量自动微分引擎(
Value)和实现有限差分数值对拍(gradcheck)建立稳固的编程与微积分直觉。你可以先在下方免安装的网页交互组件中即时体验核心数学机制,随后在本地运行完整的 36 道自动化判分练习集。
网页即时交互实验:中心差商数值导数与对拍
在微积分理论中,导数定义为极限 gradcheck)普遍采用对称中心差商:
通过在
你可以直接在下方交互实验台中直观验证该物理机制,并在线完成测试用例对拍:
在线实验 02
中心差商数值导数与对拍演练
中心差商 [f(x + h) - f(x - h)] / (2h) 通过在目标点两侧对称采样,让泰勒展开中的二阶误差项相互抵消,达到 O(h²) 极高逼近精度。滑动下方的步长 h,观察割线如何完美收敛于真实切线。
选择测试函数:
解析切线斜率 (真实导数): 12.000000
中心差商割线斜率 (近似导数): 12.000000
解析真实导数 f'(x)12.00000000通过微积分法则直接推导
中心差商数值导数12.00000000 绝对误差: 2.118e-10
前向差商 (单侧采样)12.00006000 绝对误差: 6.000e-5 (比中心差商大 283235 倍)
推荐规格:Google Pro A100 / L4 GPU (或 CPU)
支持一键跳转 Google Colab Pro 运行;本章轻量数学计算 CPU 即可极速完成
💡 运行提示:若本仓库为 GitHub 私有仓库,首次在 Colab 打开时请在弹出的对话框中点击「Authorize with GitHub」授权读取;或直接点击「⬇️ 下载 .ipynb」并在 Colab 中选择「上传笔记本」运行。
就绪 (点击运行)
点击右上角「▶ 运行」或按 ⌘/Ctrl+Enter 在浏览器端直接执行交互实验指南与思考题
- 几何割线逼近切线:在「几何直觉」标签中,滑动步长
(从 逐步缩小至 ),观察蓝色实线(割线斜率)如何逐步旋转并精确重合到红色虚线(解析真实切线)上。 - 极端工况与浮点灾难:尝试将步长切换至
,观察为何界面弹出红色警报?在 IEEE 754 规范中,当 小于计算机机器精度( )时,浮点加法 将直接等于 ,导致分子相减归零。这正是工业级 autograd 不能将 取无限小,而是选用 的物理根因。 - 在线手写与断言对拍:切换至「在线手写」标签,尝试点击「试探前向差商」观察为什么测试用例报错未达标;再切换回中心差商,点击「运行对拍测试」,查看 4 组用例的实时 PASS 状态。
本地 36 题自动化测试重跑
在通过网页交互建立直觉后,强烈建议在本地环境完成完整的 36 道 Python 与数学坡道练习(覆盖 dunder 魔术方法、闭包、NumPy 广播与梯度向量):
bash
cd <仓库根目录>
source .venv/bin/activate
export PYTHONPATH="$PWD/python"
# 运行全量 36 道练习的自动判分套件
pytest python/tests/test_w0p_python_math.py -v核心练习分类索引
| 模块板块 | 核心考察练习 | 对应第4章手写机制 |
|---|---|---|
| Python 最小集 | Vector2D.__add__、Vector2D.__mul__ | Value 类运算符重载与计算图构建 |
| 闭包机制 | make_counter、make_adder | _backward 局部梯度反向传播闭包 |
| NumPy 与张量 | numpy_shape_stride、manual_matmul | 广播机制与第7/8章高维张量变形 |
| 微积分直觉 | difference_quotient、partial_derivative | 数值有限差分与 gradcheck 对拍契约 |
下一步
→ 返回第2章正文查看 Python 工程底座 或 第3章数学速查库
→ 进入实验 03:标量 autograd 与计算图实现