简谐振动合成-Matlab
二、振动的合成
实际生活中,一个系统往往会同时参与两个或更多的振动。例如悬挂在颠簸船舱中的钟摆,两列声波同时传入人耳等。一般的振动合成显然是比较复杂,下面仅讨论几种间单情况的简谐振动合成。
一、同方向同频率简谐振动的合成 若两个同方向的简谐振动,频率都是
,它们的运动方程分别为
因振动是同方向的,所以这两个谐振动在任意时刻的和位移应在同一直线上,且等于这两个振动位移的代数和,即
合位移仍为简谐振动
二、两个同方向不同频率简谐振动的合成 拍
如果两个简谐振动的振动方向相同而频率不同,那么合成后的振动仍与原振动方向相同但不再是简谐振动。现设两简谐振动的振幅都为A,初相位为零,它们的振动方程分别为
合成振动方程为
若两个分振动的频率都较大且其差很小时,即拍,变化的频率称拍频,变化的振幅为
,合振动可看作为振幅
随时间缓慢变化的近似谐振动,振幅随时间变化且具有周期性,表现出振动或强或弱的现象,称
变化的频率为
三、相互垂直的简谐振动的合成 李萨如图
如果两个简谐振动分别在x轴和y轴上进行,他们的振动方程分别为
合成后,可得质点的轨迹为椭圆方程
若两分振动有不同的频率,且两频率之比为有理数时,则合成后的质点运动具有稳定、封闭的轨迹。称其为李萨如图形。
程序编写
我们已经在第一讲中体验了matlab的编程,可是你一定会生出这样的问号,辛辛苦苦在命令窗口写的一大堆代码怎么不保留?不用担心,matlab程序和其他编程工具一样,也有专门的文件格式,称m文件,文件名形式为“文件名.m”。你可以用matlab自带的编辑器来输入你的程序代码,当然你也可以用其它编辑器或最经济的文本编辑器,不过别忘记添加文件名的后缀“.m”。 下面,请跟我一起用m文件编辑器来编写matlab程序。
例题:两个振动方向相同而频率不同的简谐振动方程分别为
合成后的方程是
请用matlab程序描述合成波和拍频现象 。 编程:
第一步:点击matlab图标,打开程序窗口。 第二步:选file—new—m-file,打开编辑器。 第三步:在编辑器中输入下列程序代码: t=1:0.001:10 ; %设定时间的范围从1到10
a1=input('振幅1=');w1=input('频率1='); %要求用户输入简谐振动1的状态参量 a2=input('振幅2=');w2=input('频率2='); %要求用户输入简谐振动2的状态参量 y1=a1*cos(w1*t+phi1); %简谐振动1的运动方程 y2=a2*cos(w2*t+phi2); %简谐振动2的运动方程 y=y1+y2; %简谐振动1、2的合成谐振3
subplot(3,1,1),comet(t,y1),ylabel('y1') %绘制谐振1、2、3的振动曲线 subplot(3,1,2),comet(t,y2),ylabel('y2') subplot(3,1,3),comet(t,y),ylabel('y'),xlabel('t') sound(y1);pause(2), sound(y2);pause(2),sound(y)
注意:拍频现象要求两个振动的频率都很大,且相差很小。
第四步:按工具栏上的“保存”按钮将程序保存在当前目录下(可以重命名),再按F5运行此程序进入命令窗口根据窗口上的提示输入数据,每次输完一个数据按
当然初相为零的情况仍然比较特殊,为了使该程序适用于更多的情况,我们可以在源程序上作一些修改:
t=1:0.001:10 ; %设定时间的范围从1到10
a1=input('振幅1=');w1=input('频率1=');phi1=input('初相位1='); %要求用户输入简谐振动1的状态参量
a2=input('振幅2=');w2=input('频率2=');phi2=input('初相位2='); %要求用户输入简谐振动2的状态参量
y1=a1*cos(w1*t+phi1); %简谐振动1的运动方程 y2=a2*cos(w2*t+phi2); %简谐振动2的运动方程 y=y1+y2; %简谐振动1、2合成谐振3
subplot(3,1,1),comet(t,y1),ylabel('y1') %绘制谐振1、2、3的振动曲线 subplot(3,1,2),comet(t,y2),ylabel('y2') subplot(3,1,3),comet(t,y),ylabel('y'),xlabel('t') sound(y1);pause(2), sound(y2);pause(2),sound(y) 这样你就可以随便了。
快行动,打破你用程序绘图的记录吧! 相互垂直的简谐振动的合成 李萨如图
上学期我们在物理实验中用示波器演示过李萨如图形,在你感慨于示波器的强大功能之余,
你是否脑中闪现过自己编程在电脑上演示的念头呢?No,it's not a miracle.因为你不能说示波器比计算机先进,因为Matlab就是具有这样的魔力!Now,let's try. step 1:打开Matlab程序窗
step 2:用工具栏上的“新建”按纽打开一个。
step 3:在窗口中输入以下程序代码: t=1:0.001:10;%设定时间的范围从1到10
a1=input('振幅1=');w1=input('频率1=');phi1=input('初相位1=');%要求用户输入x轴上简谐振动1的状态参量
a2=input('振幅2=');w2=input('频率2=');phi2=input('初相位2=');%要求用户输入y轴上简谐振动2的状态参量 x=a1*cos(w1*t+phi1); y=a2*cos(w2*t+phi2);
subplot(2,2,1),plot(t,x),title('x轴上谐振1') subplot(2,2,4),plot(y,t),title('y轴上谐振2')
subplot(2,2,3),comet(x,y),ylabel('y'),xlabel('x'),title('李萨如图形') over,that's all.感觉如何?不信,那么就go to step4开始运行它吧! step 4:首先保存(如保存其名为),再按F5运行。 step 5:移至Matlab主窗口,输入,按Enter键即得
是不是感觉很爽啊?想必现在你已经了解到了Matlab的神奇魔力,相信自己,编程就是这么easy,快快行动吧!!!
拍现象:振幅1=20 频率1=4 初相位1=pi 振幅2=20 频率2=2 初相位
2=20