大物实验计算不确定度纯属牛马行为,本人在某次大物实验之后,面对众多数据,直接破防,索性一劳永逸,编程解决这种重复,不需要脑子的过程。
使用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://www.toymoban.com/news/detail-722665.html
https://github.com/JoeYe-233/PoU-Calc-Chinese-Localization
为了防止某些同学不能科学上网,我直接贴上了该计算传导不确定度的网页文章来源地址https://www.toymoban.com/news/detail-722665.html
https://joeye-233.github.io/PoU-Calc-Chinese-Localization/
到了这里,关于大学物理实验不确定度计算器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!