04密里根油滴实验
1.平衡测量法
源码如下:
# include <stdio.h>
# include <math.h>
/*
Time : 2024-12-06;
Author : 吕旭阳、苑文源;
Goal: 04密里根油滴实验的数据计算;
*/
int main ()
{
const double N_1 = 1.0218e-14 ;
const double N_2 = 0.0219;
double U=0 , T=0 ;
// 定义数组;
double a[5],b[5];
//简单介绍
printf("=========欢迎来到物理实验4密里根油滴实验数据处理小程序=======\n") ;
printf("------这个程序计算1.平衡测量法--------\n");
printf("请你输入五组的平衡电压(空格间隔):\n") ;
for (int i=0;i<=4;i++)
scanf("%lf",&a[i]) ;
printf("请你输入五组的下落时间(空格间隔):\n") ;
for (int i=0;i<=4;i++)
scanf("%lf",&b[i]) ;
printf("\n\n-----------------------------------\n") ;
for (int i=0;i<=4;i++)
{
U = a[i] ;
T = b[i] ;
//分母比较复杂,自己定义一个变量 denominator ;
double denominator = pow((T * (1 + N_2 * sqrt (T) )),3.0/2.0) ;
double q = N_1 * (1/U) / denominator * 1e19 ;
// 电荷数 n ;
double n = q / 1.602 ;
// 取整 n_int ;
int n_int = (int) round(n) ;
double e = q / n_int ;
// 四舍五入的逻辑针对e自己测得的元电荷的电荷量。
int e_1 = (float)( e * 100 + 0.5);
double e_rounded = e_1/100.0;
// 整合输出:
printf("在平衡电压U=%.2lf、下落时间为t=%.2lf的情况下:\n",U,T) ;
printf("q=%.3lf;\tn=%d;\te=%.2lf;\n\n",q,n_int,e_rounded) ;
}
printf("========所有数据的来源来自物理实验小组,数据计算和审核人:苑文源==========\n") ;
printf("-------在此特别感谢文源老弟的帮助-------\n") ;
return 0 ;
}
2.动态测量法
源码如下:
# include<stdio.h>
# include<math.h>
/*
Time : 2024-12-06;
Author : 吕旭阳、苑文源;
Goal: 04密里根油滴实验的数据计算;
*/
int main()
{
const double N_1 = 1.0218e-14;
const double N_2 = 0.0219 ;
double V , t1 , t2 ;
// 简介
printf("=========欢迎来到物理实验4密里根油滴实验数据处理小程序=======\n") ;
printf("------这个程序计算2.动态测量法--------\n");
// 定义数组
double a[5],b[5],c[5];
//输入数据
printf("请你输入五组的提升电压(空格间隔):\n") ;
for (int i=0;i<=4;i++)
scanf("%lf",&a[i]) ;
printf("请你输入五组的下落时间(空格间隔):\n") ;
for (int i=0;i<=4;i++)
scanf("%lf",&b[i]) ;
printf("请你输入五组的上升时间(空格间隔):\n") ;
for (int i=0;i<=4;i++)
scanf("%lf",&c[i]) ;
printf("\n\n-----------------------------------\n") ;
for (int i=0;i<=4;i++)
{
//输入提升电压V、下落时间t1 、 上升时间t2 .
double V= a[i],t1 = b[i],t2 = c[i];
//输入表达式 拆分为两点;
//针对于分母;
double denominator = pow((1 + N_2 * sqrt(t1)),3.0/2.0);
double q = N_1 /denominator * (1.0/t2 + 1.0/t1) * sqrt(1.0/t1) * (1.0/V) * 1e19;
// 电荷数 n ;
double n = q / 1.602 ;
// 取整 n_int ;
int n_int = (int) round(n) ;
double e = q / n_int ;
// 四舍五入的逻辑针对e自己测得的元电荷的电荷量。
int e_1 = (float)( e * 100 + 0.5);
double e_rounded = e_1/100.0;
printf("在提升电压V=%.2lf、下落时间为t=%.2lf、上升时间t2=%.2lf的情况下:\n",V,t1,t2) ;
printf("q=%.3lf;\tn=%d;\te=%.2lf;\n\n",q,n_int,e_rounded) ;
}
printf("========所有数据的来源来自物理实验小组,数据计算和审核人:苑文源==========\n") ;
printf("-------在此特别感谢文源老弟的帮助-------\n") ;
return 0 ;
}