不知道你们的实验数据处理是不是这样子的呢,我们的要求是测得三滴油滴每个油滴测量五次
由上式计算被测油滴所带电量,并用“倒算法”求出油滴所带电荷个数
( e0 =1.60×10-19C ) 并将n取整数值N,再用这个整数N去除所测得的电量值,得到测得的基本电荷值。
求得电子电荷e的平均值,并于 比较,计算相对误差,写出结果表达式。
![在这里插入图片描述](https://img-/2026143655978.png![在这里插入图片描述](https://img-/2026143707531.png
附上代码 秒出结果
# include<iostream># include<cmath>using namespace std;//自定义函数四舍五入int round(float f){if ((int)f+0.5>f)return (int)f;elsereturn (int)f + 1;}int main(){double u;int i;double t[5];//数组可以赋值也可以不赋值//={0.0};double e[5];double n;int N;long double q;double sum1,sum2;double e_Ever[5]; // c++定义数组必须给出大长度double e_Zhong_Ever;double Avery;double E;double e0=1.60e-19;double long xiangdui;cout<<"请输入此次测量电压(输入完电压按回车即可):"<<endl;sum2=0;for(int j=1;j<5;j++){sum1=0;cin>>u;cout<<"请输入此次测量五次时间(以空格形式分开):"<<endl;for(i=0;i<5;i++){cin>>t[i];q=(1.43e-14)/(u* pow( (t[i]*(1+0.0196*pow(t[i],0.5))) , 1.5) );n=q/1.60e-19;N=round(n);e[i]=q/N;cout<<"第"<<i+1<<"次测量q为:"<<q<<" ";cout<<" m为:"<<N;cout<<" e为:"<<e[i]<<endl<<endl;sum1 += e[i];e_Ever[i]=sum1/(i+1); //只能说它代表平均值Avery=e_Ever[i];}cout<<" e平均值为:"<<Avery<<endl;sum2 += Avery;e_Zhong_Ever=sum2/3;cout<<" e最终平均值为:"<<e_Zhong_Ever;E=(fabs(e_Zhong_Ever-e0))/1.60e-19;cout<<" E相对误差:"<<E*100<<'%'<<endl;if(j<3){cout<<"请输入第"<<j+1<<"次测量电压:"<<endl;}}int a=abs(213-3);cout<<"a="<<a;return 0;}
附上结果:(表格里的所有数都就出来啦)
由于我水平有限,e最终平均值和E相对误差看最后一次的就好啦,所以不要有疑惑哦!(其实是因为作用域的问题,但我怎么改也改不好啦,所以就先这样吧!)
再说一遍,由于我水平有限,e最终平均值和E相对误差看最后一次的就好啦,所以不要有疑惑哦!**
也就是下面这个样子了,*
注意注意:也就是不看第一次和第二次测得的e最终平均值和E相对误差,只看最后一次的就好啦*
不看画“×”的(忽略就好),只看最后一次画“√”的就好了,
其实看到这里也就结束啦!如果你跟我的处理方式一样一样,解决这个实验数据处理够用啦!
———————————————————假设有分割线————————————————
1题外话:不知道你有没有发现我是自定义的四舍五入函数?
原因是,我在网上查找的四舍五入是这样的:
在math.h或cmath头文件中有四舍五入有关的函数
但是我试了一下会显示这样的错误,error C2065: ‘round’ : undeclared identifier,(目前还不知道为什么会这样,还没去查)然后我就四舍五入关系写了一个,需要保留的小数,调用函数就可以啦。
/*自定义函数四舍五入*/int round(float f){if ((int)f+0.5>f)return (int)f;elsereturn (int)f + 1;}
2题外话****我还用到了绝对值函数,下面是我结合课本所学知识和网上查到,都是我测试过的,比网上找的靠谱哦!(因为关于头文件跟调用函数)
首先,绝对值里可以是任意的两个变量哦,下面是我在处理大物时写的
E=(fabs(e_Zhong_Ever-e0))/1.60e-19;cout<<" E相对误差:"<<E*100<<'%'<<endl;
在处理大物实验数据时,通常在求解相对误差时需要用到绝对值函数
首先,绝对值里可以是任意的两个变量哦,下面是我在处理大物时写的
E=(fabs(e_Zhong_Ever-e0))/1.60e-19;cout<<" E相对误差:"<<E*100<<'%'<<endl;
下面都是我在结合所学知识以及网上查找测试之后写的,因为网上有的介绍的头文件与相应的函数是不匹配的。
# include<iostream>//# include<cmath>using namespace std;int main(){int a;//double b;a=abs(223-3);//b=fabs(223.8-3.5);cout<<"a="<<a<<endl;//cout<<"b="<<b<<endl;return 0;}
# include<iostream># include<cmath>//浮点型需要求绝对值using namespace std;int main(){int a;double b; a=abs(223-3);b=fabs(223.8-3.5);cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;return 0;}
这个就不举例啦,不常用到。