191 lines
7.5 KiB
Plaintext
191 lines
7.5 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 拉脱法测液体表面张力系数计算器\n",
|
||
"\n",
|
||
"本 Notebook 用于通过力敏传感器测定拉脱法实验中液体(水)的表面张力系数 $\\alpha$。包含砝码电压标定(线性回归求传感器灵敏度 $K$)、拉脱峰值电压与吊环内外径统计、不确定度合成及规范修约。\n",
|
||
"\n",
|
||
"---\n",
|
||
"### 实验原理与数学公式\n",
|
||
"\n",
|
||
"#### 1. 表面张力系数计算公式\n",
|
||
"当薄壁圆环从液体表面被拉脱的一瞬间,所受的最大液体表面张力与圆环内外周长成正比:\n",
|
||
"$$\\alpha = \\frac{F}{\\pi (d_1 + d_2)}$$\n",
|
||
"* $F$:最大拉脱力(通过力敏传感器测得 $F = U_{\\mathrm{pull}} / K$)\n",
|
||
"* $K$:力敏传感器灵敏度 $(\\mathrm{V/N})$ 或 $(\\mathrm{mV/N})$\n",
|
||
"* $d_1, d_2$:金属圆环的内径与外径\n",
|
||
"\n",
|
||
"#### 2. 力敏传感器灵敏度标定\n",
|
||
"使用单重为 $m$ 的标准小砝码增重与减重 $i$ 个($i = 0, 1, \\dots, 5$),各测得对应的输出电压 $U_{1,i}, U_{2,i}$。取增减重平均值:\n",
|
||
"$$\\bar{U}_i = \\frac{U_{1,i} + U_{2,i}}{2}, \\quad F_i = i \\cdot m \\cdot g$$\n",
|
||
"使用最小二乘线性回归对 $(F_i, \\bar{U}_i)$ 拟合直线 $U = K \\cdot F + b$,斜率即为灵敏度 $K$,其标准不确定度记为 $u(K)$。\n",
|
||
"\n",
|
||
"#### 3. 不确定度合成与传递\n",
|
||
"* 拉脱力 $F$ 的相对不确定度:\n",
|
||
"$$u_r(F) = \\sqrt{ \\left(\\frac{u_U}{\\bar{U}_{\\mathrm{pull}}}\\right)^2 + \\left(\\frac{u_K}{K}\\right)^2 }$$\n",
|
||
"* 直径和 $(d_1 + d_2)$ 的不确定度:\n",
|
||
"$$u(d_1 + d_2) = \\sqrt{u^2(d_1) + u^2(d_2)}, \\quad u_r(d_1+d_2) = \\frac{u(d_1 + d_2)}{d_1 + d_2}$$\n",
|
||
"* 表面张力系数 $\\alpha$ 的总相对不确定度与绝对不确定度:\n",
|
||
"$$u_r(\\alpha) = \\sqrt{u_r^2(F) + u_r^2(d_1 + d_2)}, \\quad u(\\alpha) = \\alpha \\cdot u_r(\\alpha)$$"
|
||
],
|
||
"id": "781711c13d45a52a"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import math\n",
|
||
"from decimal import Decimal\n",
|
||
"from python.utils import scientific_round, calculate_stats, linear_regression\n",
|
||
"\n",
|
||
"print(\"表面张力系数模块加载完成。\")"
|
||
],
|
||
"id": "d1f8bddcdc7a754a"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 1. 传感器砝码标定数据输入与拟合\n",
|
||
"> **提示**:可在此输入单个小砝码质量 `m_mass_g` 以及增重、减重各 6 个点对应的标定电压。"
|
||
],
|
||
"id": "6a7bf3a6389e57db"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"G = Decimal(\"9.80\") # 重力加速度 (m/s^2)\n",
|
||
"PI = Decimal(str(math.pi))\n",
|
||
"\n",
|
||
"# 单个小砝码质量 (g)\n",
|
||
"m_mass_g = Decimal(\"0.50\")\n",
|
||
"m_mass_kg = m_mass_g / Decimal(\"1000\")\n",
|
||
"\n",
|
||
"# 标定电压 (0~5个砝码, 单位与后续拉脱电压保持统一即可, 如 V 或 mV)\n",
|
||
"U_calib_1 = [Decimal(\"0.00\"), Decimal(\"0.052\"), Decimal(\"0.104\"), Decimal(\"0.155\"), Decimal(\"0.207\"), Decimal(\"0.259\")] # 增重\n",
|
||
"U_calib_2 = [Decimal(\"0.00\"), Decimal(\"0.051\"), Decimal(\"0.103\"), Decimal(\"0.156\"), Decimal(\"0.208\"), Decimal(\"0.260\")] # 减重\n",
|
||
"\n",
|
||
"# 计算平均电压与外力\n",
|
||
"U_calib_avg = [(U_calib_1[i] + U_calib_2[i]) / Decimal(\"2\") for i in range(6)]\n",
|
||
"F_calib = [Decimal(str(i)) * m_mass_kg * G for i in range(6)]\n",
|
||
"\n",
|
||
"# 线性回归拟合灵敏度 K\n",
|
||
"K, K_b, r, u_K = linear_regression(F_calib, U_calib_avg)\n",
|
||
"\n",
|
||
"print(\"=\" * 45)\n",
|
||
"print(\" 传 感 器 标 定 拟 合 结 果 \")\n",
|
||
"print(\"=\" * 45)\n",
|
||
"print(f\"灵敏度斜率 K : {K:.6f} (电压单位/N)\")\n",
|
||
"print(f\"截距 b : {K_b:.6f}\")\n",
|
||
"print(f\"相关系数 r : {r:.6f}\")\n",
|
||
"print(f\"斜率不确定度 u_K: {u_K:.6e}\")"
|
||
],
|
||
"id": "db8e4e72f93077d5"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 2. 拉脱实验数据与圆环几何尺寸输入"
|
||
],
|
||
"id": "37706b6c98e4d762"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 仪器允差\n",
|
||
"delta_U = Decimal(\"0.001\") # 电压表仪器误差\n",
|
||
"delta_d = Decimal(\"0.02\") # 游标卡尺仪器误差 (mm)\n",
|
||
"\n",
|
||
"# 6次测量数据列表\n",
|
||
"U_pull_vals = [Decimal(\"0.215\"), Decimal(\"0.214\"), Decimal(\"0.216\"), Decimal(\"0.215\"), Decimal(\"0.213\"), Decimal(\"0.215\")]\n",
|
||
"d1_vals = [Decimal(\"33.10\"), Decimal(\"33.12\"), Decimal(\"33.08\"), Decimal(\"33.10\"), Decimal(\"33.14\"), Decimal(\"33.10\")] # 内径 (mm)\n",
|
||
"d2_vals = [Decimal(\"35.20\"), Decimal(\"35.22\"), Decimal(\"35.18\"), Decimal(\"35.20\"), Decimal(\"35.22\"), Decimal(\"35.20\")] # 外径 (mm)\n",
|
||
"\n",
|
||
"# 统计各量\n",
|
||
"U_pull_mean, U_pull_u = calculate_stats(U_pull_vals, delta_U)[:2]\n",
|
||
"d1_mean, d1_u = calculate_stats(d1_vals, delta_d)[:2]\n",
|
||
"d2_mean, d2_u = calculate_stats(d2_vals, delta_d)[:2]\n",
|
||
"\n",
|
||
"print(f\"拉脱平均电压 U_pull: {U_pull_mean:.4f} ± {U_pull_u:.4f}\")\n",
|
||
"print(f\"圆环平均内径 d1 : {d1_mean:.3f} ± {d1_u:.3f} mm\")\n",
|
||
"print(f\"圆环平均外径 d2 : {d2_mean:.3f} ± {d2_u:.3f} mm\")"
|
||
],
|
||
"id": "4898cff018c8803b"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### 3. 表面张力系数计算与不确定度修约"
|
||
],
|
||
"id": "188a7b2b3dc5b54"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 计算拉脱力 F (N)\n",
|
||
"F_pull_mean = U_pull_mean / K\n",
|
||
"\n",
|
||
"# 换算为标准国际单位 m\n",
|
||
"d1_m = d1_mean / Decimal(\"1000\")\n",
|
||
"d2_m = d2_mean / Decimal(\"1000\")\n",
|
||
"d1_u_m = d1_u / Decimal(\"1000\")\n",
|
||
"d2_u_m = d2_u / Decimal(\"1000\")\n",
|
||
"d_sum = d1_m + d2_m\n",
|
||
"\n",
|
||
"# 表面张力系数 α = F / [π * (d1 + d2)]\n",
|
||
"alpha_val = F_pull_mean / (PI * d_sum)\n",
|
||
"\n",
|
||
"# 不确定度合成传递\n",
|
||
"u_r_F_sq = (U_pull_u / U_pull_mean)**2 + (u_K / K)**2\n",
|
||
"u_r_F = Decimal(str(math.sqrt(float(u_r_F_sq))))\n",
|
||
"\n",
|
||
"u_d_sum = Decimal(str(math.sqrt(float(d1_u_m**2 + d2_u_m**2))))\n",
|
||
"u_r_d_sum = u_d_sum / d_sum\n",
|
||
"\n",
|
||
"u_r_alpha = Decimal(str(math.sqrt(float(u_r_F**2 + u_r_d_sum**2))))\n",
|
||
"alpha_u = alpha_val * u_r_alpha\n",
|
||
"\n",
|
||
"# 科学修约\n",
|
||
"alpha_final, u_final = scientific_round(alpha_val, alpha_u)\n",
|
||
"\n",
|
||
"print(\"=\" * 45)\n",
|
||
"print(\" 表 面 张 力 系 数 计 算 结 果 \")\n",
|
||
"print(\"=\" * 45)\n",
|
||
"print(f\"最大拉脱力 F : {F_pull_mean:.6f} N\")\n",
|
||
"print(f\"圆环周长项 (d1+d2): {(d_sum*1000):.3f} mm\")\n",
|
||
"print(f\"表面张力系数 α (原始): {alpha_val:.6f} N/m\")\n",
|
||
"print(\"-\" * 45)\n",
|
||
"print(f\"相对不确定度 u_r : {u_r_alpha * 100:.2f}%\")\n",
|
||
"print(f\"绝对不确定度 u_α : {alpha_u:.6f} N/m\")\n",
|
||
"print(\"-\" * 45)\n",
|
||
"print(f\"★ 最终修约结果 : α = {alpha_final} ± {u_final} N/m\")\n",
|
||
"print(\"=\" * 45)"
|
||
],
|
||
"id": "74791d410688e40a"
|
||
}
|
||
],
|
||
"metadata": {
|
||
"language_info": {
|
||
"name": "python"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|