2016届本科生毕业设计(论文)
基于C++的误差处理的交互式程序设计
题
目 Interactive programming of error processing based
On C++
学生姓名 学
号
戴耀溪 312101030109 测控技术与仪器 2121班
机械工程系 马学刚 2016年5月16日
专业班级 系
部
指导老师 完成日期
安徽工程大学毕业设计(论文)
摘 要
随着时代进入21世纪,计算机的运用使得人类更方便、更高效的处理分析生活中各种各样的数据,提高工程作业的效率。在工程中测量误差与数据的处理变得尤为的重要,测量是人类认识自然探索自然必不可少的手段,测量的过程中不可避免的就是误差了,所以研究误差的意义十分重要。
C语言是最近几年应用比较普及的一种现代编译型语言,它既具有多种高级语言的优点,又具有初级语言的功能。C语言功能丰富,表达能力强,运算速度快,目标效率高,可移植性好,而且可以直接实现对系统硬件接口的控制,具有较强的系统处理能力。尤其是C++的出现,进一步增加了C语言面对对象的程序设计功能,使得C语言成为最流行的一种计算机程序设计语言。
本文提出了一种基于C++的误差处理的分析工具,在Visual Studio2010的平台上以MFC为框架,结合误差的三种类别,建立一个可以自动判别和计算误差的交互式。 关键字:数据处理;误差;MFC
I
戴耀溪:基于C++的误差处理的交互式程序设计
Abstract
With the time to enter the twenty-first Century, the use of computers makes it easier and more efficient processing and analysis of all kinds of data in life, improve the efficiency of Engineering operations. In the engineering measurement error and data processing becomes particularly important, the measurement is human
understanding of nature to explore the essential nature of means, is inevitable in the process of measurement error. Therefore, the study of the meaning of error are also important.
C language is widely used in recent years, a modern compiler language, it has the advantages of a variety of high-level language, but also has the function of low-level language. C language has rich functions, strong expression ability, fast operation speed, high target efficiency, good portability, and can be directly implemented on the system hardware interface control, with a strong system processing capacity. In particular, the emergence of C++, further increase the C language object-oriented programming features, making the C language has become the most popular one kind of computer programming language. This paper presents a analysis tool based on C language error handling, in the visual studio2010 platform based on MFC framework, combined with the error of three categories to establish an automatic identification and calculation error can be interactive.
Keywords:data processing;error;MFC
II
安徽工程大学毕业设计(论文)
目 录
摘要 ...............................................................................................................I Abstract ........................................................................................................ II 插表清单 ..................................................................................................... V 引 言 ......................................................................................................... -1- 第一章 绪 论 ......................................................................................... - 2 -
1.1课题背景 ................................................................................... - 2 - 1.2研究误差的意义以及内容 ....................................................... - 2 -
1.2.1研究误差的意义 ............................................................ - 2 - 1.2.2研究内容 ........................................................................ - 2 - 1.3本章小结 ................................................................................... - 3 - 第二章 误差的基本性质与程序设计基础 ........................................... - 4 -
2.1随机误差 ................................................................................... - 4 -
2.1.1随机误差产生的原因 .................................................... - 4 - 2.2.2随机误差的性质 ............................................................ - 4 - 2.2系统误差 ................................................................................... - 4 -
2.2.1系统误差产生的原因 .................................................... - 5 - 2.2.2系统误差性质 ................................................................ - 5 - 2.3粗大误差 ................................................................................... - 5 -
2.3.1防止和消除粗大误差的方法 ........................................ - 5 - 2.4 Visual C++基础 ......................................................................... - 6 - 2.5本章小结 ................................................................................... - 6 - 第三章 实验误差分析和数据处理 ....................................................... - 7 -
3.1测量误差的基本概念 ............................................................... - 7 -
3.1.1实验数据的误差来源及分类 ........................................ - 7 - 3.1.2实验数据的真值与平均值 ............................................ - 8 - 3.1.3误差的表示法 ................................................................ - 9 - 3.1.4实验数据的有效数字与记数法 .................................. - 10 - 3.2误差的校核 ............................................................................. - 12 -
3.2.1系统误差的校核 .......................................................... - 12 - 3.2.2粗大误差的校核 .......................................................... - 13 - 3.4本章小结 ................................................................................. - 13 - 第四章 数据分析与程序设计 ............................................................. - 15 -
4.1数据分析 ................................................................................. - 15 -
III
戴耀溪:基于C++的误差处理的交互式程序设计
4.2程序设计 ................................................................................. - 15 - 4.3实验数据分析 ........................................................................ - 17 - 结论与展望 ........................................................................................... - 26 - 致谢 ....................................................................................................... - 28 - 参考文献 ............................................................................................... - 29 -
IV
安徽工程大学毕业设计(论文)
插表清单
表3-1 角度误差与函数值位数对应表 .............................................. - 12 - 表4-1金属棒测量数据表 ................................................................... - 17 - 表4-2轴径测量数据表 ....................................................................... - 19 - 表4-3金属质量测量数据表 ............................................................... - 21 - 表4-4水体积测量数据表 ................................................................... - 22 -
V
安徽工程大学毕业设计(论文)
引 言
首先怎么才能正确的的研究误差,研究误差的意义是什么呢?大致可归纳为:认识误差的的性质,分析误差产生的原因——从跟本上消除或减小误差。正确处理测量和实验数据,合理计算所得结果——通过计算得到更接近真值得数据。还有就是正确的组织实验过程,设计用合适的仪器或测量方法——根据目标确定最合适的系统。
我们知道误差是测得值和被测量的真值之间的差,误差=测得值-真值。然后按照误差性质可分类为系统误差,随机误差,和粗大误差。 系统误差是在重复性条件下,对同一对象被测量进行很多次测量所得结果的平均值与被测量的与真值之差。而且在相同的条件下多次测量同一值得时候,该误差的符号和绝对值保持不变,或者在条件改变时,按一确定的规律变化的误差。然后随机误差是测得值与在相同条件下对同一被测量进行无线多次测量结果的平均值的差,又称为偶然误差,特征就是在相同的条件下多次测量同一量值时,绝对值和符号以不可确定方式变化的误差。最后粗大误差是指明显超出统计的规律和预期值得误差。
对于上面说的三种误差我们会有对应的解决办法,在课题研究的过程中会仔细的详述其过程,然后我们做的就是将三种误差处理的方法编辑成C语言的程序,设计一个合适的交互式程序进行调试,实验是否能够判断出误差,并合理的解决。
- 1 -
戴耀溪:基于C++的误差处理的交互式程序设计
第一章 绪 论
1.1 课题背景
人类在认识自然和遵循自然规律用于自然的时候,需要对自然界各种信息数据进行重复的研究和测量,由于受实验的方式和实验仪器的不完善,加上周围环境变化的影响,还有人们认识能力的一个限制等,数据和被测量在测量和实验中所得到的真值之间,难以避免的存在着差异,在数值上称之为误差。随着科学技术的不断发展和人们认识水平的不断提高,虽然可以将误差控制的愈来愈小但是终究不能完全消除它,误差存在的必然性和普遍性,已经为大量的实践所证明,为了充分认识并减小或消除误差,必须对测量过程和科学实验中始终存在的误差进行研究。
科学研究与经济建设中,任何科学实验和工程实践都离不开测量,可以说没有测量就没有科学。由于在测量实验结果中存在误差,影响了得到的测量实验数据的可依赖性,甚至失去科学价值和实用的意义。因此,为了减小和控制误差,是非常有必要的。在长期和大量的实验中,人们逐渐掌握误差理论知识的重要性,特别是当今的信息技术时代,任何科学实验和工程实践所获得的大量数据信息,必须经过合理的数据处理并给出科学评价才有实际的价值。 1.2 研究误差的意义以及内容 1.2.1 研究误差的意义
能够正确认识误差的性质,分析误差产生的原因,用来消除或者减小误差。正确组织实验过程,合理设计仪器或选用仪器和测量的方法,确保能在最经济条件下,得到最理想的结果。 1.2.2 研究内容
误差的基本概念,所谓的误差就是测得值减去被测量所得到的真值,即:误差=测得值—真值,测量误差可用绝对误差表示,也可以用相对误差表示。 (一)绝对误差
某一量值的测得值减去真值的差就是绝对误差,通常称为误差,即:
- 2 -
安徽工程大学毕业设计(论文)
绝对误差=测得值—真值,可知绝对误差可能是正值也可是负值。 (二)相对误差
绝对误差除以被测量的真值的值称为相对误差。由于测得值与真值相近所以可以用绝对误差与测得值之比值作为相对误差即: 相对误差=绝对误差/真值
由于绝对误差有可能是正值也有可能是负值,因此相对误差也可能使正值或负值。
误差的来源,在测量的过程中,误差的产生的原因可归纳为以下一个方面;
(1)测量装置的误差
1.标准器具的误差,以固定的形式复出现标准量值的器具。
2.仪器的误差,凡用来直接或间接测量和已知量进行比较的器具设备。
3.附件的误差,仪器附件以及附属工具。 (2) 环境的误差
由于各种环境因素和规定的标准状态不一致而引起的测量装置和被测量本身的变化所造成的误差。 (3) 方法的误差
由于测量方式不是很理想所引起的误差,比如采用相近的测量方法而造成的误差。 (4) 人员的误差
由于测量者受分辨能力的限制,因工作疲劳造成的视觉感官的生理上的变化和一定习惯引起的读数误差,以及精神上的因素产生的一时疏忽所引起的误差。
误差的分类,误差可以分为三大类型(随机误差,粗大误差,系统误差)。三种误差的判断方法利用Visual C++编辑设计程序并且运行调试,设计交互式程序输入实验数据并进行误差的处理。 1.3 本章小结
本章主要说明了实验平台的课题背景,整体上对了解课题提出了一些相关的原因,简介研究误差的意义,误差的基本概念和误差分类和如何将误差处理的方法用C++实现,说明无论在理论上还是在实践中,研究各种参数检测过程中出现的测量误差都有现实的意义。
- 3 -
戴耀溪:基于C++的误差处理的交互式程序设计
第二章 误差的基本性质与程序设计基础
2.1 随机误差
在同一测量条件下,多次测量同一值时,绝对值和符号以不可预订方式变化的误差称为随机误差 2.1.1 随机误差产生的原因
当对同一量值进行多次的等精度的重复测量时,得到一系列不一样的测量值,每个测量值都有误差,对这些误差的出现又没有确定的规律,即前一个误差出现以后,不能预订下一个误差的大小和方向,然而就误差的总体而言却具有统计的规律性。
随机误差是由很多目前未能掌握或者不便掌握的微小因素所构成主要的测量装置的因素,环境方面的因素还有和人员方面的因素。 2.2.2 随机误差的性质
依据正态分布可以知道随机误差对称性,单峰性,有界性和抵 偿性。 (1)绝对值的相等正向误差与负向误差出现的次数一样,所以这就是误差的对称性。
(2)在一定的测量条件下随机误差正负值不会超过一定的界限,这称为误差的有界性。
(3)绝对值比较小的误差和绝对值大的误差相比出现的频率高,这称为误差的单峰性。
(4)随着测量数量的增加,随机误差的算术平均值逼近于零,这称为误差的抵偿性。 2.2 系统误差
在同一条件下,多次测量同一量值时,绝对值,符号保持不变,或者在条件改变时,按一定规律变化的误差称为系统误差。实际的测量过程中一般都会存在系统误差,在某些特定情况下的系统误差的数还是相对较多的,所以测量的精度不一定决定于随机误差,还决定与系统误差的影响。由于系统误差是和随机误差一起存在测量数据之中,而且不容易被发现,多次的测量并不能能减小它对测量结果的影响,这种埋藏比较不容易发现的特性,让系统误差比随机误差更有危险性,
- 4 -
安徽工程大学毕业设计(论文)
所以研究系统误差的特征和规律的特性用特定的方法发现和减弱或者消除系统误差,就显得非常的重要。 2.2.1 系统误差产生的原因
系统误差是由一直不变的或者按照一定特性变化的原因所造成的,这些误差原因是可掌握的。
(1)测量装置方面的原因,设备机构设计原理上的缺陷,如齿轮杠杆上测微仪直线位移和转角不成比例的误差。
(2)环境方面的原因,测量实际温度对规定温度的偏差,测量的过程中温度和湿度按照一定规律变化的误差。
(3)测量方法上的因素,采用相近的测量方法和相近的计算公式等引起的误差。
(4)测量人员方面因素,由于测量者的个人特点,在刻度上估计读数时,习惯于偏向某一方。 2.2.2 系统误差性质
系统误差的特征是在同一条件下,多次测量同一量值时,误差的绝对值和符号保持不变,或者在条件改变时,误差按照一定的规律变化。 2.3 粗大误差
粗大误差产生的原因是多方面的,大致可归纳为:
(1)测量人员的主观原因,由于测量者工作时工作态度不认真,工作过程中太劳累或者缺少经验实际操作失误造成的或者是在测量的过程中不小心,不耐心,不仔细等,从而造成了错别的读数或者有差错的记录,这个是出现粗大误差的主要因素。
(2)客观外界因素,由于测量条件意外的改变引起仪器示值或被测对象位置的改变产生的粗大误差。 2.3.1 防止和消除粗大误差的方法
对粗大误差,除了设法从测量的结果中发现和鉴别而加以剔除外,更重要是加强工作者的责任意识和以严谨的学习态度对待测量工作;此外还要保证测量外界条件的稳定或者应避免外部发生激烈的变化时
- 5 -
戴耀溪:基于C++的误差处理的交互式程序设计
进行测量。若能达到以上要求一般情况会防止粗大误差的产生。
在某些情况下,为了及时的发现和防止测得值中含有粗大误差,可采用不等精度测量和互相之间进行校核的方法。 2.4 Visual C++基础
Visual C++是一个功能强大的面向对象的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导App Wizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。
VC++应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势,
本课题利用Microsoft公司Visual C++ 6.0的MFC方式设计大学误差分析实验平台,Visual C++是一个功能强大的面向对象的可视化软件开发工具,它有很多的优点,所以利用Visual C++ 6.0设计误差分析实验平台会解决上述缺陷,使试验平台的界面友好,易于操作,学生更容易掌握所学内容。 2.5 本章小结
本章着重强调了系统误差,随机误差,粗大误差的产生原因和性质和编辑程序的Visual C++和交互式程序设计的Visual stdio。
- 6 -
安徽工程大学毕业设计(论文)
第三章 实验误差分析和数据处理
通过实验测量所得大批数据是实验的主要成果,但是在实验过程中,由于测量仪器仪表、测量方法、周围环境和人的观察等方面的因素,实验数据总存在一些误差,所以在整理这些数据时,应该对于实验数据有一个较为准确的评定方式。进行误差分析的原因就是是判断实验数据的精确或者误差,通过误差的分析,可以很清楚的认识误差的来源及其影响,并想办法删除数据中所包含的没有用的,还可以进一步修改实验方案。在实验中留意哪些是影响着实验精确度的主要方面原因,这对正确的组织实验方法和设计方案,从而提升实验的精确性有很重要的指示作用。 3.1 测量误差的基本概念 3.1.1 实验数据的误差来源及分类
误差就是进行实验测量值和真值的差别,基于下面的一些原因,误差可以为三大类: (1)系统误差
系统误差是由不变的或者按照一定的顺序变化的因素所造成,这些误差原因是能够控制的。
测量装置上的原因,测量工具设计原理上的缺陷,就像仪器零件成型的过程和安装时候的不正确,还有如标尺的刻字的偏差,刻度盘与指针的安装不正确,仪器附件做出的偏差,如标准环规直径测量偏差等。
环境的原因,测量的过程中实际温度和固定温度之间的差,测量的过程中温度,湿度等按一定固有变化的误差。
(一)测量方式的原因,采用相近的测量方法或者相近的计算公式引起的误差。
(二)测量人员方面的因素,由于测量者的个人的习惯,在刻度上估计读数时,对于数会习惯性的有偏差;在测量动态的时候也有迟缓的时候。
系统误差的特征是在同一条件下多次测量同一值时,误差的绝对值和符号保持不变,或者在条件改变时,误差按照一定的规律变化。 (2)随机误差(又称偶然误差)
随机误差由一些不易控制的因素引起,由很多暂时未能掌握或不
- 7 -
戴耀溪:基于C++的误差处理的交互式程序设计
便掌握的微小因素构成。如实验人员熟练程度和感官上的误差、外界条件的变动、肉眼观察不准确等一系列问题。这类误差在一系列测量中的数值和符号是不确定的,而且是无法消除的,但是它按照统计的规律发生,所以,可以被发现并且予以定量。实验数据的精确度主要取决于这些偶然误差。若测量列中不包含系统误差和粗大误差,则该测量列中的随机误差一般服从正态分布,因此,它具有决定的意义。 设被测量的真值为L0,一系列测得值为li,则测量列中的随机误差i为
iliL0 (3-1)
式中,i=1,2,„,n。
正态分布的分布密度f和分布函数F为
2/221Fed (3-2)
22/221fe(3-3)
2
式中 ——标准差(或称方均根误差); e——自然对数的底,其值为2.7182„。 (3)粗大误差
粗大误差主要是由实验人员粗心大意,如读数错误或操作失误所致。这类误差往往与正常值相差很大,应在整理数据时加以剔除。另外就是客观条件的原因,就是由于测量条件的意外改变引起仪器示值或被测对象位置的改变而产生的粗大误差。
3.1.2 实验数据的真值与平均值
真值是待测物理量客观存在的确定值,由于测量时不可避免地存在一定误差,故真值是无法测得的。但是经过细致地消除系统误差,经过无数次测定,根据随机误差中正负误差出现几率相等的规律,测定结果的平均值,称此平均值为最佳值。但是实际上测量次数总是有限的,由此得出的平均值只能近似于真值,称此平均值为最佳值。计算中可将此最佳值当做真值,或用“标准仪表”(即精确度较高的仪表)所测之值当做真值。 常用的平均值:
(1)算术平均值x
- 8 -
安徽工程大学毕业设计(论文)
在系列测量中,被测量的n个测得值的代数和除以n而得的值称为算术平均值。
设 l1、l2、„、ln代表各次的测量值, n代表测量次数,则算术平均值为
n_lil1l2...lnxi1nn (3-4)
算术平均值是最常用的一种平均值。凡测量值的分布服从正态分布时,用最小二乘法原理可证明:在一组等精度的测量中,算术平均值为最佳值或最可信赖值。
(2)均方根平均值x均
n2 xi222xxx12ni1 x均nn
(3-5)
(3)几何平均值x几
(3-6) (4)对数平均值x对设有两个变量 x1、x2,其对数平均值为:
x几nx1x2xnx对 3.1.3 误差的表示法
x1x2lg(x1/x2) (3-7)
1.绝对误差d
在某一物理量在测量中,测量的值减去真实值所得的差称为绝对误差。实际工作中最常见的是最好的值代替真实的值,测量值减去最佳值的
差值称残余误差,也称为绝对误差,有: dixiXxixm (3-8)
式中:di——绝对误差;
xi——i次测量值;
X——真值;
- 9 -
戴耀溪:基于C++的误差处理的交互式程序设计
xm——平均值。
2.相对误差e
为了比较不同测量值之间的精确度,用绝对误差与真值(或近似地与平均值)的商作为相对误差,即
edd100%Xxm (3-9)
在单次测量中,式中
d——绝对误差;
|X|——真值的绝对值; xm——平均值。 3.算术平均误差δ
δ是测量值的误差绝对值的算术平均值,是表示一系列测定值误差的较好方法之一,有
xixmdinn (3-10)
式中:xi----测量值,i=1,2,3,„,n;xm----平均值;di----绝对误差。
4.标准误差(均方误差)σ
在有限次测量中,标准误差可用下式表示:
(3-11)
标准误差是目前最常用的一种表示精确度的方法,它不但与一系列测量值中的每个数据有关,而且对其中较大的误差或较小的误差敏感性很强,能较好地反映实验数据的精确度,实验愈精确,其标准误差愈小。
3.1.4 实验数据的有效数字与记数法
一、有效数字
实验数据或根据直接测量值的计算结果,总是以一定位数的数字来表示。究竟取几位数才是有效的呢?是不是小数点后面的数字越多就越正确?或者运算结果保留位数越多就越准确?其实这是错误的想法。这是因为,第一,数据中小数点的位置不决定准确度,而与所用
- 10 -
(xixm)2n1dn2i安徽工程大学毕业设计(论文)
单位大小有关;第二,与测量仪表的精度有关,一般应记录到仪表最小刻度的十分之一位。例如:某标尺的最小分度为1mm,则读数可以读到0.1mm。如所测长度为524.5mm,即前三位是直接读出的,是准确的,最后一位是估计的,是欠准的或可疑的,称该数据为4位有效数。如液面恰好在524mm刻度上,则数据应记作524.0mm。 二、科学计数法
在科学与与工程中,为了清楚地表达有效数或数据的精度,通常将有效数写出并在第一位数后加小数点,而数值的数量级由10的整数幂来确定,这种以10的整数幂来记数的方法称科学记数法。例如:
30.0088应记作8.810。需要注意的是,科学记数法中,在10的整数幂之前的数字应全部为有效数。 三、数字舍入规则
对于末位数很多的近似数,当有效的几位数确定后,其后面剩下的数字应当舍去,而保留的有效数字最后一位的数字应当按如下舍入规则进行调整: 1)若舍去部分的数值大于保留部分的末位的半个单位,则末位加1; 2)若舍去部分的数值小于保留部分的末位的半个单位,则末位不变; 3)若舍去部分的数值等于保留部分的末位的半个单位,则末位凑成整数,当末位为偶数时则末位不变,当末位为奇数时则末位加1。 例如2.24157舍入后2.242,6.691498舍入后为6.691。 四、有效数的运算
(1)加减法运算。各不同位数有效数相加减,其和或差的有效数等于其中位数最少的一个,其余各数据可以多取一位,但最后结果应与小数位数最少的数据小数位相同。
(2)乘除法计算。乘积或商的有效数,其位数与各乘、除数中有效数最少的相同。其余各数据要比最少的数据位数多取一位数字,但最后结果应与小数位数最少的数据小数位相同。等常数有效位数可多可少,根据需要选取。
(3)乘方与开方运算。乘方、开方后的有效数与其底数相同。 (4)对数运算。对数的有效数位数与其真数相同。
(5)在对数运算时,n位有效数字的数据应该用n位对数表,或用(n+1)位对数表,以免损失精度。
(6)三角函数运算中,所取函数值的位数应随角度误差的减小而增多,其对应关系如下表所示。
- 11 -
戴耀溪:基于C++的误差处理的交互式程序设计
表3-1 角度误差与函数值位数对应表
角度误差 函数值位数 10 5 1 6 0.1 7 0.01 8 (7)所有取自手册上的数据,其有效数按计算需要选取,但原始数据如有限制,则应服从原始数据。
(8)一般在工程计算中取三位有效数已足够精确,在科学研究中根据需要和仪器的可能,可以取到四位有效数字。 3.2 误差的校核 3.2.1 系统误差的校核
一、实验对比法
实验对比法是改变产生系统误差的条件进行不同条件的测量,以发现系统误差,这种方法适用于发现不变的系统误差。例如量块按工称尺寸使用时,在测量结果中就存在由于量块的尺寸偏差而产生的不变的系统误差,多次重复测量也不能发现这一误差,只有用另一块高一级精度的量块进行对比时才能发现。[1]
二、不同公式计算标准差比较法[1]
对于等精度的测量时,可用不同公式计算标准差,通过比较以发现系统误差。
按贝塞尔公式: 1
按别捷尔斯公式:21.253(3-13)
n(n1)
令: 11u (3-14)
22若: u (3-15)
n1则怀疑测量列中存在系统误差。 三、计算数据比较法[1]
对于同一量进行多组测量,得到很多数据,通过多组计算数据比
- 12 -
nvi1n2in1 (3-12)
vi1i安徽工程大学毕业设计(论文)
较,若不存在系统误差,其比较结果应满足随机误差条件,否则可认为存在系统误差。
若对于同一量独立测量得m组测量结果,并知它们的算术平均值和标准差为:x1,1;x2,2;;xm,m (3-16) 而任意两组结果之差为:xixj (3-17) 其标准差为:
i22j (3-18)
则任意两组结果xi和xj间不存在系统误差的标志是:
xixj2i22j (3-19)
3.2.2 粗大误差的校核
产生粗大误差的原因有很多方面,大致可归纳为:
(1)测量人员的主观原因 由于测量者工作责任感不强,工作过于疲劳或缺乏经验操作不当,或在测量时不小心、不耐心、不仔细等,从而造成了错误的记录,这是产生粗大误差的主要原因。
(2)客观外界条件的原因 由测量条件意外的变化(如机械冲击、外界振动等),引起仪器显示值或被测对象位置的改变而产生粗大误差。
通常用来判别粗大误差的标准是: 3 准则(莱 以 特 准 则)
3准则是最常见也是最简单的判别粗大误差的准则,它是以测量次数无限大为前提,但通常来说测量的次数都比较少,所以说3是一个比较近似的准则。
对于某一个测量组,若测得值只有随机误差,则据随机误差的正态分布规律残余误差落在3以外的概率约为0.3%。如果在测量列中,发现有大于3的残余误差的测得值。即
vi3 (3-20)
则可以认为它含有粗大误差,应予剔除。 3.4 本章小结
本章着重介绍了误差分析与数据处理的相关的基础知识,主要内容有误差的定义及产生、误差的校核、科学计数法、有效数字取舍原则, - 13 -
戴耀溪:基于C++的误差处理的交互式程序设计
各种误差参数的计算。
- 14 -
安徽工程大学毕业设计(论文)
第四章 数据分析与程序设计
4.1 数据分析
这部分是要分析误差的各误差参数,有算术平均值:x,标准差:,误差分布函数:
2/221fe2 (3-21)
残余误差等参数,及判断所输入的数据中是否含有粗大误差,便
于图形化输出,首先,用for循环求出输入数据的总体的和,利用式3-4计算出平均值x,再求出各个数据的残余误差,根据贝塞尔公式3-12进行计算,得出该组数据的标准差,再通过误差分布函数,算出分布函数数组
判断粗大误差,根据莱以特准则(式3-20)进行对粗大误差的判断,用if语句实现该判断,如果存在粗大误差,则保存存在粗大误差数组元素的序号,根据该序号,进行剔除操作。若存在粗大误差,则不进行任何和操作。
4.2 程序设计
1.以下程序是求数据的平均值,输入一组数据以后可求其平均数。 double average_fun(double datas[],int datas_num) {
int k=0;
double average=0;
for(k=0;k average/=datas_num; return average; - - - 15 - 戴耀溪:基于C++的误差处理的交互式程序设计 } /*输入数据以后可求出平均值*/ 2.以下程序是求残余误差,输入原数据,将数据与平均值的差即为残余误差。 void canyu_error_fun(double datas[],double canyu_error_data[],double average,int datas_num) { int k=0; for(k=0;k 3.以下程序是判断系统误差,利用的是残余误差法进行判断的。利用贝赛公式和别捷尔斯公式,输出若小于0.01则不存在系统误差,反则存在系统误差。 void judge_system_error_fun(double canyu_error_data[],int datas_num) { int k,j; double system_errors=0,system_error=0,data_error; j=(datas_num+1)/2; for(k=0;k else printf(\"存在系统误差\\n\"); } 5判别粗大误差,利用的是莱以特准则来判断粗大误差,若输出大于3测存在粗大误差,进行剔除,反则不存在粗大误差。 int liyiter(double canyu_error_data[],double std_row_besia,int datas_num) { int k=0,m=0; while(k 安徽工程大学毕业设计(论文) { if(fabs(canyu_error_data[k])>3*std_row_besia) { m=1; break; } else k++; } return m; free(datas_list); } 6以下程序是求算术平均值的标准差。 ouble std_error_average_fun(double std_bersia,int datas_num) { double std_error_average; std_error_average=std_bersia/(sqrt((double)datas_num)); return myround(std_error_average,4); } 4.3 实验数据分析 (一)通过同一仪器测量金属条的质量32次得到不同的结果: 表4-1金属棒测量数据表 对金属棒多次测量数据(克) 8.150 8.145 8.155 8.155 8.142 8.143 8.150 8.153 8.140 8.149 8.148 8.145 8.143 8.142 8.156 8.153 (1)求算数平均值和标准差 利用下式可求出该组数据的平均值x=8.148 8.148 8.156 8.144 8.152 8.146 8.148 8.154 8.148 8.145 8.152 8.148 8.150 8.146 8.150 8.151 8.154 - - - 17 - 戴耀溪:基于C++的误差处理的交互式程序设计 x x i1 N i N (4-2) 标准差利用下式可算出标准差s=0.004g sxxii1N2N1 (4-3) (2)判断系统误差 根据残余误差观察法,由上表可知误差符号大体相同,而且没有明显的变化规律,因此可以判断该测量列没有变化的系统误差存在。 若按残余误差校核法,因为n=32,所以K=n+1/2=16.5 vivi0.002i1i171632 (4-4) 因差值较小,所以可以判断该测量量没有系统误差的存在。 (3)判断粗大误差 由于本次实例测量次数较多所以可以根据3判别准则判别粗大误差 根据(3-20)式可验算出本次实验无粗大误差。 (4)求算术平均值的标准差根据式 xn (4-5) 可计算出约等于0.0007 x(5)求算术平均值得极限误差 算术平均值得极限误差是按t分布计算的。已知v=n-1=31,查表可知 ta=1.51再根据式 limxta (4-6) x求得limx=0.001g - 18 - 安徽工程大学毕业设计(论文) (6)最后测量结果Lxlimx=(8.1480.001)g (二)对某一轴径等精度测量20次,得到如下数据求测得结果。 表4-2轴径测量数据表 20.42 20.43 20.40 20.43 20.42 20.43 20.42 20.39 20.40 20.43 20.41 20.42 20.39 20.43 20.41 20.38 20.44 20.44 20.33 20.42 根据以上数据可计算出该组数据的平均值x=20.408,=20.408。 算术平均值标准差x0.0069limx0.0197n,。然后将上表数 输入计算机进行核算算得如下结果: - - - 19 - 戴耀溪:基于C++的误差处理的交互式程序设计 可知测得结果为L=xlimx(20.2080.197)mm。 (三)对一金属块用同一仪器测量25次,所得结果如下数据,求测量结果。 - 20 - 安徽工程大学毕业设计(论文) 表4-3金属质量测量数据表 12.113 12.116 12.119 12.119 12.108 12.117 12.118 12.120 12.120 12.119 12.119 12.301 12.109 12.122 12.123 12.114 12.112 12.117 12.123 12.122 12.115 12.111 12.116 12.114 12.107 根据以上数据可计算出该数据的平均值x=12.124,=12.124。算术 平均值标准差xn0.0074limx0.0206将所得数据输入计,, 算机中进行核算可得如下结果: - - - 21 - 戴耀溪:基于C++的误差处理的交互式程序设计 可知测得结果为L=xlimx(12.1240.026)g。 (三)测量一容器中水的体积得到如下30组数据,求测量结果。 表4-4水体积测量数据表 18.1 18.7 18.6 18.5 18.4 18.7 17.9 17.8 17.7 18.4 18.7 19.1 19.2 18.9 18.8 18.6 18.7 19.3 19.2 19.1 17.8 17.9 17.7 18.4 18.8 18.9 19.3 19.2 19.3 19.4 - 22 - 安徽工程大学毕业设计(论文) 根据以上数据可计算出该数据的平均值为18.63,算术平均值的标准差为x0.0971limx0.267将所得数据输入计算机中进行核 n,。 算可得如下结果: - - - 23 - 戴耀溪:基于C++的误差处理的交互式程序设计 - 24 - 安徽工程大学毕业设计(论文) 可知测得结果为L=xlimx(18.6370.267)ml。 根据以上三组数据由计算结果和程序运行核算结果,两种方式结果是相同的,因此该段程序是正确的。 4.4 本章小结 本章主要是介绍了数据分析和判断误差的过程,并且利用Visual C++进行编写程序,而且进行实验,分步进行计算,求算术平均值,残余误差,校核算术平均值及其残余误差。然后判断系统误差,粗大误 - - - 25 - 戴耀溪:基于C++的误差处理的交互式程序设计 差,算术平均值得标准差,求算平均值得极限误差, 最后得出测量的结果。 - 26 - 安徽工程大学毕业设计(论文) 结论与展望 本设计是利用Microsoft公司Visual C++ 6.0平台设计的,主要是应用MFC框架设计的。Visual C++是一个功能强大的面向对象的可视化软件开发工具,开发过程符合人们的习惯思维;对象的封装性及对象之间的松散组合,给软件的修改和维护带来了方便;可重用性好,而且与可视化技术相结合,改善了工作界面,界面友好,方便使用。这样就解决了由面向过程的程序语言所设计的实验平台的缺点,例如界面不友好,使用不方便等缺点,从而提高了教学实验的效率和效果。 本设计首先总体介绍了误差实验的基础知识,包括误差的定义和分类,各种误差参数的计算,以及各种误差的校验,通过最小二乘法引出一元线性回归问题。为后续的设计奠定了理论基础。就误差实验平台的基本需求总体上设计了实验平台的基本功能。通过详细设计,实现了需求功能的各种算法,最后将实验结果显示出来。本设计是在阅读学习国内外相关参考文献的基础上完成的,主要的功能是:误差与数据处理,对测量的到的一组数据进行误差分析,得到与误差相关的各种误差参数,并对误差校核,把我查分布曲线和分析结果显示出来,使人直观地分析误差。对于如何判断误差的方法和一些准则,在误差数据分析的过程中能够很好的锻炼自己的逻辑思维能力,未来随着人们对误差的逐步认知,我们会逐渐减小误差在现实生活中给我们带来的影响们一直都在不断的探索和研究误差。 - - - 27 - 戴耀溪:基于C++的误差处理的交互式程序设计 致 谢 非常感谢马学刚老师在我大学学习的最后阶段给予自己的指导,从最初的定题到资料的收集到写作,修改到论文定稿,给予了我耐心的指导和无私的帮助,老师认真工作的态度诚信宽厚的为人处世态度为我今后的工作树立了优秀的榜样。 - 28 - 安徽工程大学毕业设计(论文) 参考文献 [1]张世英,刘智敏.测量实践的数据处理[M].北京:科学出版社,1977. [2]费业泰.误差理论与数据处理(第5版)[J].北京:机械工业出版社,2007 [3]孙鑫,余安萍.VC++深入详解[J].北京:电子工业出版社,2006.6 [4]谭浩强.C++程序设计.北京:清华大学出版社,2004[7] [5]唐文彦.传感器技术(第四版)[J].北京:机械工业出版社,2007 [6]黄维通.Visual C++面向对象与可视化程序设计(第二版)[J].北京:清华大学出版社,2003 [7]伍俊良.Visual C++课程设计与系统开发案例[J].北京:清华大学出版社,2002 [8]肖宏伟.Visual C++6.0实效编程百例[J].北京,人民邮电出版社,2002 [9]袁丁,傅一平.Visual C++精彩实例详解[J].北京,机械工业出版社,2003 [10]栾云才,林玮玮,马晓艳.基于VC 的数据采集处理系统分析与设计.泰山学院学报, 第29 卷第6 期:83~86[N] [11]刘志刚,鲍加贞,汤时虎.基于VC的最小二乘拟合圆在LAMOST中的应用. 现代制造工程2008年第1期:94~96[R] [12]RobertD Thomp son.MFC开发人员参考手册[M ] [J].北京:机械工业出版社, 1998 [13]张倩莉.基于VC++ 的智能考勤系统设计与实现.IT 技术论坛.2008 年第28 期:426~455[J] [14]谭斌,姚旺生,付学志.基于VC ++的虚拟逻辑分析仪[J].舰船电子工程, 2008年第1期:113~116 [15]刘和平,徐育军,张学涛.最小二乘法的测量误差分析[J].继电器,第34卷 第2期:6~14 [16]周晶晶,张学志,张帆,汤小慷,万强.基于Visual C++的数据处理软件设计[J].微计算机信息,2009 年第25 卷第2-3 期 [17] 蔡士毅,李博峰,石德斌,刘成,沈云忠.无渣轨道高速铁路精密测量数据处理.大地测量与地球动力学[J],2008年第28卷第1期:114~117 [18]王新和,程世洲.曲线拟合的最小二乘法.新疆职业大学学报[J],2004年6月第12卷 第2期:84~86 [20]沙定国.误差分析与测量不确定度评定[M].北京:中国计量出版 - - - 29 - 戴耀溪:基于C++的误差处理的交互式程序设计 社,2003. [21]盛骤,谢式千,潘承毅.概率论与数理统计[M].北京:高等教育出版社,2001. [22]杨学兵.C语言程序设计.合肥:中国科学技术大学出版社,2004. [23]谭浩强.C语言程序设计(第二版).北京:清华大学出版社,2001. [24]费业泰.现代误差理论及其基本问题[M].宇航计测技术[J],1996(4,5):5. [25]肖明耀.实验误差估计与数据处理[M].北京:科学出版社,1980. [26]曹纪铭,陈艳红.程序设计题解·综合练习.北京:机械工业出版社,2005. [27]林小茶.C语言程序设计.北京:中国铁道出版社,2004. [28]J.C.de Paula.EXPERIMENTAL ERRORS AND DATA ANALYSIS[J].Chemistry 302.2003. [29]Ishan Purohit a, Pallav Purohit b.Instrumentation error analysis of a box-type solar cooker[J].Energy Conversion and Management 50 (2009) 365–375. [30]Scheilla V.C.de Souza,Roberto G. Junqueira.A procedure to assess linearity by ordinary least squares method[J].Analytica Chimica Acta 552 (2005) 25–35. - 30 -
因篇幅问题不能全部显示,请点此查看更多更全内容