【大学物理实验】01 单摆测重力加速度 的误差分析代码

大学物理实验1

不想手算的我干脆操起老本行
自制误差分析——不确定度评估板子

展示一下输出:

代码

#include <iostream>
#include <algorithm>
#include <cmath>
#define pi 3.141593

using namespace std;
double l, averT, dTa, dTb, dT, averg, dg;
double w1, w2, wg; //  dl/l 和 dt/t 和 dg / g
double t[10], g[10];
int n;

int main (){
    cin >> n;
    l = 0.915; //摆长
    for (int i = 1; i <= n; i ++){
        cin >> t[i];
        averT += t[i];
        g[i] = 1.0000 * (4 * pi * pi * l) / (t[i] * t[i]);
        averg += g[i];
    }
    averT /= n, averg /= n;
    w1 = 1 / (915 * sqrt(3));  //摆长误差

    double sum = 0; //求dTa的过渡值
    for (int i = 1; i <= n; i ++){
        sum += (t[i] - averT) * (t[i] - averT);
    }
    dTa = sqrt (sum / (n * (n - 1)));
    dTb = 0.01 / (50 * sqrt (3));
    dT = sqrt (dTa * dTa + dTb * dTb);
    w2 = dT / averT; //周期误差
    wg = sqrt (w1 * w1 + 4 * w2 * w2);
    dg = wg * averg; // dg


    cout << "g = (" << averg << "±" << dg << ")m·s^-2" << endl;
    //cout << "P = " <<  << endl; //置信概率积分不会求。。
    cout << "dg / g = " << wg * 100 << "%" << endl;
}
posted @ 2022-03-27 15:30  Sakana~  阅读(284)  评论(0编辑  收藏  举报