概述
不知道你们的实验数据处理是不是这样子的呢,我们的要求是测得三滴油滴每个油滴测量五次
由上式计算被测油滴所带电量,并用“倒算法”求出油滴所带电荷个数
( e0 =1.60×10-19C ) 并将n取整数值N,再用这个整数N去除所测得的电量值,得到测得的基本电荷值。
求得电子电荷e的平均值,并于 比较,计算相对误差,写出结果表达式。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200526143655978.png![在这里插入图片描述](https://img-blog.csdnimg.cn/20200526143707531.png
附上代码 秒出结果
# include<iostream>
# include<cmath>
using namespace std;
//自定义函数四舍五入
int round(float f)
{
if ((int)f+0.5>f)
return (int)f;
else
return (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;
else
return (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;
}
这个就不举例啦,不常用到。
最后
以上就是迅速柚子为你收集整理的密立根油滴实验数据处理(C++实现)的全部内容,希望文章能够帮你解决密立根油滴实验数据处理(C++实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复