【python】利用python计算A类不确定度

利用python计算A类不确定度

前言

在上学期大学物理实验课的时候发现经常要计算A类不确定度,而且这个不确定度计算又非常复杂,凑巧当时正在学习python,于是利用python实现了这一小小功能。

一、代码

废话不多说,直接上代码:

# v1.0.0 手动输入置信因子,单次计算
# v1.1.0 自动匹配置信因子,循环计算,统计次数,手动退出
# v1.1.1 
import subprocess
import time
def notice():
    print("-"*40,end='')
    print('''
1.本工具功能为测量A类不确定度
2.置信概率统一为68.3%
3.测量次数在[10,19]的置信因子统一取1.06
4.测量次数输入0既关闭软件
''',end='')
    print("-"*40)
loop,realLoop,loopSum= 0,0,0

ConfidenceProbability = [1.32,1.20,1.14,1.11,1.09,1.08,1.07,1.06,1.03,1]
while loop != -1:
    loop += 1
    loopSum += 1
    if loop == 1:
        notice()
    n = int(input("测量次数 n = "))
    #t = float(input("t因子 t = "))
    if n == 0:
        break
    elif n < 3:
        print("测量次数不能少于三次!")
        time.sleep(3)
        subprocess.call("cls", shell=True)
        loop = 0
        continue
    elif n < 10:
        t = ConfidenceProbability[n-3]
    elif n < 20:
        t = ConfidenceProbability[7]
    elif n == 20:
        t = ConfidenceProbability[8] 
    elif n > 20:
        t = ConfidenceProbability[9]
    t = float(input("t(可选):"))
    x=[]
    x_sum = 0
    for i in range(n):
        x.append(float(input("第 {} 个数据:".format(i+1))))
        x_sum += x[i]
    x_aver = x_sum/n
    x_SquDif = 1
    for i in range(n):
        x_SquDif *= (x[i] - x_aver) ** 2
    u = t * ((1/(n*(n-1))*x_SquDif) ** 0.5)  # 标准偏差计算
    print("U_a = ",u)
    ub = float(input("U_b = "))
    print("U = {}".format((ub**2 + u**2)**0.5))
    realLoop += 1
    print("-"*40)

#关闭
subprocess.call("cls", shell = True)
print('''
一共测量了{0}组数据,有效测量{1}'''.format(loopSum-1,realLoop))
time.sleep(3)

注释:置信因子的数据你们最好自己检查检查,有些数据可能不对。
ps:这个代码是在清理文件夹时候找到的,不确定是不是最后一版,也无法保证计算结果一定正确,大家使用前最好利用书上的例子带入验证几次,以防实验丢分。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值