密里根油滴实验复杂公式计算程序

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 ;
}

运行结果

在这里我就简单放个图片,因为这个程序就是简单的表达式处理,没有什么有难度的逻辑;不过在校核数据时确实挺费劲的。

平衡测量法

动态测量法

以上程序运行结果,均经过验证。在此特别感谢文源老弟的帮助。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值