[物理实验]计算不确定度

Spring-_-Bear 的 CSDN 博客导航

本程序实现对大学物理实验中不确定度的计算:

  1. 输入原始数据个数 n(<= 1000),而后输入 n 个数据。
  2. 系统自动求得 n 个数据的平均值和 A 类不确定度。
  3. 输入实验仪器允许的最大误差。
  4. 系统自动求得 B 类仪器误差不确定度。
  5. 人工对 A、B 类不确定度的有效位数进行取舍,而后输入取舍后的 A、B 类不确定度。
  6. 系统自动求得合成不确定度和相对不确定度。

运行示例:

在这里插入图片描述

程序源码:

#include <stdio.h>
#include <math.h>

#define MAXN 1000

int main()
{
    int n;
    printf("请输入原始数据个数:");
    scanf("%d", &n);

    double data[MAXN] = {0};
    double sum = 0;
    printf("请输入 %d 个原始数据:", n);
    for (int i = 0; i < n; i++)
    {
        scanf("%lf", &data[i]);
        sum += data[i];
    }

    // 求 n 个数据的平均值
    double average = sum / n;
    printf("\n原始数据平均值为:%f\n", average);

    // 求 A 类不确定度
    double tempSum = 0;
    for (int i = 0; i < n; i++)
    {
        tempSum += pow(data[i] - average, 2);
    }
    double A = sqrt(tempSum / ((double)n * ((double)n - 1)));
    printf("A 类不确定度为:%lf\n\n", A);

    double derta;
    printf("请输入实验仪器允许的最大误差:");
    scanf("%lf", &derta);

    // 求 B 类不确定度
    double B = derta / sqrt(3);
    printf("\nB 类不确定度为:%f\n\n", B);

    printf("请输入人工取舍后的 A 类和 B 类不确定度:");
    scanf("%lf%lf", &A, &B);

    // 求合成不确定度
    double U = sqrt(pow(A, 2) + pow(B, 2));
    printf("\n合成不确定度为:%lf\n", U);

    // 求相对不确定度
    double R = U / average;
    printf("相对不确定度为:%f\n", R);

    return 0;
}
  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春天熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值