c语言 误差处理 编程,C语言误差处理(平均数残差).doc

这个程序使用C语言实现计算一组数据的平均数,并计算每个数据点与平均数的残差。通过判断残差来检查算术平均值的正确性,同时对数据进行粗大误差检测。此外,还提供了计算标准差的功能,用于识别可能存在的系统误差。
摘要由CSDN通过智能技术生成

C语言误差处理(平均数残差)

#include

#include

#include

#include

double d[100];double x1=0.0,x2=0.0,x3=0.0,average=0.0;

double T[]={63.66,9.92,5.84,4.60,4.03,3.71,3.50,3.36,3.25,3.17,3.11,3.05,3.01,2.98,2.95,2.92,2.90,2.88,2.86,2.85,2.83, 2.82,2.81,2.80,2.79,2.78,2.77,2.76,2.76,2.75,2.70,2.68,2.66,2.65,2.64,2.63,2.63,2.58};

double average_fun(double datas[],int datas_num)

{

int k=0;

for(k=0;k

{

average+=datas[k];

}

average/=datas_num;

return average;

}

double surplus(int num,double a[],double x)

{

int i,j;double c[100],w;

for(i=0;i

{

c[i]=a[i]-x;

d[i]=c[i];

}

printf("求得的残余误差为:\n ");

for(j=0;j

printf("%f ",d[j]);

for(i=0;i

{

w+=d[i];

}

return(w);

}

void check(int num,double w)

{

double A;

if(num%2==0)

{

if(w>num/2.0*A)

{

printf("该算术平均值不正确!\n");

}

else printf("该算术平均值正确!\n");

}

else

{

if(w>(num/2.0-0.5)*A)

{

printf("该算术平均值不正确!\n");

}

else printf("该算术平均值正确!\n");

}

}

judge1(int num)

{

int t,j;double m=0.0,n=0.0,z=0.0;

if(num%2==0)

{

t=num/2;

for(j=0;j

m+=d[j];

for(j=t;j

n+=d[j];

z=m-n;

}

else

{

t=(num+1)/2;

for(j=0;j

m+=d[j];

for(j=t;j

n+=d[j];

z=m-n;printf("%lf",z);

}

if(z<=0.002)

printf("无根据怀疑此组存在系统误差\n");

else

printf("怀疑此组存在系统误差\n");

}

std(int num,double data[])

{

double m=0.0;int k;

for(k=0;k

{

m+=data[k]*data[k];

}

x1=sqrt(m/(num-1));

x2=x1/(sqrt(num));

}

void judge2(int w)

{

int i;

for(i=0;i

{

if(d[i]<3*x1)

printf("该数据存在粗大误差\n");

else

printf("该数据不存在粗大误差\n");

}

}

limit(int num)

{

double t=0.0;

t=T[num-1];

x3=t*x2;

}

bear(int datas_num,double datas[])

{

double y=0.0,k=0.0;int i;

for(i=0;i

{

k+=datas[i];

}

k/=datas_num;

y=k+x3;

printf("结果为:");

printf("%lf",y);

}

void main()

{

int num;

int i;

double a[100];

double x=0.0,w=0.0;

printf("输入实验组数:");

scanf("%d",&num);

printf("输入测得的数据:");

for(i=0;i

scanf("%lf",&a

C语言或C++中编写计算上述统计学参数的程序,可以通过以下几个步骤来实现: 1. 计算算术平均值(Arithmetic Mean): 算术平均值是指所有数据值加起来后除以数据的数量。假设有一个数值数组 `double numbers[]` 和一个计数器 `int count`,则算术平均值 `mean` 可以这样计算: ```cpp double calculateArithmeticMean(double numbers[], int count) { double sum = 0.0; for(int i = 0; i < count; ++i) { sum += numbers[i]; } return sum / count; } ``` 2. 计算残余误差(Residual Error): 残余误差是指个别数据值与算术平均值之差。对于每个数值 `numbers[i]`,残余误差 `residualError` 可以这样计算: ```cpp double calculateResidualError(double numbers[], int count, double mean) { double residualError = 0.0; for(int i = 0; i < count; ++i) { residualError += (numbers[i] - mean) * (numbers[i] - mean); } return residualError; } ``` 3. 计算标准偏差(Standard Deviation): 标准偏差是衡量数据分布离散程度的一个统计量,其计算公式与残余误差类似。可以通过以下函数计算标准偏差 `stdDev`: ```cpp double calculateStandardDeviation(double numbers[], int count, double mean) { return sqrt(calculateResidualError(numbers, count, mean) / count); } ``` 4. 剔除粗大误差(Outlier Rejection): 粗大误差是指明显偏离整体数据集的测量值。可以通过一定的规则来识别和剔除这些值,例如使用标准偏差范围规则。如果一个数值 `numbers[i]` 超出平均值加减两倍标准偏差的范围,则可以认为它是一个粗大误差,并将其剔除。 5. 重新计算: 在剔除了粗大误差之后,需要重新计算算术平均值和标准偏差。 6. 计算算术平均值的标准偏差(Standard Error of the Mean, SEM): 标准误差是表示样本均值的标准偏差,通常用来表示样本均值的不确定性。可以这样计算: ```cpp double calculateStandardErrorOfMean(double numbers[], int count, double stdDev) { return stdDev / sqrt(count); } ``` 7. 得出测量结果: 最后根据上述计算,可以得出最终的测量结果,包括算术平均值、标准偏差、标准误差等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>