百科问答小站 logo
百科问答小站 font logo



为什么手机只能围绕三个对称轴其中的两个稳定地旋转? 第1页

  

user avatar   liang-hao-80 网友的相关建议: 
      

这是刚体转动中一个非常著名的现象,网球拍效应(Tennis Racket Theorem)。不清楚情况的读者可以先看看下面的视频

https://www.zhihu.com/video/1016382059736158208
来源:youtube.com/watch?

为什么这个钢件好好的转着转着,一下子就翻过来了?然后又给翻回去了?

我们再来看看一个更详细的短片

https://www.zhihu.com/video/1016382115360948224
来源:youtube.com/watch?

一副扑克牌,绕着最长的轴自转是稳定的,绕着最短的轴自转也是稳定的,偏偏就是绕着中间那根轴转着转着会翻过来,也就是题主所描述的现象了【讲实话我想看看题主的手机现在是个什么情况,还是说用诺基亚来做的实验?


这个现象背后的原理是什么呢?最常见的解释是基于固着在刚体上的坐标架讨论的,这需要读者具备对角动量和转动惯量张量的基本认识:

取刚体的三个惯量主轴为x, y, z轴,相应的转动惯量为 ,角动量分量为 。那么整个刚体的转动动能为

其等值面在角动量空间中构成了一个椭球面,三个主轴分别为 。

对于自由转动的刚体,其角动量矢量 是一个守恒量。但是我们现在在刚体坐标架上考虑问题,那么其方向相对于这个坐标架便不再是一个常量,但 的大小依旧守恒。即我们可以写出

这是角动量空间中的一个球面。那么剩下的便是考虑球面和椭球面相交的问题了。我们可以作出一个椭球面,然后画出半径不同的球面与它的交线:

对于刚体绕某一个惯量主轴旋转的情况,在角动量空间中显然它们都位于椭球面与坐标轴的交点处。这时设想刚体的转动方向相对于转动主轴有那么一点点偏离,对于绕 z 轴或 x 轴转动的情形,从图中可以看到极点附近有一圈等值线,这意味着角动量将绕着这个轴旋转,也就是说刚体在稳定的作进动。而对于绕 y 轴旋转的情形,此处明显对应于曲面上的一个鞍点,并不存在绕这一点的等值线;稍微偏离一点点就会刷的一下绕到另一头去再绕回来,周而复始,也即我们在视频中看到的情况。


上面的解释在物理图像上是非常清晰的,可惜需要用到刚体动力学的一些概念。能不能直接从简单的受力分析来得到这个结果呢?著名网红数学家 特仑苏·陶 在爆栈网上有一个回答,给出了一个详(luo)细(suo)的解释,这里作简要翻译:

One can see this effect qualitatively from Newtonian first principles (as opposed to Hamiltonian or Lagrangian principles) by looking at a degenerate case, when one moment of inertia is very small and the other two are very close to each other.

通过对一个退化情形:三个主转动惯量中有一个很小,而另外两个很接近 的讨论,我们能从牛顿定律出发(而不是哈密顿力学或拉格朗日力学)来定性理解这个现象

More specifically, consider a thin rigid unit disk, initially oriented in the xy plane and centred at the origin (0,0,0). We make the "spherical cow" hypotheses that this disk has infinitesimal thickness and mass, but infinite rigidity. On this disk, we place heavy point masses of equal mass M at the points (1,0,0) and (-1,0,0), and light point masses of equal mass m at the points (0,1,0) and (0,-1,0). Here 0<m<<M, i.e. m should be viewed as negligible with respect to M. (The moments of inertia are then 2m,2M,2(m+M), though we will not explicitly use these moments in the analysis below.)

具体来说,考虑一个薄的刚体圆盘,初态位于xy平面上,中心位于(0,0,0)。使用球形牛假设(是真空中的球形鸡的梗么...),即盘无限薄,无限轻且足够坚硬。在盘上,我们分别将两个质量为M的重质点固着于(1,0,0),(-1,0,0),两个质量为m的轻质点固着于(0,1,0),(0,-1,0)。这儿有 0<m<<M,即m相对m可以忽略。(其惯量张量为2m,2M,2(m+M),在下面的分析中我们不会显式地使用这些量)

We now set up the unstable equilibrium by rotating the disk around the y axis. Thus, the light m-masses stay fixed, while the heavy M-masses rotate in the xz plane. This is in equilibrium: there are no net forces on the m-masses, while the rigid disk exerts a centripetal force on the M-masses that keeps them moving in a circular motion on the xz plane.

考虑一个不稳定的平衡态:盘绕着y轴旋转。这样,轻质点m平衡的停在那里,而重质点M在xz平面旋转。这是一个平衡态:m没有受到净的作用力,而刚体盘给重质点提供向心力使他们绕着xz平面做圆周运动

We can view this equilibrium in rotating coordinates, matching the motion of the M-masses. (Imagine a camera viewing the disk, rotating around the y-axis at exactly the same rate as the disk is rotating.) In this rotating frame, the disk is now stationary (so the m-masses are stuck at (0,±1,0) and the M-masses are stuck at (±1,0,0)), but there is a centrifugal force exerted on all bodies proportional to the distance to the y-axis. The m-masses are on the y-axis and thus experience no centrifugal force; but the M-masses are away from the y-axis and thus experience a centrifugal force, which is then balanced out by the centripetal forces of the rigid disk.

我们可以在转动坐标架中考察这个平衡,即跟上M质点的运动(考虑一个绕着y轴以相同角速度旋转的摄像头正对着圆盘)。在转动系中,圆盘是静态的(因此质点m固着在(0,±1,0),而质点M固着在(±1,0,0)),但是有一个与到y轴距离成正比的离心力施加在所有物体上。m位于y轴上因此不会受到离心力;但M由于离轴而受到一个被刚体盘的张力平衡掉的离心力。

Now let us perturb the disk a bit, so that the m-masses and M-masses are knocked a little bit out of position (but keeping the centre of mass fixed at (0,0,0)). In particular, the m-masses are knocked away from the y-axis and now experience a little bit of centrifugal force. On the other hand, the rigid disk forces the light m-masses to remain orthogonal to the heavy M-masses, by exerting tension forces between the masses. In the regime where m is negligible compared to M, these tension forces will barely budge the heavy M masses (which therefore remain essentially fixed at (±1,0,0) in the rotating frame), so the effect of these tension forces is to constrain the m-masses to lie in the yz plane (up to negligible errors which we now ignore). Rigidity also keeps the m-masses at a unit distance from the origin, and antipodal to each other, so the m-masses are now constrained to be antipodal points on the unit circle in the yz plane. However, other than this, rigidity imposes no further constraints on the location of the m-masses, which can then move freely as antipodal points in this unit circle.

现在让我们给盘一个微扰,使得M,m都离开平衡位置一点点(但质心仍然保持在(0,0,0)不动)。一方面,轻质点m会由于偏离y轴一点点而受到一点离心力。另一方面,刚性圆盘通过张力使得两m间的连线仍然与两M间的连线正交,由于m远小于M,这些张力几乎挪不动两重质点M(因而在转动坐标下M基本维持在(±1,0,0)的位置上),所以这些张力的作用是将m质点限制在yz平面内(至多有一些可忽略的误差)。刚体也使得质点m到原点的距离始终为1,并使得两质点关于坐标原点对称。所以说两质量为m的质点被限制为yz平面上一个单位圆上的一对对称点。然而,除此之外,刚体没有给两轻质点m的位置加进一步的约束,即它们可以作为单位圆上的一对对称点自由运动。

The effect of centrifugal force in the rotating frame is now clear: if an m-mass (and its antipode) is perturbed to be a little bit off the y-axis in this unit circle with no initial velocity, then centrifugal force will nudge it a little further off the y-axis, slowly at first but with inexorable acceleration. Eventually it will shoot across the unit circle and then approach the antipode of its previous position. At this point the centrifugal forces act to slow the m-masses down, reversing all the previous acceleration, until one ends up with no velocity at a small distance from the antipode. The process then repeats itself (imagine a marble rolling frictionlessly between two equally tall hills, starting from a position very close to the peak of one of the hills).

现在,在转动坐标架中,离心力的影响很明确了:当一个质点m(和它的对称点)受到了一个沿着单位圆偏离y轴的小位置扰动(没有初速度),离心力将会把它进一步拉离y轴,开始很慢但必然会加速。最终它将穿过半个单位圆并到达与其初始位置相对的地方。在这一点离心力将会给质点m减速,抵消之前的加速过程,直到接近初始位置的对称点时速度降为零。这个过程将会不断重复(想象一颗在两座同样高的小山间无摩擦滚动的球,从一个非常接近一座山的山顶的位置出发)。


这里给出陶所述的模型在几种情况下的动画演示

绘图代码(四年前写的东西就别吐槽了)

                         [         Gamma         ]                   =                   10         ;         (*质量比*)                                     [         Beta         ]                   =                   -0.01         /         (                  [         Gamma         ]                   +                   1         )                   +                   1.01         /                  [         Gamma         ];         (*2E I_1/L^2*)                            s                   =                   Sqrt         [(         1                   -                            [         Beta         ])         /                  [         Gamma         ]         /         (                  [         Gamma         ]                   +                   1         )];                            m                   =                   (                  [         Gamma         ]                   -                   1         )                   (                  [         Beta         ]                   (                  [         Gamma         ]                   +                   1         )                   -                   1         )         /         (         1                   -                            [         Beta         ]);                                     [         CapitalOmega         ]         1         [         t_         ]                   :=                            Re         [         Sqrt         [(                  [         Beta         ]                   (                  [         Gamma         ]                   +                   1         )                   -                   1         )         /                  [         Gamma         ]]                   JacobiCN         [         s                   t         ,                   m         ]];                                     [         CapitalOmega         ]         2         [         t_         ]                   :=                            Re         [         Sqrt         [(                  [         Beta         ]                   (                  [         Gamma         ]                   +                   1         )                   -                   1         )         /                  [         Gamma         ]]                   JacobiSN         [         s                   t         ,                   m         ]];                                     [         CapitalOmega         ]         3         [         t_         ]                   :=                            Re         [         Sqrt         [(         1                   -                            [         Beta         ])         /                  [         Gamma         ]         /         (                  [         Gamma         ]                   +                   1         )]                   JacobiDN         [         s                   t         ,                   m         ]];                                     [         Theta         ][         t_         ]                   :=                   ArcCos         [(                  [         Gamma         ]                   +                   1         )                            [         CapitalOmega         ]         3         [         t         ]];                                     [         Psi         ][         t_         ]                   :=                   Which         [                                     [         CapitalOmega         ]         1         [         t         ]                   >=                   0                   &&                            [         CapitalOmega         ]         2         [         t         ]                   >                   0         ,                            ArcTan         [                  [         CapitalOmega         ]         1         [         t         ]         /                  [         Gamma         ]         /                  [         CapitalOmega         ]         2         [         t         ]],                                     [         CapitalOmega         ]         1         [         t         ]                   <                   0                   &&                            [         CapitalOmega         ]         2         [         t         ]                   >=                   0         ,                            2                            [         Pi         ]                   +                   ArcTan         [                  [         CapitalOmega         ]         1         [         t         ]         /                  [         Gamma         ]         /                  [         CapitalOmega         ]         2         [         t         ]],                                     [         CapitalOmega         ]         1         [         t         ]                   <                   0                   &&                            [         CapitalOmega         ]         2         [         t         ]                   <                   0         ,                            [         Pi         ]                   +                            ArcTan         [                  [         CapitalOmega         ]         1         [         t         ]         /                  [         Gamma         ]         /                  [         CapitalOmega         ]         2         [         t         ]],                            True         ,                            [         Pi         ]                   +                            ArcTan         [                  [         CapitalOmega         ]         1         [         t         ]         /                  [         Gamma         ]         /                  [         CapitalOmega         ]         2         [         t         ]]                            ];                            (*[Phi][t_]:=NIntegrate[([CapitalOmega]1[[Tau]]^2+[Gamma]           [CapitalOmega]2[[Tau]]^2)/([CapitalOmega]1[[Tau]]^2+[Gamma]^2           [CapitalOmega]2[[Tau]]^2),{[Tau],0,t}];*)                            T                   =                   4                   Re         [         EllipticK         [         m         ]]         /         s         ;                            (*函数的定义*)                            dt                   =                   T         /         64         ;                            tlist                   =                   Table         [(         i                   -                   1         /         2         )                   dt         ,                   {         i         ,                   1         ,                   4                   T         /         dt         }];                             angle                   =                   Table         [{         0         ,                            [         Theta         ][         t         ],                            [         Psi         ][         t         ]},                   {         t         ,                   tlist         }];                             Do         [                            angle         [[         i         ,                   1         ]]                   =                   angle         [[         i                   -                   1         ,                   1         ]]                   +                   dt                   ((                  [         CapitalOmega         ]         1         [                   tlist         [[         i         ]]]         ^         2                   +                            [         Gamma         ]                            [         CapitalOmega         ]         2         [                   tlist         [[         i         ]]]         ^         2         )         /         (                  [         CapitalOmega         ]         1         [                   tlist         [[         i         ]]]         ^         2                   +                            [         Gamma         ]         ^         2                            [         CapitalOmega         ]         2         [                   tlist         [[         i         ]]]         ^         2         )                   +                   (                  [         CapitalOmega         ]         1         [                   tlist         [[         i                   -                   1         ]]]         ^         2                   +                            [         Gamma         ]                            [         CapitalOmega         ]         2         [                   tlist         [[         i                   -                   1         ]]]         ^         2         )         /         (                  [         CapitalOmega         ]         1         [                   tlist         [[         i                   -                   1         ]]]         ^         2                   +                            [         Gamma         ]         ^         2                            [         CapitalOmega         ]         2         [                   tlist         [[         i                   -                   1         ]]]         ^         2         ))                   ,                             {         i         ,                   2         ,                   Length         [         angle         ]}]                             (*数据的计算*)                             file                   =                   Table         [                             Graphics3D         [{         GeometricTransformation         [{                             Gray         ,                   Cylinder         [{{         0         ,                   0         ,                   -0.02         },                   {         0         ,                   0         ,                   0.02         }},                   1         ],                             Red         ,                   Sphere         [{         1         ,                   0         ,                   0         },                   0.15         ],                   Sphere         [{         -1         ,                   0         ,                   0         },                   0.15         ],                             Green         ,                   Sphere         [{         0         ,                   1         ,                   0         },                   0.05         ],                   Sphere         [{         0         ,                   -1         ,                   0         },                   0.05         ],                             Blue         ,                   {         Arrow         [{{         -1.15         ,                   0         ,                   0         },                   {         1.15         ,                   0         ,                   0         }}],                   Arrow         [{{         0         ,                   -1.15         ,                   0         },                   {         0         ,                   1.15         ,                   0         }}],                   Arrow         [{{         0         ,                   0         ,                   -1.15         },                   {         0         ,                   0         ,                   1.15         }}]}                   },                             {         RotationMatrix         [         -         angle         [[         i         ,                   1         ]],                   {         0         ,                   0         ,                   1         }]         .         RotationMatrix         [         -         angle         [[         i         ,                   2         ]],                             {         1         ,                   0         ,                   0         }]         .         RotationMatrix         [         -         angle         [[         i         ,                   3         ]],                   {         0         ,                   0         ,                   1         }],                   {         0         ,                   0         ,                   0         }}],                             {         Line         [{{         -1.15         ,                   0         ,                   0         },                   {         1.15         ,                   0         ,                   0         }}],                   Line         [{{         0         ,                   -1.15         ,                   0         },                   {         0         ,                   1.15         ,                   0         }}],                   Line         [{{         0         ,                   0         ,                   -1.15         },                   {         0         ,                   0         ,                   1.15         }}]}}                   ,                             Boxed                   ->                   False         ,                   ImageSize                   ->                   500         ]                             ,                   {         i         ,                   1         ,                   Length         [         angle         ]}];                             ListAnimate         [         file         ,                   AnimationRate                   ->                   8         ]                             (*动画生成*)            

参考资料:

刘川,理论力学 【我最早得知这个现象就是在川哥的课上,而且我说这篇文章最早是理力期末前两天我划水写在人人网上的你信不信【手动斜眼

刘延柱,趣味刚体动力学,2.2节中利用这个原理解释了体操运动中的旋空翻动作

维基页面 Tennis racket theorem 这里有一幅动图很好的演示了椭球面和球面的相交




  

相关话题

  物理科班出身的人是否更容易对中医抱以开放的态度? 
  雨滴是什么形状的? 
  火车高速撞人会怎样? 
  怎样理解广义相对论中的张量有关的这套符号体系? 
  你见过什么复杂到让你目瞪口呆的公式? 
  300吨铁球从10万米高空落下会怎样? 
  圆周率 π 在实际工程领域最多用到了多少位? 
  要实现刺客联盟中的子弹拐弯,手需要对手枪施加一个怎样的力,需要满足什么条件? 
  「半导体」是一种什么样的物质?有什么样的特点? 
  「上帝粒子」希格斯玻色子常见衰变终于被捕获,有什么重要意义? 

前一个讨论
为什么追求环保的电动汽车要装空调?
下一个讨论
什么叫做C位?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利