1、算法:伽利略与自由落体运动任务尝试编制程序计算匀加速直线运动的加速度,培养大家用计算机解决实际问题的能力,期望以后,同学们能够用计算机自行编程来进行物理、化学实验的数据处理工作。伽利略奥伽利略(Galileo Galilei,1564 - 1642)是意大利文艺复兴后期伟大的天文学家、物理学家、力学家和哲学家,也是近代实验物理学的开拓者。1590 年,伽俐略在意大利的比萨斜塔顶层做了著名的自由落体运动实验,让两个重量相差 10 倍的铁球,同时从塔顶落下,结果,两球同时着地,因而,雄辩地一举推翻了束缚人们思想近二千年的希腊著名学者亚里士多德关于重量不同的物体,其下落的速度也不相同的“物体下落速度
2、与重量成正比”的理论。伽利略开创了实验物理的新时代,被人们称为“近代科学之父” 。一、利用计算机处理物理实验数据在我们高中学习生活中,已经越来越多地应用信息技术来开展学习,比如我们可以在数学、物理、化学的学习中使用电子计算器,可以使用TI 数理计算器来进行数据处理,还可以利用 DIS 数字信息系统,来进行物理实验。这些信息技术的使用,极大地提高了我们学习的效率。这些工作都是在计算机的支持下才能正常开展,事实上,我们经过学习,自己也能够编制程序实现这些功能。在现有的许多高中物理教材中,测定自由落体运动加速度的实验已经不作为必修的内容了,而在高中物理一年级教材中,还有一个实验是“用打点计时器测量匀
3、加速直线运动加速度” ,这个实验同学们都做过,实验过程非常简单,但在实验后处理数据时,却比较麻烦。用计算机处理数据,首先也要处理纸带,然后记录数据,再选用合适的计算公式,最后编程处理。1、 纸带处理从一个清晰的小点开始,标记一个起点“0”点,然后每隔五个点作一个标记,分别记作“1” 、 “2”“n”。2、数据测量从“0”点开始,测量每一个标记点间的长度,分别记作S1、S2.Sn。3、计算方法由于每一个标记间包括五个计时点,打点计时器使用是的220V/50HZ 的交流电,所以每个计时点的时间是 1/50 秒,即 0.02 秒,而五个计时点的时间就是 0.1 秒,因此,对应每一个标记点间长度的时间
4、分别是 t1、t2tn,它们都是 0.1 秒。计算公式:对于匀加速直线运动来说,S=at 2,则a= S/t2=S/0.01=100S(m/s 2) 。这样,对于 n 个标记点,则有 n-1 个加速度 a,分别是a1、a2an-1 。a1=100(S2-S1) ,a2=100 (S3-S2 )an-1=100(Sn-Sn-1)最后求平均值:a=(a1+a2+an-1)/(n-1) 。二、程序实现范例:我用 VB 来编写程序。程序中用到了一个循环语句、一个输出语句。其中输出语句与顺序结构例题中的语句一致。假设,我们有六个测量点,分别有六个长度值。为了简化问题,我们直接在程序中用赋值语句,将每一标
5、记点间的长度赋值给数组中的每一个变量。(1)建立窗体和输出、命令按钮组件对象。(2)编写“Command1”触发的程序代码。在“Private Sub command1_click()”和“End Sub”之间输入程序代码。Dim s(6) As Single, a As Single, b As Single, i As Integers(1) = 0.09s(2) = 0.17s(3) = 0.27s(4) = 0.37s(5) = 0.45s(6) = 0.53b = 0For i = 1 To 5a = 100 * (s(i + 1) - s(i)b = b + aNextLabel1
6、.Caption = (b / 5) & “(m/s2)“第一行,定义了一个有 6 个下标的单精度数值类型数组 S,用于保存每一标记点间的长度值。定义了单精度数值型变量 a,用于保存每次计算得出的加速度值。定义了一个用于累加加速度数的变量 b。还定义了整数类型变量 I,用于控制循环次数。第二行至第七行,分别将六个长度值分别赋值给数组 s 的六个下标变量,即 S(1 )里保存 S1 的值,S (2)里保存 S2 的值,其它依此类推。第八行,对用于累加加速度值的变量 b 进行初值化,一般作为累加器的变量初始值应该赋值为“0” 。第九行,开始一个 FOR 循环,循环变量 I 从 1 变化到 5,每次
7、增加1,所以一共循环五次。第十行,计算每一个标记点处的加速度值,并将计算值赋值给变量a。第十一行,将每一个标记点处的加速度值累加到变量 b 中。第十二行,在 NEXT 语句处,循环变量值增加 1,并且判断循环变量值有没有超过终值 5,如没有超过则从 For 的下一行开始重复执行;如超过终值,则结束循环,执行 Next 的下一行。第十三行,结束循环后,将累加变量 b 的值除以 5,得到加速度的平均值,并将这个平均值连接上单位(m/s2)后,赋值给文本标签Label1 的 caption 属性,用于输出。(3)运行程序。单击“Command1” ,就能在原来“Label1”的位置上加速度平均值“8.8(m/s2)”。