内容仅供参考,如有错误,欢迎指正,如有疑问,欢迎交流。
个别数据的小数位数目前仍存疑
祝大家早日摆脱物理实验的苦海
代码
with open('test_mkex.txt', 'r', encoding="UTF-8") as file:
lines = [line.strip() for line in file]
N1 = 100
N2 = 20
n = 4 if N1 == 100 else 5
d1 = []
d2 = []
for line in lines:
if not line:
break
data1, data2 = map(eval,line.split())
d1.append(data1)
d2.append(data2)
def Htlang(d, N):
print(f"N = {N} 时的计算结果如下:")
_d = []
for i in range(n):
_d.append(d[i + n] - d[i])
print(f"Δd{i + 1} = {_d[i]:.3f} ×10^(-3)")
_d_average = sum(_d) / n
print(f"Δd平均 = {_d_average:.3f} ×10^(-3)")
_N = n * N
λ_average = 2 * _d_average * 10 ** 6 / _N / 100
print(f"λ平均 = {λ_average:.2f} ×10^(-9)")
_da = (sum([(_d[i] - _d_average) ** 2 for i in range(n)]) / 3) ** 0.5
_db = 2 ** 0.5 * 5 * 10 ** (-6)
__d = (_da ** 2 + (_db * 1000) ** 2) ** 0.5 # _db*1000 是因为_da的单位是10^(-3)米但是当作了米来计算
print(f"Δda = {_da:.2f} ×10^(-3) Δdb = {int(_db * 10 ** 6)} ×10^(-6) 总不确定度ΔΔd = {_da:.2f} ×10^(-3)")
_λ_average = 2 * __d * 10 ** 6 / _N / 100
print(f"波长的不确定度Δλ = {_λ_average:.2f} ×10^(-9)")
print(f"结果表达式 λ = λ平均 ± Δλ = {λ_average:.2f} ± {_λ_average:.2f} ×10^(-9)")
λ0 = 632.8
E1 = (λ_average - λ0) * 100 / λ0
E2 = _λ_average * 100 / λ_average
print(f"相对误差 E = {E1:.1f}%\n相对不确定度 E = {E2:.2f}%")
Htlang(d1, N1)
print()
Htlang(d2, N2)
用法
在桌面上新建一个.py文件(文件名任意取)和 test_mkex.txt(文件名和第一行中的代码对应)
将数据输入到.txt文件中,.txt中数据格式大致如下
将代码复制到.py文件中,若在做实验时N1的取值是50(此时在.txt中应该有10行数据,N1取100是8组),请修改第4行的代码,若运行后出现.txt文件路径找不到,请修改第1行的代码,可能的一种修改如下
运行代码,运行结果大致如下