跳转至

Python、Jupyter 与工程计算

计算环境应把公式、数据、图和结论连成一条可执行链。Python 与 Jupyter 是常见的开放选择,但本指南强调的数组、单位、测试、环境锁定和无状态重跑原则可以迁移到其他数值平台。

目的与学习成果

  • 把手算公式转成可测试的函数;
  • 区分原始数据、清洗数据、派生结果和展示图;
  • 从空内核按固定顺序重跑计算笔记本;
  • 在图表和数据中保留单位、采样条件与不确定度;
  • 导出脚本化结果,避免结论只存在于交互单元格。

最小环境

  • 一个受支持的 Python 解释器或等价数值环境;
  • 包隔离机制与文本依赖清单;
  • 能执行脚本的终端;
  • 可选的 Jupyter 前端;
  • 一个小型 CSV 测量样例,字段包含时间、电压和单位说明。

不要声称“最新版本”。记录你实际运行的解释器、包和操作系统版本,并保存可解析的环境文件。

学习顺序

  1. 标量到数组:实现欧姆定律和 RC 响应,检查类型、形状与单位。
  2. 函数与测试:把计算放入无副作用函数,为已知边界值写断言。
  3. 数据入口:读取原始文件时验证列名、缺失值、单调时间和采样间隔。
  4. 可视化:轴带单位,标题描述条件,颜色之外再用线型或标记区分。
  5. 笔记本纪律:重启内核并全部运行;删除依赖隐藏状态的单元格。
  6. 脚本化出口:用一个命令从原始输入生成结果表、图和摘要。

计算代码不应默默猜测单位。可采用显式变量名、元数据或单位库,但进入算法前必须统一量纲。

验证任务:从阶跃数据估计时间常数

准备一份合成或低风险测量的 RC 阶跃响应:

  1. 在脚本中生成带已知时间常数和固定随机种子的合成数据;
  2. 写函数读取数据并检查时间轴、单位和有限数值;
  3. 用两种方法估计时间常数,例如阈值法和拟合;
  4. 报告估计值、误差、采样率与方法假设;
  5. 绘制数据、拟合曲线和残差,所有轴写单位;
  6. 清空输出后从头执行,确认摘要和文件校验稳定。

验收条件应包含数值容差。例如估计误差小于预设阈值,且故意破坏列名时测试必须失败。

常见失败与排查

  • 笔记本乱序才成功:重启并全部运行;把共享逻辑移到模块。
  • 数组形状悄悄广播:在函数入口断言维度,在小矩阵上手算对照。
  • 图看似正确但单位错:追踪每次缩放,统一 SI 前缀后再计算。
  • 拟合收敛却无物理意义:检查初值、边界、残差和参数可辨识性。
  • 结果跨机器变化:锁定依赖、随机种子、区域设置和输入文件。
  • 大文件耗尽内存:分块读取、先做数据概况,并避免复制完整数组。

可复现证据

  • 环境清单与实际版本快照;
  • 原始数据的只读副本、来源和校验和;
  • 带测试的计算模块;
  • 可从头执行的笔记本或脚本;
  • 生成物目录及一键重建命令;
  • 对异常值、缺失值、滤波和拟合的决策记录;
  • 数值容差、随机种子和平台差异说明。

成本、许可与无障碍

本练习可以使用自由软件和本地计算完成。引入包时记录许可证,并避免把受限数据或课程付费材料打包进环境。低内存设备可减少样本规模,但应保持算法和验收条件相同。

笔记本应有清晰标题层级和文本结论;不要让输出只靠颜色或悬停提示。提供脚本入口和静态导出,使屏幕阅读器、低带宽环境和不运行前端的评审者也能理解结果。

安全边界

  • 来历不明的笔记本和依赖可能执行任意代码,应先在隔离环境审阅;
  • 不把设备密钥、患者信息或可识别测量数据写入单元格输出;
  • 自动采集脚本必须设置超时、量程和停止条件;
  • 软件计算不能替代高能量硬件实验的额定值与设施审查;
  • 数值拟合不是安全结论,超出数据范围的外推必须明确标注。

完成清单

  • 干净环境可安装并运行项目。
  • 所有核心公式都位于可测试函数中。
  • 原始数据、派生数据和图表分目录保存。
  • 每个字段和坐标轴都有单位。
  • 笔记本从空内核顺序执行成功。
  • 故意错误会触发明确失败。
  • 一条命令可重建摘要、结果表和图。
  • 许可、数据来源、随机种子和限制已记录。

下一步可用数据与实验记录设计采集元数据,或用可复现工程把计算加入自动检查。