以下这个程序是一个大学>数据处理程序,可以算平均值,残差,标准偏差,和总不确定度,只要你输入数据,

Benjamin_Hua Benjamin_Hua 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
,
学了<<物理实验>>的人都知道,物理实验最麻烦的是数据处理,现在都是信息时代了,那种含有十几位小数的数据居然还要用手来一个个地算,真是太对起自己了,以下这个程序可以算平均值,残差,标准偏差,和总不确定度,只要你输入数据,





#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define MAX 20

typedef struct wuli{
float d[MAX];
char name[10];
int LEN;
float ccha[MAX]; /*残差数组*/
float avg; /*data的平均值*/
double sx; /*标准偏差Sx*/
double DU; /*总不确定度*/
}wulidata;
wulidata *InputData();
void average(wulidata *wl);
void CanCha(wulidata *wl);
void BZPianCha(wulidata *wl);/*标准偏差*/
void BQDdu(wulidata *wl);/*总不确定度*/
void output(wulidata *wl);


/*----------------------------------------------------------*/
void line()
{
int i;
printf("\n");
for(i=0;i<74;i++)
printf("=");
printf("\n");
}
/*-------------------------------------------------------*/
wulidata *InputData()
{

int i=0,k;
float da;
char Z=0;
wulidata *wl;
wl=(wulidata *)malloc(sizeof(wulidata));
printf("请为你要处理的数据起一个名字:");
scanf("%s",wl->name);
printf("\n下面请你输入数据%s具体数值,数据不能超过MAX个\n",wl->name);
printf("当name='#'时输入结束\n");
do{
printf("%s%d=",wl->name,i+1);
scanf("%f",&da);
wl->d[i]=da;
i++;
}while(wl->d[i-1]!=0.0&&i<MAX);
wl->LEN=i-1;
do{
printf("你输入的数据如下:\n");
for(i=0;i<wl->LEN;i++)
printf("%s%d=%f\t",wl->name,i+1,wl->d[i]);
printf("\n你是否要作出修改(Y/N)?");
while( getchar()!='\n');
Z=getchar();

if( Z=='y'||Z=='Y'){
printf("你须要修改哪一个元素,请输入其标号i=(1~%d)\n",wl->LEN);
while( getchar()!='\n');
scanf("%d",&k);
printf("\n%s%d=",wl->name,k);
scanf("%f",&(wl->d[k-1]));
}
else if(Z=='n'||Z=='N')
printf("OK!下面开始计算。");

}while(Z!='N'&&Z!='n');
return(wl);
}
/*--------------------------------------------------------------------*/
void average(wulidata *wl)
{
float ad,sum=0;
int i;
for(i=0;i<wl->LEN;i++)
{
sum=sum+(wl->d[i]);
}
ad=sum/(wl->LEN);
wl->avg=ad;
}
/*-------------------------------------------------------------------*/
void CanCha(wulidata *wl)
{
int i;
for(i=0;i<wl->LEN;i++)
wl->ccha[i]=(wl->d[i])-(wl->avg);
}
/*---------------------------------------------------------------*/
void BZPianCha(wulidata *wl)/*标准偏差*/
{
double sum;
int i;
sum=0;
for(i=0;i<wl->LEN;i++)
sum=sum+pow(wl->ccha[i],2);
wl->sx=sqrt(sum/(wl->LEN-1));
}
/*-------------------------------------------------------------*/
void BQDdu(wulidata *wl)/*总不确定度*/
{
int k=0;
double A,B,y;
line();
printf("\n很抱歉,求总不确定度,首先要知道仪器误差。你可以选择你所用的实验仪器或自定义\n");
printf("1..钢尺(0.3mm) 2..游标卡尺(0.02mm) \n3..螺旋测微计(0.004mm)\n 4..自定义. ");
printf("\n");
while(getchar()!='\n');
while(k<1||k>4){
scanf("%d",&k);

if(k>=1&&k<=4){
switch(k){
case 1: y=0.3;break;
case 2: y=0.02;break;
case 3: y=0.004;break;
case 4:
printf("请输入仪器误差\n");
scanf("%f",&y);
break;
}
A=pow(wl->sx,2);
B=pow(y,2);
wl->DU=sqrt(A+B);
}
else{
printf("输入错误!");}
}
}
/*--------------------------------------------------------------------*/
void output(wulidata *wl)
{
int i;
printf("\n");
line();
printf("你输入的数据如下:\n");
for(i=0;i<wl->LEN;i++)
{printf("%s%d=%f\t",wl->name,i+1,wl->d[i]);}
printf("\n");
printf("\n\t数据%s的平均值(A)%s=%f",wl->name,wl->name,wl->avg);
line();
printf("数据的残差如下:\n");
for(i=0;i<wl->LEN;i++)
{printf("△%s%d=%s%d-(A)%s=%f\t\t",wl->name,i+1,wl->name,i+1,wl->name,wl->ccha[i]);}
line();
printf("求得标准偏差Sx=√【∑(△Xi)^2/(n-1)】 \n");
printf("Sx=%f",wl->sx);
printf("\n");
printf("总不确定度△=√【△A^2+△B^2】\n");
printf("%s的总不确定度△=%f\n\n",wl->name,wl->DU);
}
/*================================================================*/
main()
{
wulidata *Hua=NULL;

Hua=InputData();
average(Hua);
CanCha(Hua);
BZPianCha(Hua);/*标准偏差*/
BQDdu(Hua);/*总不确定度*/
output(Hua);
getch();
}
...全文

相关推荐

算平均值,残差,标准偏差,和总不确定度

物理实验的数据处理,这个程序只要输入数据可以算平均值,残差,标准偏差,和总不确定度

lgw8381

大学物理实验绪论——测量、误差和数据处理

科学计数法:科学计数法是一种用于表示极大或极小的数字的方法,其格式为将数字表示为一个介于1到10之间的数乘以10的幂。e.g.数字修约的规则1.四舍六入五凑偶规则当被修约数的后一位数字为5时,应根据5后面的数字来决定修约数的末位数字:如果5后面的数字大于0,则末位数字进位;如果5后面的数字为0,则应看5前面的数字:若为奇数,则末位数加1;若为偶数,则末位数不变。e.g. 保留两位有效数字当需要截取或修约的位数后面还有非零数字时,应将该位数字进位。直接舍去不需要的位数,不进行四舍五入。

潮汐退涨月冷风霜

〔重庆理工大学〕大学物理实验--测量误差及实验数据处理

测量误差及实验数据处理 题目展示 实验报告

Pretty Boy Fox

大学物理实验数据处理软件

这是一个专用于大学物理实验课的软件,这个软件包含了大学物理实验教材中的所有实验,你只需要将课上所测得数据填入软件中的相应空格中,就可以把需要的结果的出来。

IT界幼稚生

物理实验不确定度计算程序

物理实验不确定度计算程序,输入数据总数和各组数据,自动计算输出不确定度

Four5Fire
评论 5
收藏 已收藏
分享
返回顶部
Benjamin_Hua
C语言 70,039 成员 243,237 内容