大物实验计算不确定度纯属牛马行为,本人在某次大物实验之后,面对众多数据,直接破防,索性一劳永逸,编程解决这种重复,不需要脑子的过程。
使用python写了一个不确定度计算器,输入数据个数和数据以及B类不确定度,程序会计算所有的步骤,并且将关键信息打印出来,以便填写数据处理过程。
# 导入数学和统计模块import mathimport statisticsimport scipy# 定义一个函数,用于计算A类不确定度def calculate_a_uncertainty(data):# 计算测量数据的平均值mean = statistics.mean(data)print(f"平均值为{mean}")# 计算测量数据的标准差stdev = statistics.stdev(data)print(f"标准差为{stdev}")# 计算测量次数n = len(data)# 计算置信度为0.95时的t分布临界值t=scipy.stats.t.ppf(0.975, n-1)print(f"t值取{t}")# 计算A类不确定度a_uncertainty = t * stdev / math.sqrt(n)# 返回A类不确定度print("由A类不确定度计算公式 a=t*S/sqrt(n),得")print(f"A类不确定度为{a_uncertainty}")return a_uncertainty# 定义一个函数,用于计算最终的不确定度def calculate_final_uncertainty(data, b_uncertainty):# 调用上面的函数,计算A类不确定度a_uncertainty = calculate_a_uncertainty(data)# 计算最终的不确定度,假设A类和B类不确定度是相互独立的final_uncertainty = math.sqrt(a_uncertainty**2 + b_uncertainty**2)# 返回最终的不确定度return final_uncertainty# 输入数据个数,假设是一个正整数n = int(input("请输入数据个数:"))# 创建一个空列表,用于存储测量数据data = []# 循环输入测量数据,假设是浮点数for i in range(n):x = float(input(f"请输入第{i+1}个数据:"))data.append(x)# 输入B类不确定度,假设是一个非负浮点数b_uncertainty = float(input("请输入B类不确定度:"))# 调用上面的函数,计算最终的不确定度final_uncertainty = calculate_final_uncertainty(data, b_uncertainty)# 输出最终的不确定度,保留两位小数print(f"最终的不确定度为:{final_uncertainty},(注:合成不确定度:当数据的首位数字大于或等于三时,取一位有效数字;当数据的首位数字小于三时,去两位有效数字。(数据保留采取非零即进的原则)")
注:需要下载statistics、scipy包
下载命令如下
# pip install statistics# pip install scipy
本程序仅能计算非传导不确定的计算,若需要计算传导不确定度计算,请移步github。
github上的
这位博主,汉化了不确定传导计数器,可本地打开也可在线使用
博主的地址为
/JoeYe-233/PoU-Calc-Chinese-Localization
为了防止某些同学不能科学上网,我直接贴上了该计算传导不确定度的网页
https://joeye-233.github.io/PoU-Calc-Chinese-Localization/