0 引言
Visubl C++是一个功能强大的面向对象的可视化软件开发工具,它是一个基于windows操作系统的可视化集成开发环境。ViSUal C++中包括的编辑器、调试器以及AppWizard、Class Wizard等开发工具,大大减轻了编程的工作量。在Visual c++环境下,用户可以较好地实现用户界面的设计、图形图像处理、网络、通讯、多媒体、数据库的使用等方面的编程[1]。在物理教学中,简谐振动的合成是必要的,其演示一般是通过函数信号发生器与示波器来实现的[2]。在利用示波器观察简谐振动的合时,其图形的稳定性极易受到信号干扰的影响,特别在是观察李萨如图形时,很难调节其稳定性。针对其不足,本文提出了用Visual C++编程来演示简谐振动的合成。连续、动态的图形效果,不但可以加深学生的对各种简谐振动合成的理解,还可提高学生的学习兴趣。
1 简谐振动合成的原理
简谐振动是基本简单的振动,在实际问题中,常会遇到一个质点同时参与几个振动的情况,即振动的合成。振动合成问题比较复杂,一般只研究几种简单情况简谐振动的合成[3]。
1.1 同方向简谐振动的合成
同方向的两个简谐振动的合成可分为同频率与不同频率的两种情况。
(1) 同方向、同频率的简谐振动的合成。
两个简谐振动的表达式分别为:x1=A1cos(2πft+φ10)和x2=A2cos(2πft+φ20),其中A1、A2、φ10、φ20、f分别表示两者振动的振幅、初相位和频率。则其合振动为:
(2)同方向、不同频率的简谐振动的合成
两个简谐振动的表达式分别为x1=A1cos(2πf1t+φ10)和x2=A2cos(2πf2t+φ20),若.A1=A2=A,则其合振动为:
1.2 相互垂直简谐振动的合成
(1)相互垂直、同频率的简谐振动的合成
两个简谐振动的表达式分别为:x=A1cos(2πft+φ10和y=A2cos(2πft+φ20)。消去t,得轨迹方程:
(2) 相互垂直、不同频率的简谐振动的合成
如果两个振动的频率有很小的差异,相位差不是定值,合运动的轨迹是变化的。如果两个振动的频率相差很大,并有简单的整数比值关系,可得到稳定的运动轨迹曲线即李萨如图形。在李萨如图形中,作与x、y轴平行的直线,两线与李萨如图形交点的个数比与对应的频率比成反比,由此可求一振动的未知频率。
2 VC++的模拟实现
2.1 程序的设计框图
根据功能可设计如下功能:
图1.简谐振动合成演示程序的设计框图
2.2 图形的合成实现
根据简谐振动合成的功能分析,用户界面可分成同方向和垂直方向合成两部分,每一部分都包括数据输入及图形的显示。
(1)数据的输入
分振动各数据(振幅A,、A2,频率f1、f2,初相位φ10、φ20)的输入是通过编辑控件及微调控件实现,两振动的初相差还可通过滑动条的移动来设置,操作简单方便,如图2、4所示。
(2)图形的显示
在同方向振动中,当两振动为同频率时,若输入的数据为:A1=2m,f1=2Hz,.A2=2m,φ10=0,f2=2Hz,φ20=1.57rad(即π/2),便显示合振动的数据为:A=2.82955m,f=2Hz,φ0=o.785rad,如图2所示。并用不同的颜色显示两分振动与合振动图形。图中黑色曲线为合成图形,红色表示振动1,绿色表示振动2。当两振动为不同频率时,若输入的数据为:A1=2m,f1=100Hz,φ10=0,A2=2m,f2=90Hz,φ20=2.61667rad,这种情况图形合成后产生拍现象。由.f拍=|f2-f1|,显示合振动的拍频为lOHz,如图3所示。图中黑色曲线为合成的拍现象。
在垂直方向振动中,若输入的数据为:A1=2m,f1=2Hz,φ10=0,A2=2m,f2=3Hz,φ20=2.355rad,便可观察到如图4所示的李萨如图形(蓝色曲线)。对李萨如图形,还可通过鼠标左、右键做辅助线,来验证交点与频率比之间的关系。与X轴平行的(绿)线,与图形多交点个数为6,与y轴平行的(蓝)线,与图形多交点个数为4,两交点个数比3:2与两两分振动的频率比f1:f2=2:3成反比。通过滑动条动态的改变两分振动的初相差,可以使得图像的呈现连续动态变化的效果。
2.3 主程序
(1)同方向振动的合成
3 结论
简谐振动的合成是机械振动的主要内容,具有一定的实用性。使用VC++编程,可更形象、生动地显示简谐振动合成。当通过微调控件来动态的改变两分振动的初相差时,还可实现合成图形的动态变化。程序中还可进行简单的数据处理,操作简单方便。该程序可用于课堂教学中,能激发学生的学习兴趣,并能加深学生对不同情况的简谐振动合成的理解。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。