经典力学手记:拉格朗日方程

拉格朗日力学和矢量力学都是经典力学的一部分。两种力学的目的都可以概括为给定动力学系统,求动力学系统的运动学方程。然而,两种力学的出发点却看似完全不一样。


矢量力学与拉格朗日力学

矢量力学——就是那个有“力”的力学——当中,解决问题靠的是牛顿三大定律,要求的是解题者炉火纯青的受力分析手法。矢量力学的特点是极端直观。我用力推了一下一个物体,我的一推便反映为物体上一个叫“力”矢量。之后便是什么牛顿第二定律,解算一通,就能够得到运动学方程。力到底是什么?说白了是一种对物体之间相互作用的刻画。同样地,物体之间的相互作用大小也可以用势能来刻画,这就不难理解为什么格朗日力学,通篇一个力字没有,全都是动能和势能。

拉格朗日力学解决力学问题,手段相比矢量力学来的简单直白:首先写出系统的动能$T$和势能$V$的表达式,由此写出系统的拉格朗日量,然后把拉格朗日量直接丢进拉格朗日方程当中去。事情就这么完成了,简直跟把脏衣服丢进洗衣机一样。有的时候,伴随着对系统位型的约束条件数量的增加,或者是面临多个物体受彼此的力运动,而运动又返回来影响受力这种蛋痛的情形$^1$,矢量力学的解题方法往往就变得非常复杂(联立一堆方程)或者具有技巧性(巧妙借助非惯性参考系),让人做不出来而且就算做得出来,也大大增加了出错的风险。虽然有时候受力分析难做,但是一般而言动能和势能都还算好写。因此拉格朗日方法在这种情况下的优势就显露出来了。

然而拉格朗日力学的核心——拉格朗日方程的取得,可并没有牛顿运动定律来的容易。虽然两者等价,但是从牛顿运动定律往拉格朗日方程推导的路上,也算是不平凡。其中涉及到一个重大的概念的转变——就是相空间的引入。

相空间,以及对待速度的不同观点

相空间不同于传统的用$xyz$三个坐标描述物体不同时间所在位置的空间坐标系。具体而言,相空间的自变量不仅有描述位置的坐标,还有描述坐标变化的速度。绝大多数的困惑都是从这里开始的。所以在继续进行之前,我们有必要先聊一聊速度。

什么是速度?高中生会拿出课本,指着书上醒目的一行
$$
\mathbf{\bar{v}} = \frac{\Delta \mathbf{r}}{\Delta t},
$$
学了微积分的同学可能会更帅气地摆出
$$
\mathbf{v} = \mathbf{\dot{r}} = \frac{ \mathrm{d} \mathbf{r} }{\mathrm{d} t}.
$$

无论如何,速度是位移的导数,或者物体所处坐标的瞬时变化率。既然对位移求导就能得到对应的速度,甚至——因为速度作为位移的导数,它根本不能作为一个与位移独立的自变量,因此从传统的视角看,拉格朗日力学的这种做法不仅多余,而且错误。

然而,实际上,速度与位移的求导关系,完全是在认为$\mathbf{r} = \mathbf{r}(t)$后出现的。在$\mathbf{r} = \mathbf{r}(t)$下,$\mathbf{r},\mathbf{v}$都是时间的函数,所以对时间求导这一操作才具有意义。这实际上是牛顿力学中所隐含的一个观点:所有物理量全都是时间这一个自变量的函数。

反观拉格朗日力学,可以发现,人们实际上是不怎么谈$t$的。取而代之的是使用$\mathbf{r},\mathbf{v}$两个量来描述运动。可是没有了$t$的事情以后,还怎么描述运动?细心的读者可能已经意识到,$\mathbf{r},\mathbf{v},t$三个量之间,如果获得了$\mathbf{r},t$的方程,则$\mathbf{v}$可以通过求导的方式求出;而如果获得了$\mathbf{r},\mathbf{v}$的方程,只需要认为$\mathbf{r},\mathbf{v}$中的$\mathbf{v} = \mathbf{\dot{r}} = \frac{ \mathrm{d} \mathbf{r} }{\mathrm{d} t}$,然后解微分方程,即可获得$\mathbf{r},t$的关系。

拉格朗日力学的任务,就是在以位置和速度作为自变量的相空间中,取得一条连接了起点和终点的,描述了物体真实运动的曲线,即一个$\mathbf{r},\mathbf{v}$的方程。然而连接了起点和终点的曲线有无数条,什么样的曲线会是我们想要的那条?下文将会提到,这是通过比较每一条曲线的作用量而实现的。而这又需要知道相空间每一个点的拉格朗日量$L$,因此拉格朗日量等物理量的自变量是$\mathbf{r},\mathbf{v}$,而并不是一个单纯的$\mathbf{r}$或者$\mathbf{v}$。注意:有人会辩称$\mathbf{r},\mathbf{v}$是不独立的两个量,所以不能将这两者同时作为自变量;但是$\mathbf{r},\mathbf{v}$的关系是在给定了一条相空间的曲线以后才有的。我们考虑的是整个相空间的情况,而不是某个单独的曲线的情况。

这就好比,在一个xyz构成的空间坐标系中,z是x,y的函数。我们通过一些计算,按照我们的某一个条件,在xoy平面中画出了一条曲线,认为这是我们需要的x,y之间的关系。但这并不能意味着从头到尾z就只是x或者y一个自变量的函数——在这条给定的xy曲线外的点上,z也是有自己的取值的,对不对?

xyz的例子

初学者往往会陷入一种“很不拉格朗日”的误区中,就是把位置和速度紧紧捆绑在一起,咬定了速度(包括出现在拉格朗日量的表达式中的速度)就是$\mathbf{r}$的导数,不容争辩。这是不对的。再强调一遍:相空间中,位置和速度是两组互不关联的自变量,当且仅当物体以运动学方程在相空间中画出的曲线运动时,速度才是位置对时间的导数

最小作用量原理

话题回到拉格朗日方程来。虽然刚才提到过拉格朗日方程和牛顿运动定律是完全等价的,不过我们可以先考虑从“另一套”原理得到拉格朗日方程。这个原理就是大名鼎鼎的“最小作用量原理”。发家于费马的光程最短原理,人们逐渐开始认识到,这个世界似乎按照一种“作用量最小”的方式运作(只要我们能够找到一个系统的作用量)。这种理解或多或少具有一些”还原论“的思想,据说费曼上初中的时候还对此颇为着迷。

动力学系统的作用量$S$是这么定义的:
$$
S = \int L \mathrm{d}t.
$$

其中$L$就是为人所熟知的拉格朗日量,动能减势能$L = T - V$。另外,有必要做一个说明$^2$:$L = L(q,\dot{q})$。$q$是广义坐标。可以看出$L$是广义坐标、广义速度、时间的函数。经过上文的解说,我想读者不难理解把位移和速度作为拉格朗日量$L$独立变量的原因。作用量最小的的意思,就是在相空间中有一条连接起点和终点曲线,沿着这条曲线对拉格朗日做积分,所得的作用量是所有路径中最小的。通过求解这条作用量最小的路径,我们可以得到一个描述$q,\dot{q}$关系的微分方程。

至于为什么是“广义”坐标,这根拉格朗日力学“自由度”的概念又有很大的渊源。之后还会有进一步的解说。

既然是要求作用量$S$的最小值,估计大多数人的第一个反应是:这好办啊!求导数啊!那么,对谁求导数呢?或者说,$S$的自变量到底是谁呢?请容我把$S$的表达式写完整了:
$$
S[q(t)] = \int_{t_i}^{t_f} L(q(t),\dot{q}(t)) \mathrm{d}t
$$

实际上,刚才也已经提及,决定$S$大小的是起点和终点之间的$q(t)$,即物体从起点走向终点经过的路径,所以说$S$实际上是$q(t)$这一函数的函数,这个函数的形状决定了$S$的值。我们实际上要求的是一个特定的路径$q_c(t)$,使得沿这条路径积分所得的作用量$S$最小。种是某个函数的函数被称作泛函,而求泛函极值的问题叫做变分问题。

变分法与拉格朗日方程

其实,解决变分问题所用的变分法,其思想也不是特别晦涩。不过倒也有巧妙之处。比如在此例中,我们明白路径$q_c(t)$的作用量是它附近的$q(t)$中最小的。因此,可以按照求导数类似的方式处理:给一$q(t)$加上一个$\epsilon q'(t)$,$\epsilon$是个任意小量。如果不管怎么取$q'(t)$,所得到的$S$都比$q(t)$的$S$大,那么这个$q(t)$就是$q_c(t)$没跑了。有人会好奇这个$\epsilon$到底起了什么作用。这个$\epsilon$的作用就是:拿来求导。
$$
S[q(t) + \epsilon q'(t)] = \int_{t_i}^{t_f} L\left( q(t) + \epsilon q'(t),\dot{q}(t) +\epsilon \dot{q}'(t) \right) \mathrm{d}t
$$
$$
\frac{\partial S[q(t) + \epsilon q'(t)]}{\partial \epsilon} = \int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q} q'(t) +\frac{\partial L}{\partial \dot{q}} \dot{q}'(t) \right) \mathrm{d}t
$$

如果$\partial S / \partial \epsilon$(称作泛函导数)在$\epsilon = 0$时等于0的话,那么$S$取极值与$q'(t)$没什么关系,对任何$q'(t)$,$\epsilon=0$就是$S$的极值条件。然而,和初等微积分里面求极值面临的问题一样,导数等于0并不意味着取最小值。它可能是最大值或者局部的最小值。具体到这种讨论,事情就会变得很数学。不过幸好,对于动力学系统而言,拉格朗日量一般没有所谓的最大值,而且给定了初始条件后系统的运动是唯一确定的,所以也不用担心解出极大值或两个$q(t)$的问题。解出来的解肯定唯一,而且肯定是动力学系统的运动。

另外介绍一下变分的一个特殊记号$\delta$。很多书习惯上会把$\partial S[q(t) + \epsilon q'(t)] / \partial \epsilon$记为$\delta S$,同理$q'(t) = \partial(q(t) + \epsilon q'(t) - q(t)) / \partial \epsilon = \delta q$。因此
$$
\frac{\partial S}{\partial \epsilon} = \int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q} q'(t) +\frac{\partial L}{\partial \dot{q}} \dot{q}'(t) \right) \mathrm{d}t
$$
就可以记为
$$
\delta S = \int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q} \delta q +\frac{\partial L}{\partial \dot{q}} \delta \dot{q} \right) \mathrm{d}t
$$
其实意思是一样的,无非是用的符号略有差异。

为了具体求解出$\partial S / \partial \epsilon = 0$的条件,需要把烦人的$q'(t)$分离出去。
$$
\frac{\partial S}{\partial \epsilon} = \int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q} q'(t) +\frac{\partial L}{\partial \dot{q}} \frac{ \mathrm{d} q'(t)}{ \mathrm{d} t } \right) \mathrm{d}t \
= \int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q} q'(t) \mathrm{d}t +\frac{\partial L}{\partial \dot{q}} \mathrm{d} q'(t) \right)
$$

使用神奇的分部积分法技巧,

$$ = \int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q} q'(t) \mathrm{d}t +\mathrm{d} \left( \frac{\partial L}{\partial \dot{q}} q'(t) \right) - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q}}q'(t)\mathrm{d}t \right) \\ = \left. \frac{\partial L}{\partial \dot{q}} q'(t) \right|_{t_i}^{t_f} + \int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q} - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q}}\right)q'(t) \mathrm{d}t $$

第一项可以消去,因为在取路径$q'(t)$的时候,我们取的$q'(t)$都满足一个条件,就是在$t_i$和$t_f$处$q'(t)$都取0,即所有路径的起点终点都重合。由此,第一项就直接为0了。由此,显而易见,$\partial S / \partial \epsilon = 0$的条件是
$$
\frac{\partial L}{\partial q} - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q}} = 0
$$

事情到这里还没完。刚才提到了$q$是所谓的广义坐标。实际上,一组广义坐标是一组数量最少的能够唯一确定系统状态的参数$^3$。如果系统的自由度大于一,$\partial S / \partial \epsilon = 0$需要满足的条件就变成了
$$
\int_{t_i}^{t_f} \sum _{i}\left( \frac{\partial L}{\partial q_i} - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q_i}}\right)q_i'(t) \mathrm{d}t =0
$$

上式不能直接写成
$$
\frac{\partial L}{\partial q_i} - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q_i}} = 0,
$$
因为如果$q_i'(t)$,也就是$\delta q_i$之间互相关联,情况就会变得不对,比如几个$\frac{\partial L}{\partial q_i} - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q_i}}$复杂的线性组合等于0。因此选取广义坐标的时候,必须选区互相独立的一组参数$^4$。

在满足这些条件以后,得到的方程,神圣的
$$
\frac{\partial L}{\partial q_i} - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q_i}} = 0,
$$
便是传奇的拉格朗日方程。解开这个方程,便得到了系统的运动状态。

另一条路径:达朗贝尔原理

刚才聊了那么多作用量,读者可能会想,这和牛顿有几毛钱的关系?甚至从我已经提到的方案中,一点牛顿的影子都看不到。但是,很神奇,拉格朗日方程可以通过牛顿运动定律导出,而我马上也要做这件事。在这之前还需要做一些铺垫,就是讲述一下达朗贝尔原理。

初中的时候我们就学过如果一个物体静止,那么一定是处于受力平衡状态,也就是它身上所有力的矢量和等于0。达朗贝尔原理无非是另一种陈述:如果一个物体处于受力平衡,那么它的虚功一定为0。虚功的概念听起来玄乎其玄,其实无非是假设物体移动了一个非常小的距离,合力对它做的功就叫虚功。虚功为0,听起来是不是有一点最小作用量和变分法的意思?最小作用量是说任意一个小偏移下作用量的变化率为0,而达朗贝尔原理下这个作用量对应的就是虚功,作用量的变化率对应的就是合力大小。数学上写作

$$
\delta W = \sum_i \mathbf{F}_i \cdot \delta \mathbf{r_i} = 0
$$

应用于非静态的情形也可以,无非是把加速度当成一个惯性力处理掉
$$
\delta W = \sum_i \left( m_i \ddot{\mathbf{r}}_i - \mathbf{F}_i \right) \cdot \delta \mathbf{r_i} = 0
$$

搞明白了达朗贝尔原理蕴含的变分法内涵以后,就不难理解这里小位移为什么采用了变分$\delta$记号。

为了防止上文提到的因为坐标之间并不相互独立引发的问题,有必要用$\delta q_i$改写$\delta \mathbf{r_i}$。

$$ \delta \mathbf{r_i} = \sum_a \frac{\partial \mathbf{r}_i[q_a(t) + \epsilon q_a'(t)]}{\partial \epsilon} \\ = \sum_a \frac{\partial \mathbf{r}_i}{\partial q_a} \delta q_a $$

目前已经出现对i和对a两处求和记号。为了方便起见,接下来的推导过程按照爱因斯坦的约定,略去求和号。则

$$ \delta W = m_i \frac{\mathrm{d} \dot{\mathbf{r}}_i}{\mathrm{d} t} \frac{\partial \mathbf{r}_i}{\partial q_a} \cdot \delta q_a - \mathbf{F}_i \cdot \delta \mathbf{r_i} \\ = m_i \frac{\mathrm{d} \dot{\mathbf{r}}_i}{\mathrm{d} t} \frac{\partial \mathbf{r}_i}{\partial q_a} \cdot \delta q_a - \delta V \\ = \left( m_i \frac{\mathrm{d} \dot{\mathbf{r}}_i}{\mathrm{d} t} \frac{\partial \mathbf{r}_i}{\partial q_a} - \frac{\partial V}{\partial q_a} \right) \cdot \delta q_a $$

势能项已经凑了出来$^5$,下面就要开始凑动能项了。在相空间中,怎么用$\dot{q_a}$改写$\mathbf{\dot{r_i}}$呢?如果认为$\mathbf{\dot{r}}_i$是t的函数的话,有
$$
\mathbf{\dot{r}}_i = \frac{\partial \mathbf{r}_i(q)}{\partial q_a} \cdot \dot{q_a}.
$$

这个关系在相空间也应该继续适用。因为,虽然相空间中$q$与$\dot{q}$相互独立,$\mathbf{\dot{r_i}} = \mathbf{\dot{r_i}} (q,\dot{q})$,但是如果给定了$q=q(t)$并将它带进上式,得到的$\mathbf{\dot{r_i}}$毫无疑问确实是速度。

既然认定了$\mathbf{\dot{r_i}} = \mathbf{\dot{r_i}} (q,\dot{q})$,因此可以从上式得到
$$
\frac{\partial \mathbf{\dot{r}}_i}{\partial \dot{q_a}} = \frac{\partial \mathbf{r}_i}{\partial q_a}.
$$

注意:这是在相空间内,以$q, \dot{q}$求导。为了避免误解,可以采用记号
$$
\left. \frac{\partial \mathbf{\dot{r}}_i}{\partial \dot{q_a}} \right|_P = \frac{\partial \mathbf{r}_i}{\partial q_a} .
$$

但是鉴于$\dot{q}$作为自变量,只在相空间的视角下才有意义,因此下文略去不写,但是请读者对这一点有清楚的认知。

对之前得到的式子使用已经用了很多回的分部积分技巧:
$$
m_i \frac{\mathrm{d} \dot{\mathbf{r}}_i}{\mathrm{d} t} \frac{\partial \mathbf{r}_i}{\partial q_a} =
m_i \frac{\mathrm{d} }{\mathrm{d} t} \left({ \dot{\mathbf{r}}_i} \frac{\partial \mathbf{r}_i}{\partial q_a} \right) - m_i \dot{\mathbf{r}}_i \frac{\mathrm{d} }{\mathrm{d} t} \frac{\partial \mathbf{r}_i}{\partial q_a}
$$

对于前一项,将刚才得到的代换式代入;对于后一项,

$$ \frac{\mathrm{d} }{\mathrm{d} t} \frac{\partial \mathbf{r}_i}{\partial q_a} = \frac{\partial^2 \mathbf{r}_i}{\partial q_a \partial q_b} \dot{q_b} = \frac{\partial}{\partial q_a} \left( \frac{\partial \mathbf{r}_i}{\partial q_b} \dot{q_b} \right) \\ =\frac{\partial}{\partial q_a} \dot{\mathbf{r_i}} $$

因此

$$ m_i \frac{\mathrm{d} \dot{\mathbf{r}}_i}{\mathrm{d} t} \frac{\partial \mathbf{r}_i}{\partial q_a} = m_i \frac{\mathrm{d} }{\mathrm{d} t} \left({ \dot{\mathbf{r}}_i} \frac{\partial \mathbf{\dot{r}}_i}{\partial \dot{q_a}} \right) - m_i \dot{\mathbf{r}}_i \frac{\partial \dot{\mathbf{r_i}}}{\partial q_a} \\ = \frac{\mathrm{d} }{\mathrm{d} t} \left( \frac{\partial \frac{1}{2} m_i \mathbf{\dot{r}}_i^2}{\partial \dot{q_a}} \right) - \frac{\partial \frac{1}{2} m_i \mathbf{\dot{r}}_i^2}{\partial q_a} \\ = \frac{\mathrm{d} }{\mathrm{d} t} \left( \frac{\partial T}{\partial \dot{q_a}} \right) - \frac{\partial T}{\partial q_a}. $$

从而
$$
\delta W = \left( \frac{\mathrm{d} }{\mathrm{d} t} \left( \frac{\partial T}{\partial \dot{q_a}} \right) -
\frac{\partial (T -V)}{\partial q_a} \right) \cdot \delta q_a
$$

保守力的势能表达式里不会显含速度,因此,势能对广义速度求偏导必然为0。从而,

$$ \delta W = \left( \frac{\mathrm{d} }{\mathrm{d} t} \left( \frac{\partial (T - V)}{\partial \dot{q_a}} \right) - \frac{\partial (T -V)}{\partial q_a} \right) \cdot \delta q_a \\ = \left( \frac{\mathrm{d} }{\mathrm{d} t} \left( \frac{\partial L}{\partial \dot{q_a}} \right) - \frac{\partial L}{\partial q_a} \right) \cdot \delta q_a $$

我们再次得到了拉格朗日方程
$$
\frac{\mathrm{d} }{\mathrm{d} t} \left( \frac{\partial L}{\partial \dot{q_a}} \right) -
\frac{\partial L}{\partial q_a} = 0.
$$

细心的读者可能已经发现了:这个$\delta W$的表达式似乎有种似曾相识的感觉。回顾一下之前作用量的变分
$$
\int_{t_i}^{t_f} \left( \frac{\partial L}{\partial q_i} - \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q_i}}\right) \delta q \mathrm{d}t =
\int_{t_i}^{t_f} \delta W \mathrm{d}t,
$$

所以说,达朗贝尔原理和最小作用量原理不只是形式上相似,其实压根就是一回事儿。达朗贝尔原理源自牛顿运动定律$^6$,因此牛顿运动定律与最小作用量原理等价。

结语

拉格朗日方程的来龙去脉,到此也就为止了。虽然广义坐标的选取背后也涉及这很多有趣的问题,背后涉及“约束”的概念以及对于系统可解性的判断,但是鉴于篇幅,以及不想跑题太远的缘故,本文按下不表。

相空间是拉格朗日力学引入的独特概念。经过哈密顿力学的改造以后,相空间的坐标从广义速度和广义位移变为广义动量和广义位移,灵活性上更上一层楼,引出了另一种给出力学系统运动方程的方式:哈密顿—雅可比方程。在之后的非线性力学中更是成为了直观理解问题的重要工具。在哈密顿体系下对相空间的研究,又引出了刘维尔定理,是统计力学的重要基石。所以难怪卢德馨老师在《University Physics》中写道“没有相空间的动力学是不完整的动力学”。

所以,理解拉格朗日力学,最重要的就是理解相空间的概念,以及适应在相空间研究“所有可行运动”,从中挑出真实运动的根本思想。当然,感受同样的原理,也可以不同的等价表述,以及毫不相同的数学形式,比较这些形式的特点,也是非常关键的。


$^1$ 比如说一个光滑斜面放在光滑水平面上,斜面上由放上一个光滑物块的情形。有一种做法就是借助非惯性系,把斜面看成是静止的,然后分析光滑物块的运动。

$^2$ 实际上拉格朗日量可以含有时间$t$作为自变量,但这并不是说相空间还有$t$作为自变量。这个$t$实际上是由空间坐标$x,y,z$转换到广义坐标$q_a$的时候产生的。有的时候这种转换不仅取决于特殊的几何关系,还取决于时间,由此引入了$t$。文中所有涉及拉格朗日量的推导都可以轻松适用于$L = L(q, \dot{q}, t)$的情况,但是为了避免误解,姑且认为$L = L(q, \dot{q})$。

$^3$ 比如刚体的运动状态可以用最少六个独立参数描述,分别对应沿三个轴的移动和绕着三个轴的转动。所以说刚体有六个自由度。

$^4$ 事实上,互相独立的参数选取出来以后,必然是一组最少数目的描述系统的参数,如果添加一个参数,就会使得这些参数间变得不独立。

$^5$ 这是假定了系统受力全都是保守力的结果。

$^6$ 牛顿第三定律隐含在了约束条件的陈述(比如绳不可以伸长,所以抻紧的细绳两端的重物速度与加速度一样),以及势能的对称性中(比如弹簧的 $V =\frac{1}{2} kx$ 或者万有引力的 $V = -\frac{k}{r^2}$)。

标签: none

仅有一条评论

  1. Mr.X Mr.X

    叙述非常清晰,感谢!

添加新评论

icon_question.gificon_razz.gificon_sad.gificon_evil.gificon_exclaim.gificon_smile.gificon_redface.gificon_biggrin.gificon_surprised.gificon_eek.gificon_confused.gificon_cool.gificon_lol.gificon_mad.gificon_twisted.gificon_rolleyes.gificon_wink.gificon_idea.gificon_arrow.gificon_neutral.gificon_cry.gificon_mrgreen.gif