162 lines
6.4 KiB
Plaintext
162 lines
6.4 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 牛顿环曲率半径计算 (逐差法)\n",
|
||
"\n",
|
||
"本 Notebook 用于通过读数显微镜测得的牛顿环干涉暗环直径平方数据,利用**逐差法**计算平凸透镜的曲率半径 $R$,并完成高精度的合成不确定度评定与结果修约。\n",
|
||
"\n",
|
||
"---\n",
|
||
"### 实验原理与数学公式\n",
|
||
"\n",
|
||
"#### 1. 牛顿环曲率半径计算公式\n",
|
||
"平凸透镜与平板玻璃构成的空气薄膜发生等厚干涉,第 $m$ 级暗环直径为 $D_m$。第 $i+M$ 级与第 $i$ 级暗环直径平方差为:\n",
|
||
"$$\\Delta_i = D_{i+M}^2 - D_i^2 = 4 M R \\lambda$$\n",
|
||
"逐差平均值:\n",
|
||
"$$\\Delta_{\\mathrm{avg}} = \\frac{1}{M} \\sum_{i=1}^M \\Delta_i$$\n",
|
||
"曲率半径 $R$ 为:\n",
|
||
"$$R = \\frac{\\Delta_{\\mathrm{avg}}}{4 M \\lambda}$$\n",
|
||
"* $\\lambda$:单色光波长(钠黄光默认取 $\\lambda = 589.3\\,\\mathrm{nm} = 0.0005893\\,\\mathrm{mm}$)\n",
|
||
"* $M$:逐差跨度(通常第 11~30 环,分为 11~20 环与 21~30 环,跨度 $M = 10$)\n",
|
||
"\n",
|
||
"#### 2. 不确定度传递公式\n",
|
||
"* **A 类不确定度**(针对逐差后的 $\\Delta_i$ 项):\n",
|
||
"$$s_\\Delta = \\sqrt{\\frac{1}{M-1} \\sum_{i=1}^M (\\Delta_i - \\Delta_{\\mathrm{avg}})^2}, \\quad u_A(\\Delta) = \\frac{s_\\Delta}{\\sqrt{M}}$$\n",
|
||
"* **B 类不确定度**(由读数显微镜测量误差传递):\n",
|
||
"设显微镜坐标不确定度为 $u(x) = \\frac{\\Delta_{\\mathrm{inst}}}{\\sqrt{3}}$,则直径 $D = x_R - x_L$ 的平方 $D^2$ 的不确定度满足 $u^2(D^2) = 8 D^2 u^2(x)$。\n",
|
||
"由逐差平均传播可得:\n",
|
||
"$$u_B^2(\\Delta_{\\mathrm{avg}}) = \\frac{8 u^2(x)}{M^2} \\sum_{i=1}^M (D_i^2 + D_{i+M}^2)$$\n",
|
||
"* **合成不确定度传递到曲率半径 $R$**:\n",
|
||
"$$u(\\Delta) = \\sqrt{u_A^2(\\Delta) + u_B^2(\\Delta_{\\mathrm{avg}})}, \\quad u(R) = \\frac{u(\\Delta)}{4 M \\lambda}$$"
|
||
],
|
||
"id": "6a150fa764d0b625"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import math\n",
|
||
"from decimal import Decimal\n",
|
||
"from python.utils import scientific_round\n",
|
||
"\n",
|
||
"print(\"牛顿环计算模块加载完成。\")"
|
||
],
|
||
"id": "9218591496bcc1bc"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1. 实验常数与暗环测量数据输入\n",
|
||
"> **提示**:`d_squared_vals` 为第 11 到 30 环的暗环直径平方 $D^2\\,(\\mathrm{mm^2})$(共 20 个数据)。"
|
||
],
|
||
"id": "924c4d14704f767a"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 钠光波长 λ (mm)\n",
|
||
"WAVELENGTH = Decimal(\"0.0005893\")\n",
|
||
"\n",
|
||
"# 仪器参数\n",
|
||
"delta_inst = Decimal(\"0.005\") # 读数显微镜仪器误差限 (mm)\n",
|
||
"\n",
|
||
"# 第 11 环 ~ 第 30 环的 D^2 数据 (mm^2)\n",
|
||
"# 示例数据 (请按实际实验数据替换):\n",
|
||
"d_squared_vals = [\n",
|
||
" Decimal(\"12.15\"), Decimal(\"13.20\"), Decimal(\"14.35\"), Decimal(\"15.42\"), Decimal(\"16.55\"),\n",
|
||
" Decimal(\"17.68\"), Decimal(\"18.72\"), Decimal(\"19.85\"), Decimal(\"20.90\"), Decimal(\"22.05\"),\n",
|
||
" Decimal(\"23.15\"), Decimal(\"24.28\"), Decimal(\"25.40\"), Decimal(\"26.50\"), Decimal(\"27.62\"),\n",
|
||
" Decimal(\"28.75\"), Decimal(\"29.80\"), Decimal(\"30.95\"), Decimal(\"32.00\"), Decimal(\"33.15\")\n",
|
||
"]\n",
|
||
"\n",
|
||
"print(f\"光波波长 λ: {WAVELENGTH} mm\")\n",
|
||
"print(f\"显微镜误差 Δ_inst: {delta_inst} mm\")\n",
|
||
"print(f\"已载入暗环平方数据点数: {len(d_squared_vals)}\")"
|
||
],
|
||
"id": "959e1b03984add7a"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 2. 逐差计算与曲率半径求解"
|
||
],
|
||
"id": "d92aa19f25481c10"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"M = 10 # 逐差项数\n",
|
||
"deltas = []\n",
|
||
"sum_d_pairs = Decimal(\"0\")\n",
|
||
"\n",
|
||
"print(\"--- 逐差过程 (Δ_i = D_{i+10}^2 - D_i^2) ---\")\n",
|
||
"for i in range(10):\n",
|
||
" d_low_sq = d_squared_vals[i]\n",
|
||
" d_high_sq = d_squared_vals[i + 10]\n",
|
||
" diff = d_high_sq - d_low_sq\n",
|
||
" deltas.append(diff)\n",
|
||
" sum_d_pairs += (d_low_sq + d_high_sq)\n",
|
||
" print(f\"Δ_{i+11:02d} = D_{i+21}^2 - D_{i+11}^2 = {diff:.3f} mm^2\")\n",
|
||
"\n",
|
||
"mean_delta = sum(deltas) / Decimal(str(M))\n",
|
||
"\n",
|
||
"# 曲率半径 R = Δ_avg / (4 * M * λ)\n",
|
||
"denominator = Decimal(\"4\") * Decimal(str(M)) * WAVELENGTH\n",
|
||
"r_val = mean_delta / denominator\n",
|
||
"\n",
|
||
"# 不确定度计算\n",
|
||
"# 1. A 类不确定度\n",
|
||
"variance_delta = sum((x - mean_delta)**2 for x in deltas) / Decimal(str(M - 1))\n",
|
||
"s_delta = Decimal(str(math.sqrt(float(variance_delta))))\n",
|
||
"u_a_delta = s_delta / Decimal(str(math.sqrt(M)))\n",
|
||
"\n",
|
||
"# 2. B 类不确定度传播\n",
|
||
"u_x = delta_inst / Decimal(str(math.sqrt(3)))\n",
|
||
"u_b_delta_sq = (Decimal(\"8\") * (u_x**2) * sum_d_pairs) / (Decimal(str(M))**2)\n",
|
||
"u_b_delta = Decimal(str(math.sqrt(float(u_b_delta_sq))))\n",
|
||
"\n",
|
||
"# 3. 合成不确定度并在 R 上传递\n",
|
||
"u_delta_combined = Decimal(str(math.sqrt(float(u_a_delta**2 + u_b_delta**2))))\n",
|
||
"u_r = u_delta_combined / denominator\n",
|
||
"\n",
|
||
"# 4. 科学修约\n",
|
||
"r_final, u_final = scientific_round(r_val, u_r)\n",
|
||
"\n",
|
||
"print(\"\\n\" + \"=\" * 45)\n",
|
||
"print(\" 牛 顿 环 曲 率 半 径 计 算 结 果 \")\n",
|
||
"print(\"=\" * 45)\n",
|
||
"print(f\"逐差平均差值 Δ_avg : {mean_delta:.4f} mm^2\")\n",
|
||
"print(f\"差值标准差 s(Δ) : {s_delta:.4f} mm^2\")\n",
|
||
"print(f\"A 类不确定度 u_A(Δ) : {u_a_delta:.4f} mm^2\")\n",
|
||
"print(f\"B 类不确定度 u_B(Δ) : {u_b_delta:.4f} mm^2\")\n",
|
||
"print(\"-\" * 45)\n",
|
||
"print(f\"曲率半径 R (原始) : {r_val:.4f} mm ({r_val/1000:.4f} m)\")\n",
|
||
"print(f\"合成不确定度 u(R) : {u_r:.4f} mm\")\n",
|
||
"print(\"-\" * 45)\n",
|
||
"print(f\"★ 最终修约结果 : R = {r_final} ± {u_final} mm\")\n",
|
||
"print(\"=\" * 45)"
|
||
],
|
||
"id": "6258ef3d424cf16f"
|
||
}
|
||
],
|
||
"metadata": {
|
||
"language_info": {
|
||
"name": "python"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|