问题背景:大学物理实验经常需要进行不精确度的计算,对于我们来说怎么高效检查答案的准确性是一个很头疼的问题,所以我就想如何快速地通过所学知识去高效检查答案的准确性。为此我花些时间想了一下该怎么实现这一过程。
问题解决:下面是我写的几个函数
int input_of_x(double* x);//输入实验数据
/*函数功能:输入实验数据
函数参数:数组
函数返回值:实验数据的总数*/
int input_of_x(double* x) {
int number = 0;
printf("请输入数据的数量(数据的数量不能超过10):");
scanf_s("%d", &number);
printf_s("请按照要求输入数据");{
for (int i = 0; i < number; i++) {
printf("\n请输入第%d个数据:", i + 1);
scanf_s("%lf", &x[i]);
}
}
return number;
}
double average_of_x(double* x, int n);//求平均值函数
/*函数功能:求平均值函数
函数参数:数组,数量
函数返回值:平均值*/
double average_of_x(double *x,int n) {
double aver, sum = 0;
for (int i = 0; i < n; i++) {
sum = sum + x[i];//求和
}
return aver = sum / n;//求品均值
}
double variance_of_x(double* x, int n, double average);//求标准差函数
/*函数功能:计算标准差
函数参数:数组,数量,平均值
函数返回值:标准差*/
double variance_of_x(double* x,int n,double average) {
double sum = 0, s;
for (int i = 0; i < n; i++) {
sum = sum + ((x[i] - average) * (x[i] - average));
}
return s = sqrt(sum / (n - 1));//计算标准差
}
double canshu_of_n(int n);//求t/根号n
/*函数功能:计算t/根号n的值
函数参数:实验数据的数量
函数返回值:t/根号n的值*/
double canshu_of_n(int n) {
switch (n) {
case 2:
return 8.99;
case 3:
return 2.48;
case 4:
return 1.59;
case 5:
return 1.24;
case 6:
return 1.05;
case 7:
return 0.93;
case 8:
return 0.84;
case 9:
return 0.77;
case 10:
return 0.72;
defalt:
printf("n is error");
break;
}
return 0;
}
double UA(double s, double y);//计算A类不精确度
/*函数功能:A类不精确度的计算
函数参数:标准差,t/根号n
函数返回值:A类不精确度*/
double UA(double s, double y) {
return s * y;
}
主函数(可直接使用功能来说还是比较全的,计算过程中的值都有显示)
#include<stdio.h>
#include<math.h>
int input_of_x(double* x);
double average_of_x(double* x, int n);
double variance_of_x(double* x, int n, double average);
double canshu_of_n(int n);
double UA(double s, double y);
void main() {
double X[30];
double Ub;
int n = input_of_x(X);//n来表示数据量;
double s = variance_of_x(X, n, average_of_x(X, n));//s表示标准差;
double Ua = UA(s, canshu_of_n(n));
printf("请输入B类不精确度:");
scanf_s("%lf", &Ub);
printf("\n标准差:%lf", s);
printf("\nUa(A类不精确度):%lf", Ua);
printf("\nU(不精确度):%lf", sqrt(Ua * Ua + Ub * Ub));
}
总结:说实话编写这个程序没什么复杂的过程,都是最基本的东西。但是通过这个程序我们可以提高检查的效率。