误差理论与数据处理实验报告

一、误差理论与数据处理实验报告

  1. 题目在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3、代码

import numpy as np
from numpy import linalg
import matplotlib.pyplot as plt
data_l = [24.674, 24.675, 24.673, 24.676, 24.671, 24.678, 
24.672, 24.674]
datas = np.array(data_l)
n = len(datas)
# 算术平均值
aver_value = sum(datas) / n
print("该测量列的算术平均值为:",aver_value)
# 求残余误差
v_is = []
for data in datas:
	v_i = data - aver_value
	v_is.append(v_i)
	print("该测量列的残余误差列为:\n",v_is)
# 校核算术平均值及残余误差
# 方法 1
if sum(datas) == n*aver_value:
	print("校核方法 1:\n")
	print("\t 存在舍入误差;求得的算术平均值为非凑整的准确数时,残余
误差和为零!\n")
elif (sum(datas) > n*aver_value) and (sum(v_is) > 0):
	print("校核方法 1:\n")
	print("\t 存在舍入误差;求得的算术平均值为非凑整的准确数时,残余
误差之和为求平均值时的余数!\n")
elif (sum(datas) < n*aver_value) and (sum(v_is) < 0):
	print("校核方法 1:\n")
	print("\t 存在舍入误差;求得的算术平均值为非凑整的准确数时,残余
误差之和为求平均值时的亏数!\n")
else:
	print("校核方法 1:\n")
	print("\t 校核不通过,请检查\n")
# 方法 2
A = 0.000001
if (n%2 == 0) and (abs(sum(v_is)) <= ((n/2)*A)):
	print("校核方法 2:\n")
	print("\tn 为偶数,校核通过\n")
elif (n%2 != 0) and (abs(sum(v_is)) <= ((n/2-0.5)*A)):
	print("校核方法 2:\n")
	print("\tn 为奇数,校核通过\n")
else:
	print("校核方法 2:\n")
	print("\t 校核不通过,请检查\n")
# 判断系统误差
# 1、残余误差观察法
x_values = list(range(n))
y_values = v_is
plt.scatter(x_values, y_values, s = 15, c = 'red')
plt.title("残余误差分布图", fontsize = 20)
plt.ylabel("value of v_i", fontsize = 14)
plt.show()
print("\t 无根据怀疑存在系统误差")
# 求测量列单次测量的标准差
# 1、Bessel 公式
v_i_squareds = [v_i**2 for v_i in v_is]
standard_deviation1 = np.sqrt(sum(v_i_squareds)/(n-1))
print("Bessel 公式下测量列单次测量的标准差为:
\n",standard_deviation1)
# 2、Peters 公式
abs_v_is = []
for v_i in v_is:
	abs_v_is.append(abs(v_i))
	standard_deviation = 1.253*(sum(abs_v_is)/(n*np.sqrt(n-1)))
	print("Peters 公式下测量列单次测量的标准差为:
\n",standard_deviation)
# 3、极差法
w_n = max(datas) - min(datas)
d_n = 2.85
standard_deviation = w_n / d_n
print("极差法下测量列单次测量的标准差为:\n",standard_deviation)
# 最大误差法
k_n = 0.61
standard_deviation = max(abs_v_is)*k_n
print("最大误差法下测量列单次测量的标准差为:
\n",standard_deviation)
# 判别粗大误差
# 3 西格玛准则
ross_erros = []
for abs_v_i in abs_v_is:
	if abs_v_i > 3 * standard_deviation1:
		gross_erros.append(abs_v_i)
if gross_erros:
	print("该测量列中的粗大误差有:\n",gross_erros)
else:
	print("\t 该测量列不存在粗大误差\n")
# 算术平均值的标准差
ave_standard_deviation = standard_deviation1 / np.sqrt(n)
print("算术平均值的标准差为:\n",ave_standard_deviation)
# 求算数平均值的极限误差
t = 3
ave_limt_error = - (t * ave_standard_deviation)
print("算数平均值的下极限误差\n",ave_limt_error)
ave_limt_error = t * ave_standard_deviation
print("算数平均值的上极限误差\n",ave_limt_error)
# 最终测量结果
print("测量列的残余误差为:\n",v_is)
print("测量列的残余误差的平方为:\n",v_i_squareds)

4、结语

以上内容,我都做好了word版本和pdf版本,有需要的可以联系我。也可以直接百度网盘获取。
链接:https://pan.baidu.com/s/1k837F9nW-uS1IVFKgArUNw
提取码:Pyno

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pynotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值