(1)A类不确定度:对被测量重复观测得到的数据进行统计分析,得到的实验标准差就是A类不确定度,这种方法又叫“贝塞尔法”;
(2)B类不确定度:对观测列采用统计分析以外的方法进行不确定度评定,称为B类不确定度;
(3)合成不确定度:当测量结果是由若干个其他量的值求得,按其他各量的方差和协方差算得的标准不确定度称为合成不确定度;
(4)扩展不确定度:把合成不确定度扩大若干倍来表示的测量不确定度称为扩展不确定度,其定义是:“确定测量结果区间的量,合理赋予被测量之值分布的大部分可望含于此区间。”
国标GB
/T15481-2000对于检测实验室也规定了“应具有并应用评定测量不确定度的程序”。本中心程序文件编制了《检测试验室测量不确定度评定程序》。
C++行啊,我只写过C++版的,懒得再改成C的了,有兴趣自己搞吧:#include<iostream>
#include<cmath>
#include<vector>
using namespace std
//求算术平均值
double average(const vector<double>&x)
{
int n=x.size()
double avg=0
for (int i=0i<n++i)
avg+=x[i]
return avg/n
}
//求标准偏差(贝塞尔公式)
double stdev(const vector<double>&x)
{
int n=x.size()
double avg=average(x),s=0
for (int i=0i<n++i){
s+=(x[i]-avg)*(x[i]-avg)
}
s=sqrt(s/(n-1))
return s
}
//求A类不确定度
double A_uncertain(const vector<double>&x)
{
return stdev(x)/sqrt(double(x.size()))
}
//求B类不确定度,默认按 1/根号3 算
double B_uncertain(const double &x)
{
return x/sqrt(3.0)
}
//求合成不确定度
double C_uncertain(const double &ua,const double &ub)
{
return sqrt(ua*ua+ub*ub)
}
void main()
{
int n
double avg,s,a,b,c,dx,uxd
cout<<"****计算实验标准偏差及不确定度****\n"
cout<<"输入实验数据个数:"
cin>>n
if (n<2){
cout<<"错误!"<<endl
exit(1)
}
vector<double>x(n)
for (int i=0i<n++i){
cout<<"输入第"<<i+1<<"个实验数据:"
cin>>x[i]
}
cout<<"输入仪器误差限:"
cin>>dx
cout<<"--------------------------"<<endl
avg=average(x)
cout<<"数据算术平均值为:"<<avg<<endl
s=stdev(x)
cout<<"实验标准偏差为:"<<s<<endl
a=A_uncertain(x)
cout<<"A类不确定度为:"<<a<<endl
b=B_uncertain(dx)
cout<<"B类不确定度为:"<<b<<endl
c=C_uncertain(a,b)
cout<<"合成不确定度为:"<<c<<endl
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)