1. 程式人生 > 其它 >【大學物理實驗】01 單擺測重力加速度 的誤差分析程式碼

【大學物理實驗】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;
}