方便快捷的大学物理实验不确定度计算器

大物实验计算不确定度纯属牛马行为,本人在某次大物实验之后,面对众多数据,直接破防,索性一劳永逸,编程解决这种重复,不需要脑子的过程。

使用python写了一个不确定度计算器,输入数据个数和数据以及B类不确定度,程序会计算所有的步骤,并且将关键信息打印出来,以便填写数据处理过程。

# 导入数学和统计模块
import math
import statistics
import 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上的

这位博主,汉化了不确定传导计数器,可本地打开也可在线使用

博主的地址为

https://github.com/JoeYe-233/PoU-Calc-Chinese-Localization

为了防止某些同学不能科学上网,我直接贴上了该计算传导不确定度的网页

https://joeye-233.github.io/PoU-Calc-Chinese-Localization/
物联沃分享整理
物联沃-IOTWORD物联网 » 方便快捷的大学物理实验不确定度计算器

发表评论