最近大学物理实验开始了,其中计算不确定度着实让人头疼,这里花费三个小时写个代码计算一下不确定度,顺便开源了,代码如下:

import mathli = []
# 存储t因子
dict_t = {1: 0, 3: 1.32, 4: 1.2, 5: 1.14, 6: 1.11, 7: 1.09, 8: 1.08, 9: 1.07, 10: 1.06, 20: 1.03}
dic_M = {"铜圆柱": 50.24, "金属圆管": 134.82, "钢球的质量": 28.29}
dic_tong_h = [5.152, 5.154, 5.150, 5.152, 5.154]
dic_tong_q = [1.1991, 1.1992, 1.1991, 1.1999, 1.1991]
dict_Ub1 = {"游标卡尺": 0.0012, "千分尺": 0.00013, "米尺": 0.017, "单次测量米尺": 0.1, "天平": 0.007}  # 单位cm
dic_jin_D = [5.452, 5.450, 5.452, 5.450, 5.454]
dic_jin_d = [3.014, 3.012, 3.010, 3.014, 3.014]
dic_jin_H = [2.982, 3.022, 2.988, 3.022, 2.986]
dic_gang_R = [1.9056, 1.9055, 1.9056, 1.9050, 1.9052]
aver_gang = (dic_gang_R[0] + dic_gang_R[1] + dic_gang_R[2] + dic_gang_R[3] + dic_gang_R[4]) / 5
aver_tong_d = (dic_tong_q[0] + dic_tong_q[1] + dic_tong_q[2] + dic_tong_q[3] + dic_tong_q[4]) / 5
aver_tong_h = (dic_tong_h[0] + dic_tong_h[1] + dic_tong_h[2] + dic_tong_h[3] + dic_tong_h[4]) / 5
aver_jin_D = (dic_jin_D[0] + dic_jin_D[1] + dic_jin_D[2] + dic_jin_D[3] + dic_jin_D[4]) / 5
aver_jin_d = (dic_jin_d[0] + dic_jin_d[1] + dic_jin_d[2] + dic_jin_d[3] + dic_jin_d[4]) / 5
aver_jin_H = (dic_jin_H[0] + dic_jin_H[1] + dic_jin_H[2] + dic_jin_H[3] + dic_jin_H[4]) / 5def get_tong_midu(wuti, h, q):return 4.0 * wuti / (3.14 * h * q * q)def get_jin_midu(wuti1, D, d, H):return abs(4.0 * wuti1 / (3.14 * H * (D * D - d * d)))def get_gang_midu(wuti2, R):return 6 * wuti2 / (3.14 * math.pow(R, 3))class buquedingdu:def __init__(self, n):self.n = n  # 数据个数self.t = dict_t[self.n]self.Ua = 0self.average = 0def get_average(self):""":return: 返回算数平均值"""num = self.nsum_n = 0while num:shuju = float(input("请输入你的数据:"))li.append(shuju)sum_n += shujupassnum -= 1print("算数平均值为{}".format(sum_n / n))self.average = sum_n / nreturn self.averagedef get_std_cha(self):  # 计算标准差average = self.get_average()  # 计算算数平均值get_sum = 0for i in range(self.n):get_sum += math.pow(li[i] - average, 2)Sx = math.sqrt(get_sum / (self.n - 1))print("标准差为:{}".format(Sx))return Sxdef get_std_piancha(self):  # 计算标准偏差self.Ua = self.t * self.get_std_cha() / math.sqrt(self.n)print("标准偏差为(A类不确定度,取两位有效数字):{}".format(self.Ua))return self.Uadef get_Uc(self):Uc = math.sqrt(math.pow(self.Ua, 2) + math.pow(dict_Ub1[yiqi], 2))print("C类不确定度为:{}(取一位有效数字,非0即进)".format(Uc))print(f"测量结果为:\n{self.average}+-{Uc}", "Er相对不确定度为:{}%(取两位有效数字)".format(Uc / self.average * 100))return Ucdef get_once_Uc(self):Uc = math.sqrt(math.pow(dict_Ub1["米尺"], 2) + math.pow(dict_Ub1["单次测量米尺"], 2))print("C类不确定度为:{}(取一位有效数字,非0即进)".format(Uc))print(f"测量结果为:\n{self.average}+-{Uc}", "Er相对不确定度为:{}%(取两位有效数字)".format(Uc / self.average * 100))return Ucdef get_gang_buqueding(self):Um = float(input("请输入质量差值:"))Ud = float(input("请输入直径差值"))Er = math.sqrt(math.pow(Um / dic_M["钢球的质量"], 2) + 9 * math.pow(Ud / aver_gang, 2))Uc = get_gang_midu(dic_M["钢球的质量"], aver_gang) * Erprint("钢球Uc:{}".format(Uc))print("钢球Er相对不确定度为:{}".format(Er))def get_tong_buqueding(self):Um = float(input("请输入质量差值:"))Ud = float(input("请输入直径差值"))Uh = float(input("请输入高度差值"))Er = math.sqrt(math.pow(Um / dic_M["铜圆柱"], 2) + 4 * math.pow(Ud / aver_tong_d, 2) + math.pow(Uh / aver_tong_h, 2))Uc = Er * get_tong_midu(dic_M["铜圆柱"], aver_tong_h, aver_tong_d)print("铜圆柱Uc:{}".format(Uc))print("铜圆柱Er相对不确定度为:{}".format(Er))def get_yuanhuan_buqueding(self):Um = float(input("请输入质量差值:"))UD = float(input("请输入大径差值:"))Ud = float(input("请输入直径差值:"))Uh = float(input("请输入高度差值:"))Er = math.sqrt(math.pow(Um / dic_M["金属圆管"], 2) + 4 * math.pow(aver_jin_D * UD / (aver_jin_D * aver_jin_D - aver_jin_d * aver_jin_d), 2) + 4 * math.pow(aver_jin_d * Ud / (aver_jin_D * aver_jin_D - aver_jin_d * aver_jin_d), 2) + Uh / aver_jin_H)Uc = get_jin_midu(dic_M["金属圆管"], aver_jin_D, aver_jin_d, aver_jin_H) * Erprint("圆环Uc:{}".format(Uc))print("圆环Er相对不确定度为:{}".format(Er))if __name__ == '__main__':try:dic_M["铜圆柱"] = float(input("请输入铜圆柱质量:"))for i in range(5):dic_tong_h[i] = float(input(f"请输入铜的高度h,还剩下{4-i}次:"))dic_tong_q[i] = float(input(f"请输入铜的直径d,还剩下{4-i}次:"))dic_M["金属圆管"] = float(input("请输入金属圆管质量:"))for i in range(5):dic_jin_D[i] = float(input(f"请输入金属圆环的大径D,还剩下{4-i}次"))dic_jin_d[i] = float(input(f"请输入金属圆环的小径d,还剩下{4-i}次"))dic_jin_H[i] = float(input(f"请输入金属圆环的高H,还剩下{4-i}次:"))dic_M["钢球的质量"] = float(input("请输入钢球的质量:"))for i in range(5):dic_gang_R[i] = float(input(f"请输入钢球的半径R,还剩下{4-i}:"))aver_gang = (dic_gang_R[0] + dic_gang_R[1] + dic_gang_R[2] + dic_gang_R[3] + dic_gang_R[4]) / 5aver_tong_d = (dic_tong_q[0] + dic_tong_q[1] + dic_tong_q[2] + dic_tong_q[3] + dic_tong_q[4]) / 5aver_tong_h = (dic_tong_h[0] + dic_tong_h[1] + dic_tong_h[2] + dic_tong_h[3] + dic_tong_h[4]) / 5aver_jin_D = (dic_jin_D[0] + dic_jin_D[1] + dic_jin_D[2] + dic_jin_D[3] + dic_jin_D[4]) / 5aver_jin_d = (dic_jin_d[0] + dic_jin_d[1] + dic_jin_d[2] + dic_jin_d[3] + dic_jin_d[4]) / 5aver_jin_H = (dic_jin_H[0] + dic_jin_H[1] + dic_jin_H[2] + dic_jin_H[3] + dic_jin_H[4]) / 5num = input("输入1获取圆柱体、金属圆管、钢球的密度")if num == "1":print("铜圆柱密度为{}:".format(get_tong_midu(dic_M["铜圆柱"], aver_tong_h, aver_tong_d)),"金属圆环密度为:{}".format(get_jin_midu(dic_M["金属圆管"], aver_jin_D, aver_jin_d, aver_jin_H)),"钢球密度为:{}".format(get_gang_midu(dic_M["钢球的质量"], aver_gang)))except Exception as erro_msg:print(erro_msg)while True:try:yiqi = input("请输入你所测量的仪器:")n = int(input("请输入需要的输入的数据个数(单次测量请输入1,多次测量需输入大于3的数):"))U = buquedingdu(n)BU=input("输入1获取钢球、金属圆环、铜圆柱不确定度、输入2获取多次测量计算的不确定度")if BU=="1":U.get_tong_buqueding()U.get_yuanhuan_buqueding()U.get_gang_buqueding()if BU=="2":if n >= 3:U.get_std_piancha()U.get_Uc()elif n == 1:U.get_average()U.get_once_Uc()except Exception as erro_msg:print(erro_msg)exit1=input("输入exit或0退出")if exit1=='0':break

话不多说了,没有安装python的童鞋们,这里给你们提供了这个代码的exe可执行文件,打开就可以用啦。

链接:https://pan.baidu.com/s/19stkoQRvytlh4dunzmFctA 
提取码:iwyj

欢迎大佬指正代码

python实现大学物理实验不确定度计算相关推荐

  1. 【MATLAB】大学物理实验-不确定度计算

    大学物理实验-不确定度计算 输入输出示例 输入 L = [98.98 98.96 98.97 98.94 99.00,98.95,98.97]; delatX_B = 0.05/sqrt(3); 输出 ...

  2. 大学物理实验不确定度.cpp

    *求合成不确定度需根据具体实验修改all_uncertainty()函数的内容需提前定义常量*/ #include <iostream> #include <cmath> #i ...

  3. 大学物理实验不确定度计算器

    大物实验计算不确定度纯属牛马行为,本人在某次大物实验之后,面对众多数据,直接破防,索性一劳永逸,编程解决这种重复,不需要脑子的过程. 使用python写了一个不确定度计算器,输入数据个数和数据以及B类 ...

  4. 用Python画大学物理实验曲线

    import matplotlib import matplotlib.pyplot as plt import numpy as npdef MSE(y1, y2):return np.sum((y ...

  5. 大学物理实验——密立根油滴实验数据计算Python代码

    大学物理实验--密立根油滴实验数据计算Python代码 先手准备 import numpy as np 编写函数 def f(t,U):# 基本物理量准备rou = 981.0g = 9.80l = ...

  6. 大学物理实验 载流圆线圈轴线上的磁场分布

    大学物理实验 载流圆线圈轴线上的磁场分布 首先说好,本宝宝不定期更新 另外,代码写的比较冗杂,需要拿走,不喜勿喷. 考虑到有可能会有不太精通Python的朋友,首先是说好,本代码仅支持Jupyter ...

  7. c语言编程物理实验,大学物理实验报告大全C语言编程在大学物理实验中处理数据的研究...

    大学物理实验报告大全C语言编程在大学物理实验中处理数据的研究 摘要 用C语言编程的方法处理比较复杂的实验数据,简捷准确且避免了传统方法的弊端,与用Excel处理数据的方法相比,其结果更符合误差理论. ...

  8. 【大学物理实验】绪论练习

    文章目录 选择题 选择题 <大学物理实验>实验报告册的封面,以下说法不正确的是: A. 应正确填写完整的学号 B. 预习前应写好姓名等相关信息 C. 报告册左上角应填写本班级报告箱编号 D ...

  9. 大学物理实验试卷1到8_南京理工大学大学物理实验试卷(4份,有部分答案)

    内容简介: 南京理工大学大学物理实验试卷(4份,有部分答案) 一.填空题(每题2分,共24分) 1.依照测量方法的不同,可将测量分为 (1) 和 (2) 两大类. 2.在同一被测量的多次测量过程中,以 ...

  10. (搬运)大学物理实验理论部分知识点)

    (搬运)大学物理实验理论部分知识点 零.前言 一.误差的概念 1. 实际具有值,记为A--真值 2. 绝对误差 3. 相对误差 4. 误差的分类 1) 系统误差 2)随机误差 3) 粗大误差 5.随机 ...

最新文章

  1. 数字信号处理中卷积的图形化动态解释
  2. iPhone X的刘海基本上就是一台Kinect
  3. java集合使用_java集合使用初步
  4. 如果你陷入职业迷茫,就看看这些建议!
  5. Java 如何线程间通信,面试被问哭。。。
  6. 同域名下不同端口cookie问题
  7. 计算机工程与科学电话,【计算机工程与科学杂志社】计算机工程与科学杂志社编辑部...
  8. Eclipse 安装 SVN 插件的两种方法
  9. 最便宜的855旗舰了,可惜是它
  10. fasterrcnn论文_【每周CV论文推荐】 深度学习人脸检测入门必读文章
  11. STM8S001J3M3还能完这么多花样,开发板尝鲜体验。
  12. 【你必须知道的.NET】:【大话String】
  13. 【2020牛客寒假基础算法训练营】第二场总结
  14. FFmpeg mxf扩展hdr、bt2020
  15. 单片机小车关于PWM控速
  16. HTML5游戏实战 3 60行代码实现水平跑酷游戏
  17. (转)Builder模式的误区:将复杂对象的构建进行封装,就是Builder模式了吗?
  18. Vue-Vnode类型
  19. Django使用旧有的数据库
  20. 手机App分发加速是如何实现的app分发有什么重要作用?cdn资源分配方式是如何分配的?

热门文章

  1. 各个玄幻小说里的魔兽名称,技能名称,游戏中的怪兽名称,大量(留着备用)
  2. 计算机二级java判卷标准_计算机等级考试二级评分标准
  3. android+解锁工具,安卓手机解锁助手 (A Unlock Tool)
  4. android中文朗读包,Android 通过手说tts中文语音包实现中文朗读
  5. mysql client 升级_升级MySQL (参考MySQL官方文档)
  6. Ubuntu MPEG-4 AAC 与 H.264 解码器安装
  7. potplayer直播源模板
  8. flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕效果
  9. 符号回归工具之 geppy: Python中的基因表达编程框架
  10. ToDesk 远程软件推荐测评