计算不确定度(C语言-大物实验)-复制即可使用

计算不确定度(大物实验)使用前仔细阅读1~6点

1、计算数据的平均数

a.注意单位要自行统一

2、计算A类不确定度

3、计算B类不确定度

a.输入相应仪器的分度值

4、计算不确定度

5、计算相对不确定度

6、显示结果

完成后要按照规则保留相应的位数(代码中默认保留五位)

完整代码(复制即可使用)

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double average(int n, double *arr)
{
    double sum = 0.0;
    double aver;
    int i;
    for(i = 0 ; i < n ; i++)
    {
        sum = sum + arr[i];
    }
    aver = sum / n ;
    printf("该组数据的平均数为%.5lf\n", aver);
    return aver;
}
double A_uncertainty(int n, double *arr, double aver)
{
    int i;
    double ua;//A类不确定度
    double record;
    for (i = 0 ; i < n ; i++)
    {
        record = (arr[i]-aver) * (arr[i]-aver) + record;
    }
    ua = sqrt(record /(n*(n-1)));
    printf("其A类不确定度为%.5lf\n", ua);
    return ua;
}
double B_uncertainty()
{
    double fenduzhi;
    double ub;
    printf("请输入该仪器对应的分度值为: ");
    scanf("%lf", &fenduzhi);
    ub = fenduzhi/sqrt(3);
    printf("其B类不确定度为:%.5lf\n",ub);
    return ub;
}
double uncertainty(double a, double b)
{
    double u;
    u = sqrt(a*a + b*b);
    printf("其不确定度为%.5lf\n", u);
    return u; 
}
void Relative_uncertainty(double aver, double u)
{
    double E;
    E = (u/aver) * 100;//计算相对不确定度
    printf("其      相对不确定度为:%.5lf%%\n",E);//在printf中 两个% 才能在终端中输出 %
}
void result(double aver, double u)
{
    
    printf("其测量结果为%.5lf + %.5lf\n",aver, 2*u);
}
int main()
{
    int n;              //数据的个数
    int i;              //循环的条件
    double aver = 0;    //记录平均数
    double ua;          // 记录A类不确定度
    double ub;          // 记录B类不确定度
    double u;           // 记录不确定度
    double *p;          // 存放指向浮点型数组的指针
    int choose = 1;
    
    while(choose != 0)
    {
        printf("请输入数据的个数:");
        scanf("%d", &n);

        p = (double*)malloc(n * sizeof(double)); //为数组分配n个空间

        printf("请输入%d个数据(浮点数):", n);
        for(i = 0 ; i < n ; i++)
        {
            scanf("%lf", &p[i]);
        }
 
        aver = average(n, p);             // 计算平均值
        ua = A_uncertainty(n, p, aver);         // 计算A类不确定度
        ub = B_uncertainty();               // 计算B类不确定度
        u = uncertainty(ua, ub);            // 计算不确定度
        Relative_uncertainty(aver, u);      // 计算相对不确定度
        result(aver, u);                    // 显示最终结果
        printf("\n");
        printf("输入非0的数继续计算:");
        scanf("%d",&choose);
        printf("\n");
    }
}
  • 24
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值