北交电子测量大作业_第1页
北交电子测量大作业_第2页
北交电子测量大作业_第3页
北交电子测量大作业_第4页
北交电子测量大作业_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子测量第二章大作业班级: 自动化 1姓名: 学号: 121.主要实现功能:实现对输入数据的误差处理:剔除粗大误差。判断累进性系统误差和周期性系统误差。计算平均值,方差,不确定度。2.具体程序:include<stdio.h>#include<math.h>double SUM(double x,int n);double AVRG(double x,int n);double SD(double x,int n);int PauTa(double x,int n);int Chauvenet(double x,int n);int Grubbs_1(double x,

2、int n);int Grubbs_2(double x,int n);static int n;static double a500;int main()int i,choose,leap=1;double avg,sd,sd1,v500,M=0,AH=0,vmax=0;double P,PX=12.706,4.303,3.182,2.776,2.571,2.447,2.365,2.306,2.262,2.228,2.131,2.086,2.060,2.042,2.021,2.000,1.980,1.960;printf("请输入数据总个数:n");scanf("

3、;%d",&n);printf("请输入数据(数据间用空格隔开):n");for(i=0;i<n;i+)scanf("%lf",&ai);avg=AVRG(a,n); /*调用AVRG函数求均值*/sd=SD(a,n); /*调用SD函数求标准差*/printf("n输入数据的平均值为%lf,标准差为%lfn",avg,sd);while(leap)printf("请选择粗大误差的检验法:n1.莱特检验法(一般数据数大于10时选用)n2.肖维纳检验法(要求数据数大于5)n3.格拉布斯检验法(置

4、信概率99%)n4.格拉布斯检验法(置信概率95%)n5.停止检验n");scanf("%d",&choose);if(choose=1&&n<10)printf("数据总量小于10,不能使用莱特检验法。n"); /*莱特检验法一般在n>10时选用*/else if(choose=2&&n<5)printf("数据总量小于5,不能使用肖维纳检验法。n"); /*肖维纳检验法要求数据数大于5*/else switch(choose)case 1 : leap=PauTa

5、(a,n);break;case 2 : leap=Chauvenet(a,n);break;case 3 : leap=Grubbs_1(a,n);break;case 4 : leap=Grubbs_2(a,n);break;case 5 : leap=0;break;default: printf("输入错误,请重新选择n");break; /*用switch函数选择不同判据*/avg=AVRG(a,n);sd=SD(a,n);for(i=0;i<n;i+)vi=ai-avg; /*计算残差*/if(vmax*vmax<=vi*vi)vmax=vi; /*

6、绝对值最大的残差*/printf("粗大误差剔除完毕,剩余数据如下(括号内为残差):n");for(i=0;i<n;i+)printf("%f(%f) ",ai,vi);printf("平均值为%lf,标准差为%lfn",avg,sd); /*马利科夫判据*/if(i%2=0)for(i=0;i<n/2;i+)M+=vi;for(i=n/2;i<n;i+)M-=vi;M=sqrt(M*M);vmax=sqrt(vmax*vmax);if(i%2=1)for(i=0;i<(n-1)/2;i+)M+=vi;for(

7、i=(n-1)/2;i<n;i+)M-=vi;M=sqrt(M*M);vmax=sqrt(vmax*vmax);if(M>=vmax)printf("n根据马利科夫判据,存在累进性系统误差。n");else printf("n根据马利科夫判据,不存在累进性系统误差。n");/*阿卑-赫梅特准则*/for(i=0;i<n-1;i+)AH+=vi*vi+1;if(AH*AH)>=(n-1)*sd*sd*sd*sd)printf("n根据阿卑-赫梅特准则,存在周期性系统误差。n");else printf("

8、;n根据阿卑-赫梅特准则,不存在周期性系统误差。n");if(n>120)P=PX17;else if(n>60)P=PX16;else if(n>40)P=PX15;else if(n>30)P=PX14;else if(n>25)P=PX13;else if(n>20)P=PX12;else if(n>15)P=PX11;else if(n>10)P=PX10;else P=PXn-1;sd1=sd/(sqrt(n);printf("n该组数组的置信区间为%lf,%lf(置信概率为95%)n",(avg-P*sd

9、1),(avg+P*sd1);return 0;double SUM(double x,int n) /*定义子函数*/double s=0;int i;for(i=0;i<n;i+)s+=xi;return s;double AVRG(double x,int n)double aver=0;aver=SUM(x,n)/n;return aver;double SD(double x,int n)double aver,sd,SUM=0;int i;aver=AVRG(x,n);for(i=0;i<=n;i+)SUM+=xi*xi;sd=sqrt(SUM-n*aver*aver)

10、/(n-1);return sd;int PauTa(double x,int n)int i,j=0,leap;double v500,temp=0,aver,sd;aver=AVRG(x,n);sd=SD(x,n);for(i=0;i<n;i+)vi=xi-aver;for(i=0;i<n;i+)if(vi*vi>=9*sd*sd)&&(vi*vi>temp*temp)temp=vi;j=i+1;if(j)for(i=j-1;i<n-1;i+)xi=xi+1;n-;printf("根据莱特检验法,本次剔除的数据为%lfn%d"

11、;,xj-1,n);leap=1;elseprintf("依据莱特检验法,没有要剔除的数据n");leap=0;return leap;int Chauvenet(double x,int n)int i,j=0,leap;double v500,temp=0,ch,aver,sd;double chx=0,0,0,0,1.65,1.73,1.79,1.86,1.92,2.00,2.04,2.07,2.10,2.13,2.16,2.18,2.20,2.22,2.24,2.26,2.28,2.30,2.32,2.33,2.34,2.35,2.37,2.38,2.39,2.45

12、,2.50,2.58,2.64,2.74,2.81,3.02;if(n>36)ch=chx36;else ch=chxn-1;aver=AVRG(x,n);sd=SD(x,n);for(i=0;i<n;i+)vi=xi-aver;for(i=0;i<n;i+)if(vi*vi)>=(ch*ch*sd*sd)&&(vi*vi)>=(temp*temp)j=i+1;temp=vi;if(j)printf("依据肖维纳检验法,本次剔除了第%d个数据%lfn",j,xj-1);for(i=j-1;i<n-1;i+)xi=xi+1;

13、leap=1;n-;elseprintf("依据肖维纳检验法,没有要剔除的数据n");leap=0;return leap;int Grubbs_1(double x,int n)int i,max=0,min=0,leap;double v500,temp=0,g,sd,aver;double gx30=0,0,1.15,1.46,1.67,1.82,1.94,2.03,2.11,2.18,2.23,2.29,2.33,2.37,2.41,2.44,2.47,2.50,2.53,2.56,2.58,2.60,2.62,2.64,2.66,2.74,2.81,2.87,2.

14、96,3.17;if(n>=100)g=gx29;else if(n>=50)g=gx28;else if(n>=40)g=gx27;else if(n>=35)g=gx26;else if(n>=30)g=gx25;else if(n>=25)g=gx24;else g=gxn-1;aver=AVRG(x,n);sd=SD(x,n);for(i=0;i<n;i+)vi=xi-aver;if(xmin>xi)min=i;if(max<xi)max=i;if(vmax*vmax<vmin*vmin)max=min;if(vmax*vma

15、x>g*g*sd*sd)printf("根据格拉布斯检验法,本次剔除了第%d个数据%lf(置信概率99%)n",max,xmax);for(i=max;i<n-1;i+)xi=xi+1;leap=1;n-;elseprintf("根据格拉布斯检验法,没有要剔除的数据n");leap=0;return leap;int Grubbs_2(double x,int n)int i,max=0,min=0,leap;double v500,temp=0,g,sd,aver;double gx30=0,0,1.16,1.49,1.75,1.94,2.

16、10,2.22,2.32,2.41,2.48,2.55,2.61,2.66,2.71,2.75,2.79,2.82,2.85,2.88,2.91,2.94,2.96,2.99,3.01,3.10,3.18,3.24,3.34,3.58;if(n>=100)g=gx29;else if(n>=50)g=gx28;else if(n>=40)g=gx27;else if(n>=35)g=gx26;else if(n>=30)g=gx25;else if(n>=25)g=gx24;else g=gxn-1;aver=AVRG(x,n);sd=SD(x,n);for(i=0;i<n;i+)vi=xi-aver;if(xmin>xi)min=i;if(max<xi)max=i;if(vmax*vmax<vmin*vmin)max=min;if(vmax*vmax>g*g*sd*sd)printf("根据格拉布斯检验法,本次剔除了第%d个数据%lf(置信概率95%)n",max,xmax);for(i=max;i<n-1;i+)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论