【大学物理实验】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;
}