我是靠谱客的博主 迅速柚子,最近开发中收集的这篇文章主要介绍密立根油滴实验数据处理(C++实现),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

不知道你们的实验数据处理是不是这样子的呢,我们的要求是测得三滴油滴每个油滴测量五次
在这里插入图片描述
由上式计算被测油滴所带电量,并用“倒算法”求出油滴所带电荷个数
( 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内,有fabs()函数,可以对浮点型变量求绝对值**

# 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内,有long labs(long   n) 返回长整型参数n的绝对值**
这个就不举例啦,不常用到。

最后

以上就是迅速柚子为你收集整理的密立根油滴实验数据处理(C++实现)的全部内容,希望文章能够帮你解决密立根油滴实验数据处理(C++实现)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部