华中科技大学附属中学(430074) 许 文
习题教学是中学物理教学的重要组成部分。对于习题的求解,我们一般从理论上进行推导分析。实践证明,在习题教学中,采用理论上推导分析和实验验证,能加强学生理论联系实际的能力,这种教学效果会更好。
图1 习题意图
如图1所示,一根刚性细杆可绕其一端的固定轴O无摩擦地转动。在杆的中点与另一端各固定质量相等的两小球A、B。现让杆从水平位置静止开始转到竖直位置的过程中,则下列说法中正确的是( )。
A.杆对小球A的作用力做负功,对小球B的作用力做正功
B.杆对小球A的作用力做正功,对小球B的作用力做负功
C.杆对小球A、B的作用力均做正功
D.杆对小球A、B的作用力均做负功
A、B两小球在轻杆的制约下均绕O点做圆周运动,轻杆对两球的作用力做功的情况取决于杆对球的作用力的方向。假设解除小球A、B与杆的制约关系,在杆绕O点转动的同时让A、B小球下落,那么在下落过程中的同一时刻,杆与两小球的位置关系可能有如图2所示的3种情况。而事实上在运动的同一时刻两球均在刚性轻杆上,若是图2(a)所示的位置情况,则杆对两球的作用力FA、FB分别对两球均做正功,要消耗杆的机械能,这不符合系统的机械能守恒定律;同理分析也不可能是图2(c)所示的位置关系。从系统机械能守恒的角度来看,在运动的的某同一时刻,杆与两小球的位置关系只能如图2(b)所示。这时杆对两球的作用力FA、FB分别对A球做负功、对B球做正功。故选项A正确。
图2 A、B两球位置关系图
设两小球质量均为m,杆长L,杆转到竖直位置时角速度为ω,杆对A、B球做的功分别为WA、WB。对A、B小球与轻杆组成的系统,由机械能守恒定律得:
对A球由动能定理得:
对B球由动能定理得:
解得:
故选项A正确。
用一根较易形变的细铁丝代替原习题中的刚性轻杆,将两个大小差不多的萝卜(或水果)穿在细铁丝上进行模拟实验。实验过程中用数码相机拍得系统下落到某处时的照片,如图3所示。从图3中可以看出,OA段的细铁丝几乎是直的,但AB段的细铁丝明显地向上发生了弯曲。由此可以判断,OA段的杆对球A的作用力应沿杆方向,对球A不做功;AB段的杆对两球的作用力F1、F2的方向都不沿杆方向,两者方向大致如图4所示,F1的方向与A球瞬时速度方向的夹角大于90°,对A球做负功;F2的方向与B球瞬时速度方向的夹角小于90°,对B球做正功。
图3 用细杆做实验 的实物照片
图4 F1、F2方向示意图
如果用一条细线代替原题中的刚性轻杆来进行实验,实验过程中用数码相机拍得系统下落到某处的照片如图5所示。可以看出细线的OA段、AB段都是直的,但是AB段向上偏折。
图5 用细线做实验的实物照片
实物演示不能对其运动进行控制。电脑模拟则容易实现。如果在Visual Basic语言的图形环境中编写以上习题的模拟演示程序。在Visual Basic软件平台中添加1个名为Form 1标准EXE窗体,在窗体中添加名为Picture 1图片框控件作为画图容器,用1个名为Timer 1的控件来控制动画的快慢,用Circle的方法绘制小球,并计算小球与杆(线)运动的位置坐标值,程序演示效果图如图6所示。
图6 效果图
主要程序清单如下:
Option Explicit
Dim n As Integer, a As Single, b As Single
Dimmyexit As String
Const pi = 3.1415
Private SubForm_Load()
Call pp
End Sub
Private Sub pp()
n = 0: a = 0: b = 0
Timer1.Enabled = False
Picture1.Cls
Picture1.AutoRedraw = True
If Option1.Value = True Then
Picture1.DrawWidth = 2
Picture1.Line (0, 0)-(280, 0)
Else
Picture1.DrawWidth = 1
Picture1.Line (0, 0)-(140, 0)
Picture1.Line (140, 0)-(280, 0)
End If
Picture1.Circle (140, 0), 4,vbBlue
Picture1.Circle (280, 0), 4,vbBlue
Label3.Left = 148: Label3.Top = -13: Label3.Visible = True
Label4.Left = 265: Label4.Top = -13: Label4.Visible = True
End Sub
Private Sub Option1_Click()
Call pp
Command1.Caption = "运动": Command1.Enabled = True
End Sub
Private Sub Option2_Click()
Call pp
Command1.Caption = "运动": Command1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Command3.Enabled = False: Option1.Enabled = False: Option2.Enabled = False
Label3.Visible = False: Label4.Visible = False
Timer1.Interval =IIf(Check1.Value = 1, 300, 30)
b = b+0.15: a = a+2 * b
If Check2.Value = 0 Then Picture1.Cls
If Option1.Value = True Then
Picture1.Line (0, 0)-(280 * Cos(a * pi / 180), 280 * Sin(a * pi / 180))
Picture1.Circle (140 * Cos(a * pi / 180), 140 * Sin(a * pi / 180)), 4,vbBlue
Picture1.Circle (280 * Cos(a * pi / 180), 280 * Sin(a * pi / 180)), 4,vbBlue
Else
Picture1.Line (0, 0)-(140 * Cos(a * pi / 180), 140 * Sin(a * pi / 180))
Picture1.Line (140 * Cos(a * pi / 180), 140 * Sin(a * pi / 180))-Step(140 * Cos(0.8 * a * pi / 180), 140 * Sin(0.8 * a * pi / 180))
Picture1.Circle (140 * Cos(a * pi / 180), 140 * Sin(a * pi / 180)), 4,vbBlue
Picture1.Circle (140 * Cos(a * pi / 180)+140 * Cos(0.8 * a * pi / 180), 140 * Sin(a * pi / 180)+140 * Sin(0.8 * a * pi / 180)), 4,vbBlue
End If
If a >= 90 Then
Timer1.Enabled = False
Command1.Caption = "重复": Command3.Enabled = True: Option1.Enabled = True: Option2.Enabled = True
Label3.Left = 148 * Cos(a * pi / 180)+8: Label3.Top = 148 * Sin(a * pi / 180) - 13: Label3.Visible = True
If Option2.Value = True Then
Label4.Left = 130 * Cos(a * pi / 180)+130 * Cos(0.8 * a * pi / 180)+8: Label4.Top = 130 * Sin(a * pi / 180)+130 * Sin(0.8 * a * pi / 180): Label4.Visible = True
Else
Label4.Left = 265 * Cos(a * pi / 180)+8: Label4.Top = 265 * Sin(a * pi / 180) - 13: Label4.Visible = True
End If
End If
End Sub
Private Sub Command1_Click()
If Timer1.Enabled = False And Command1.Caption = "重复" Then
Call pp
Command1.Caption = "运动"
End If
Timer1.Enabled = True
n = n+1
If n Mod 2 = 0 Then
Command1.Caption = "继续"
Timer1.Enabled = False
Label3.Left = 148 * Cos(a * pi / 180)+3: Label3.Top = 148 * Sin(a * pi / 180) - 13: Label3.Visible = True
If Option1.Value = True Then
Label4.Left = 265 * Cos(a * pi / 180): Label4.Top = 265 * Sin(a * pi / 180) - 13: Label4.Visible = True
Else
Label4.Left = 130 * Cos(a * pi / 180)+130 * Cos(0.8 * a * pi / 180): Label4.Top = 130 * Sin(a * pi / 180)+130 * Sin(0.8 * a * pi / 180) - 13: Label4.Visible = True
End If
Else
Command1.Caption = "暂停"
Timer1.Enabled = True
End If
End Sub