振动

Posted 行而上

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了振动相关的知识,希望对你有一定的参考价值。

谐振子

在物理学的不同领域甚至别的学科中,出现的方程式往往是完全一样的,这导致不同领域中会有相似的现象。因此对一个领域的研究可以扩展我们对另一个领域的认识,我们从一开始就应到认识到这种扩展的可能性,才能坚定地为此付出时间和精力。

学习谐振子本质上是在学习“常系数线性微分方程”。一般的\\(n\\)阶常系数线性微分方程可以写作\\(a_n\\dfracd^n xdt^n+a_n-1\\dfracd^n-1xdt^n-1+\\cdots+a_1\\dfracdxdt+a_0x=f(t)\\)。其中,水平弹簧上挂一个重物的简谐运动模型的方程形式最简单,形如\\(m\\dfracd^2 xdt^2=-kx\\)。为了方便,我们暂时令\\(k=m\\),那么消去得到\\(\\dfracd^2 xdt^2=-x\\)。我们发现,三角函数刚好满足这个性质,因此\\(x=\\cos t\\)(或者\\(\\sin t\\))会是一个可行解。而经过尝试,我们发现\\(x=A\\cos t\\)对于任意的\\(A\\)都是可行的——这说明了线性微分方程的一个极其重要的性质:如果用任意常数乘以方程的一个解,所得结果仍是方程的解。从数学上这可以用“常数可以提出微分之外”来解释,而它的物理意义却很有意思——如果我们在初始时把物体拉到原来的两倍的距离上,那么其受力也变成两倍;虽然路程边远,但它加速的也更快,最后的结果是时间不变——也就是说,对于遵循线性方程的运动来说,不管运动有多“强”,它都会具有相同的“时间图像”。所以为了使物体满足一般的方程\\(m\\dfracd^2 xdt^2=-kx\\),我们必须尝试改变时间的标度。 设\\(x=\\cos \\omega_0 t\\),其二阶导为\\(-\\omega_0^2 \\cos \\omega_0 t = -\\omega_0^2 x\\)。因此只需令\\(\\omega_0^2 = \\dfrackm\\)就得到一个解了。我们知道三角函数是周期函数,而\\(w_0T=2\\pi\\)时刚好走完一个周期,因此我们就称\\(T\\)为简谐运动的一个周期。

我们已经知道,仅根据微分方程是无法确定常数系数的,并且由于初速度初位移的各种不同,最后解的情况也不同。我们依旧假定解是三角函数的形式,那么改变初相位,得到解\\(\\cos(\\omega_0 t + \\Delta)\\),对它和差展开,我们发现任何形如\\(x=A\\cos \\omega_0 t+B\\sin \\omega_0 t\\)都是可能成为解的。我们可以用这个形式来待定系数,求出初始条件下的方程。

对于任何一个求得的解,我们可以验证解决定的弹性势能和动能之和对任意时间\\(t\\)恒为常数,这与能量守恒定律相符。

“简谐运动的解是三角函数”这一事实暗示了简谐运动与圆周运动在数学上具有某种联系,因为三角函数最初是定义在单位圆上的。其实,在研究圆周运动时,我们其实已经结果简谐运动的微分方程了——圆周运动的水平投影(或者竖直投影)就是简谐运动,向心加速度的水平分量水平投影运动的加速度,而就是对应简谐运动的加速度。如果我们把振动看作某个圆周运动的投影,那么我们就只需要分析简谐运动而没有必要分析微分方程了,尽管另一个方向的运动完全是人为补充的多余的运动。而如果我们用复数的技巧,会使得运算变得简单。

受迫振动

受迫运动是弹簧振子在受到一个外策力\\(F(t)\\)的作用下的运动。假设力也是一个振动,比如\\(F(t)=F_0\\cos \\omega t\\),那么动力学方程为

\\(m\\dfracd^2 xdt^2=-kx+F_0\\cos \\omega t\\)

我们在上文中非受迫振动时曾得到了一个固定的周期,对应有\\(\\omega_0^2 = \\dfrackm\\)。这个\\(\\omega _0\\)是由\\(k,m\\)决定的,即由弹簧振子本身的性质决定。所以我们可以做代换\\(k=m\\omega_0^2\\)。那么也就是要解微分方程

\\(m\\dfracd^2 xdt^2+m\\omega_0^2 x=F_0\\cos\\omega t\\)

我们设想\\(x\\)依然是三角函数,并且和外策力具有相同的频率(试一试总是可以的)。这是符合直觉的,因为假如我们不断来回推动物体,物体必将与力同步来回运动。代入\\(x = C\\cos \\omega t\\),得到

\\(-mC\\omega^2 \\cos \\omega t+m\\omega_0^2 C\\cos \\omega t=F_0 \\cos \\omega t\\)

看来这是可行得,并且\\(C\\)必须等于\\(\\dfracF_0m(\\omega_0^2-\\omega^2)\\)

这个解就是受迫振动的运动,它表面受迫谐振子和外策力频率相同,但振动幅度由外策力频率决定。当\\(\\omega=\\omega_0\\)时,振动幅度趋向无穷(理想情况,实际情况由于摩擦力的存在,弹簧劲度系数有限,不可能达到无穷);当\\(\\omega\\)远小于\\(\\omega_0\\)时,\\(C\\)为正,位移矢量和力的矢量方向相同,因为此时推得很慢;而远大于时,位移矢量必须和力得矢量方向相反。当外策力频率很高的时候,分母很大,振幅很小。

显然,这个解是在特定初始条件下的。在别的初始条件下还会有别的解,我们暂时先不讨论。

阻尼振动

现在我们再把阻力加入到方程中。在很多情况下,阻力与速度成正比,比如在油或很浓的液体中,物体运动的越快,油为了让其更快通过必须受到更大的力,因此阻力也就越大。我们解方程:

\\(m\\dfracd^2 xdt^2+c\\dfracdxdt+kx=F(t)\\)

方便起见,取\\(c=m\\gamma,k=m\\omega_0^2\\),并再次假定\\(F=F_0\\cos \\omega t\\),那么化简得到

\\(\\dfracd^2 xdt^2+\\gamma\\dfracdxdt+\\omega_0^2x=\\dfracF_0\\cos\\omega tm\\)

我们依然假设解是常数乘以与外策力频率相同的三角函数,但这一次必须带上相位差。但由于正弦与余弦的同时存在,运算将很繁琐。为了运算上的方便,我们引入复数的技巧。根据欧拉公式\\(e^i\\theta=\\cos \\theta+i\\sin \\theta\\),我们可以用幂指数来代替三角函数。我们把\\(x,F\\)看作复数,因为复数相等肯定得要求实部相等,我们把上述方程作为我们复数方程的实部(这种方法能适用正是因为方程是线性的,因此实部和虚部才能互相独立)。记\\(\\hatF=F_0 e^i\\omega t\\)(尖号代表复数),位移为复数\\(\\hatx\\),那么要解方程

\\(\\dfracd^2 \\hatxdt^2+\\gamma\\dfracd \\hatxdt+\\omega_0^2\\hatx=\\dfrac\\hatFm\\)

根据我们的假设,\\(x\\)作为幂指数取一次导数就相当于其本身乘以指数上\\(t\\)的系数——微分被转化为了乘法!那么代入得到

\\((i\\omega)^2\\hatx+\\gamma(i\\omega)\\hatx+\\omega_0^2 \\hatx=\\dfrac\\hatFm\\)

因此\\(\\hatx = \\dfrac\\hatFm(\\omega_0^2-\\omega^2+i\\gamma \\omega)\\)

这说明解是力乘以(复数的)常数,一个复数常数肯定可以被某个\\(\\rho e^i\\theta\\)表示,因此\\(\\hatx=\\rho e^i\\thetaF_0e^i\\omega t=\\rho F_0e^i(\\omega t+\\theta)\\)。取实部,就得到\\(x=\\rho F_0\\cos(\\omega t+\\theta)\\)。我们通过对这个常数分母实数化就可以得到\\(\\dfrac1m(\\omega_0^2-\\omega^2+i\\gamma \\omega)=\\dfrac\\omega_0^2-\\omega^2-i\\gamma \\omegam(\\omega_0^2-\\omega^2+i\\gamma \\omega)(\\omega_0^2-\\omega^2-i\\gamma \\omega)=\\dfrac\\omega_0^2-\\omega^2-i\\gamma \\omegam((\\omega_0^2-\\omega^2)^2+\\gamma^2\\omega^2)\\)由此可得\\(\\rho = \\dfrac1m\\sqrt(\\omega_0^2-\\omega^2)^2+\\gamma^2\\omega^2\\)\\(\\tan \\theta=\\dfrac\\gamma \\omega\\omega^2-\\omega_0^2\\)

由此我们看到振幅是\\(\\dfracF_0m\\sqrt(\\omega_0^2-\\omega^2)^2+\\gamma^2\\omega^2\\),可见在阻尼存在的情况下振幅能达到极大而不是无穷大。\\(\\gamma\\)是阻尼的系数,如果它很小,那么左边的项主导振幅的大小。

共振

在阻尼振动中,如果\\(\\omega\\)\\(\\omega_0\\)非常接近并且\\(\\gamma\\)很小,那么\\((\\omega_0^2-\\omega^2)=(\\omega_0+\\omega)(\\omega_0-\\omega)\\)\\(\\approx 2\\omega_0(\\omega_0-\\omega)\\)\\(\\gamma \\omega \\approx \\gamma \\omega_0\\),于是振幅可以近似为\\(\\dfracF_0m\\sqrt4\\omega_0^2(\\omega_0-\\omega)^2+\\gamma^2\\omega_0^2\\)\\(=\\dfracF_02m\\omega_0\\sqrt(\\omega_0-\\omega)^2+\\gamma^2/4\\)。这个公式成为“共振”公式,它是在\\(\\omega\\)\\(\\omega_0\\)很接近且阻尼\\(\\gamma\\)很小时的阻尼振动。共振现象的重要性在于,它在很多其他情况中也会出现。例如如果把一个电感、电阻和电容串联在一起,会得到一个关于电荷\\(q\\)的线性微分方程,这个方程和阻尼振动一模一样,因此我们可以直接得到解——电路同样有着共振的性质。

Android 振动服务(振动器)长时间不工作

【中文标题】Android 振动服务(振动器)长时间不工作【英文标题】:Android Vibrate Service (Vibrator) is not working for long time 【发布时间】:2013-06-13 04:05:04 【问题描述】:

我想长时间振动手机(例如 2 分钟),但它振动的时间很短。 我正在使用此代码

Vibrator mVibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
mVibrate.vibrate(2*60*1000); // 2 Minutes

如何振动 2 或 3 分钟?

【问题讨论】:

【参考方案1】:

还有另外一种长振动方式,

Vibrator mVibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long pattern[]=0,800,200,1200,300,2000,400,4000;
// 2nd argument is for repetition pass -1 if you do not want to repeat the Vibrate
mVibrate.vibrate(pattern,-1);

您可以增加图案的阵列以进行长时间振动。

【讨论】:

如果我通过 10(重复 10 次)代替 -1,则振动不会重复 10 次。如何重复? @AtulBhardwaj 您正在测试哪个设备? 我正在使用 Htc one v (ICS)

以上是关于振动的主要内容,如果未能解决你的问题,请参考以下文章

SGS可靠性振动测试服务,IEC 60068-2-64-2008,GB/T 2423.10-2008

如何使用 UILocalNotification 设置振动并且声音不会仅振动 iphone

Android 振动服务(振动器)长时间不工作

能够将振动转发到手表的颤振振动包?

关于振动传感器信号问题

从 QQ “振动” 理解 iPhone 通知