资讯详情

双臂电桥测低电阻大物实验数据处理(C++实现)

双臂电桥测低电阻大物实验数据处理(C 实现)

非常抱歉 非常抱歉 对不起,上次大物实验处理小数点有一些错误,但得分是正确的,这是正确的,所以我们可以放心使用 

  1. 用螺旋测微计测出各圆形金属棒的直径;在不同的地方测5次,取平均值。
  2. 根据实验电路图,将金属棒(铜棒、铝棒)安装在试验架上。R1,R2为1000,根据表格要求调整接入电路中金属棒的长度,然后调整R,使检流计指示为0,读取R的电阻值,最后使用(3),然后替换Rn=0.计算给定长度金属棒的电阻值Rx填入下表。

. 在这里插入图片描述 3.每个金属棒的值由公式(5)计算,并给出结果表达式。 参考:铜棒:1.694×10-8Ω?m 铝棒:2.7×10-8Ω?m

数据处理如下:

代码如下:

# include<iostream> # include <cmath> # include<string> # include<iomanip> using namespace std; ///自定义输出小数点后需要的文件  int main() { 
          int i,j;    double Al[5];     //铝的直径  double Cu[5];     ///铜的直径  double Average1,Average2;     double Al_R[8];    //铝的电阻  double Cu_R[8];   ///铜的电阻  double p1_Aver;  double p2_Aver;   double p1[8];  double p2[8];                //表示系数  double AlAverage[8];  double CuAverage[8];   int Al_L[8] = { 
        15.0,span class="token number">20.0,25.0,30.0,35.0,40.0,45.0,50.0};
	int Cu_L[8] ={ 
        15.0,20.0,25.0,30.0,35.0,40.0,45.0,50.0};

	double sumOne = 0.0;   //以下六个变量是求解平均值是用到的中间变量
	double sumTwo = 0.0;

	double sumThree = 0.0;
	double sumFour = 0.0;
	
	double sumFive = 0.0;
	double sumSix = 0.0;

	double p_one_Aver[8];
	double p_two_Aver[8];
	double AverEndOne[8];
	double AverEndTwo[8];
	double AvereyEndTwo;
	double AverEndThree[8];
	double AverEndFour[8];
	double AvereyEndFour;

	cout<<"输入所测铝的五组直径(以空格方式分隔开):"<<endl;
	for(i=0;i<5;i++)
	{ 
        
		cin>>Al[i];
		sumOne += Al[i];
		AlAverage[i] =sumOne / (i+1);
		Average1 = AlAverage[i];     //必须有一个中间变量,因为i有作用域
	}
	cout<<"Al的五组直径测量平均值为:" << setprecision(8) << Average1 <<endl;

	cout<<"输入铝的八组所测电阻值(以空格方式分隔开):"<<endl;
	
	for(j=0;j<8;j++)
	{ 
        
		
		cin>>Al_R[j]; 
		p1[j]=  (( Al_R[j]*3.14* ( pow(Average1,2.0) ) )/(4*Al_L[j]))*0.01;
			
		cout<<"测得的第"<<j+1<<"次电阻率分别为"<<p1[j]<<endl;  //此处既可以理解为一句一句执行,也可以理解为一次循环以此循环执行
		//cout<<"输入铝的第"<<j+2<<"组所测电阻值(以空格方式分隔开):"<<endl;
		sumTwo +=p1[j];
		p_one_Aver[j] =sumTwo/(j+1);  
		p1_Aver =p_one_Aver[j];  //平均值的一种求解方法
	}
	cout<<"Al电阻率的平均值为:"<<p1_Aver<<endl; 
	for(int k=0;k<8;k++)
	{ 
        
		AverEndOne[k]=fabs(p1_Aver-p1[k]);  //浮点型绝对值函数用fabs,能ton过是因为数组已经形成,现在只不过是对其引用?
		cout<<"第"<<k+1<<"组电阻率误差为:"<<AverEndOne[k]<<endl;
		sumFive +=AverEndOne[k];
		AverEndTwo[k] = sumFive/(k+1);   
		AvereyEndTwo = AverEndTwo[k];
	}
	cout<<"平均电阻率误差为:"<<AvereyEndTwo<<endl;  
	double E1 = AvereyEndTwo/p1_Aver;   cout<<"相对误差为:"<<E1*100<<"%"<<endl<<endl;






	cout<<"输入所测铜的五组直径(以空格方式分隔开):"<<endl;
	for(i=0;i<5;i++)
	{ 
        
		cin>>Cu[i];
		sumThree += Cu[i];
		CuAverage[i] =sumThree / (i+1);
		Average2 = CuAverage[i];     //必须有一个中间变量,因为i有作用域
	}
	cout<<"Cu的五组直径测量平均值为:" << setprecision(8) << Average2 <<endl;

	cout<<"输入铜的八组所测电阻值(以空格方式分隔开):"<<endl;
	
	for(j=0;j<8;j++)
	{ 
        
		
		cin>>Cu_R[j]; 
		p2[j]= ( Cu_R[j]*3.14* ( pow(Average2,2.0) ) )/(4*Cu_L[j]);
			
		cout<<"测得的第"<<j+1<<"次电阻率分别为"<<p2[j]<<endl;  //此处既可以理解为一句一句执行,也可以理解为一次循环以此循环执行
		//cout<<"输入铝的第"<<j+2<<"组所测电阻值(以空格方式分隔开):"<<endl;
		sumFour +=p2[j];
		p_two_Aver[j] =sumFour/(j+1);  
		p2_Aver =p_two_Aver[j];  //平均值的一种求解方法
	}
	cout<<"Cu电阻率的平均值为:"<<p2_Aver<<endl; 
	for(k=0;k<8;k++)
	{ 
        
		AverEndThree[k]=fabs(p2_Aver-p2[k]);  //浮点型绝对值函数用fabs,能ton过是因为数组已经形成,现在只不过是对其引用?
		cout<<"第"<<k+1<<"组电阻率误差为:"<<AverEndThree[k]<<endl;
		sumSix +=AverEndThree[k];
		AverEndFour[k] = sumSix/(k+1);   
		AvereyEndFour = AverEndFour[k];
	}
	cout<<"平均电阻率误差为:"<<AvereyEndFour<<endl;  
	double E2 = AvereyEndFour/p2_Aver;   cout<<"相对误差为:"<<E2*100<<"%"<<endl;
	
	return 0;
}
是不是被吓到啦,代码这么长
这个代码两部分除了变量名字不一样,其实是重复的,由于是对铝和铜所有的数据处理也都是一模一样的,
因此只复制上半部分也是可以的。不过执行结果还是很美观准确的!!!

执行结果:

有什么不足,欢迎大家交流哈!

标签: r007金属微电阻r010金属微电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台