北交电子测量第二章大作业 下载本文

内容发布更新时间 : 2024/5/2 22:02:36星期一 下面是文章的全部内容请认真阅读。

电子测量 第二章大作业

班级: 自动化 1

姓名: 学号: 12

1.主要实现功能:

实现对输入数据的误差处理: 剔除粗大误差。

判断累进性系统误差和周期性系统误差。 计算平均值,方差,不确定度。

2.具体程序:

include #include

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[],int n); int Grubbs_2(double x[],int n); static int n;

static double a[500]; int main() {

int i,choose,leap=1;

double avg,sd,sd1,v[500],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(\

printf(\请输入数据(数据间用空格隔开):\\n\ for(i=0;i

avg=AVRG(a,n); /*调用AVRG函数求均值*/ sd=SD(a,n); /*调用SD函数求标准差*/

printf(\输入数据的平均值为%lf,标准差为%lf\\n\ while(leap) {

printf(\请选择粗大误差的检验法:\\n1.莱特检验法(一般数据数大于10时选用)\\n2.肖维纳检验法(要求数据数大于5)\\n3.格拉布斯检验法(置信概率99%%)\\n4.格拉布斯检验法(置信概率95%%)\\n5.停止检验\\n\ scanf(\

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(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\用switch函数选择不同判据*/ } }

avg=AVRG(a,n); sd=SD(a,n);

for(i=0;i

v[i]=a[i]-avg; /*计算残差*/

if(vmax*vmax<=v[i]*v[i])vmax=v[i]; /*绝对值最大的残差*/ }

printf(\粗大误差剔除完毕,剩余数据如下(括号内为残差):\\n\ for(i=0;i

{for(i=0;i

vmax=sqrt(vmax*vmax);} if(i%2==1)

{for(i=0;i<(n-1)/2;i++)M+=v[i]; for(i=(n-1)/2;i

vmax=sqrt(vmax*vmax);}

if(M>=vmax)printf(\根据马利科夫判据,存在累进性系统误差。\\n\ else printf(\根据马利科夫判据,不存在累进性系统误差。\\n\/*阿卑-赫梅特准则*/

for(i=0;i

if((AH*AH)>=((n-1)*sd*sd*sd*sd))printf(\根据阿卑-赫梅特准则,存在周期性系统误差。\\n\

else printf(\根据阿卑-赫梅特准则,不存在周期性系统误差。\\n\ if(n>120)P=PX[17]; else if(n>60)P=PX[16]; else if(n>40)P=PX[15]; else if(n>30)P=PX[14]; else if(n>25)P=PX[13]; else if(n>20)P=PX[12];