变分法简介
本文最后更新于345 天前,其中的信息可能已经过时,如有错误请发送邮件到lysun26@163.com

概述

变分法(Calculus of Variations),从名字上来看,与微分有着密不可分的联系。变分法在数学和物理中有着十分广泛的应用,比如虚功原理、拉格朗日力学等。

变分法为我们提供了一个看待问题的新的角度,这种新角度也为我们打开了新世界的大门。例如,将一个物体抛起,我们知道该物体的运动轨迹将会是抛物线。那么为什么是抛物线,而不是其他曲线呢?运用经典力学的知识,我们可以利用牛顿力学的知识,通过受力分析等,直接求出运动轨迹所满足的方程,然后得到这个轨迹是抛物线,这个很容易理解。

现在我们换一个角度,我们将轨迹看成一个整体,不再是对其中的某个点进行分析。假设有许多中轨迹,那么如何确定哪一条轨迹是我们想要的呢?我们可以这样想,物体运动总是希望走一条最轻松的路径,那么如何描述“轻松”这个词呢?描述它的量,可以称其为作用量。因此,具有最小作用量的路径,便是我们想要的路径,这个便是最小作用量原理的思想。通过最小作用量原理,我们也可以计算出路径,结果确实是抛物线,这个计算过程中涉及到的作用量为拉格朗日函数,这个后续也会提到。最小作用量原理的数学基础便是变分法。

其实在很早之前,我们就接触过变分法的思想,在光学中有一个问题,光线会沿哪条路线移动?想必很多人都知道答案,那就是光线移动的路径是需时最少的路径。仔细看这句话,可以发现这句话讨论的对象是路径,是以路径为单位的,时间便是作用量。通过这个定理,便可以推导出反射定理和折射定理。

接下来对这个问题进行抽象化,可以发现,路径是自变量,时间是因变量。不同的路径对应着不同的时间,我们需要找到时间最少的路径,也就是极值问题。这就和函数很像,只不过这里的映射,是从路径到时间的映射,路径是用函数来表示的,时间是实数,因此,这个映射是从函数映射到实数。我们值域是数域(包含实数域和复数域)的映射,称为泛函(functional)。函数是从数映射到数,而泛函是从函数映射到数,因此,可以把泛函看作是函数的一种拓展。

因此,变分法研究的对象的函数,通过一个泛函,将函数映射成一个数,我们希望找到一个函数,使得这个数最小。可以表示为:

$$
\min_{y} f(y)
$$

其中,$y$ 为函数,$f$ 为泛函。

我们可以将微分和变分对比一下,微分改变的是自变量,是一个数,而变分中改变的是函数。在之后的讨论中,可以发现,微分和变分中的很多公式是十分相像的,体现了数学的美。

上面的式子几乎是没办法来解决实际问题的,因此,我们需要选择一个合适的泛函,来帮助我们解决问题。首先,我们考虑最简单的情况,路径是二维的,即路径是关于 $x$ 的函数,记为 $y(x)$,。然后,我们引入一个十分重要的假设,那就是假设我们所讨论的路径二阶可导

这似乎与我们的初心所违背,我们希望在所有的路径中找到最优的路径,这个所有的路径中,肯定要包括不连续的路径。但是,我们所讨论的问题,要与实际问题接轨,在实际问题中,不连续的路径一定不是最优解,有的路径还不符合物理原理。因此,该条假设是满足物理原理所要求的假设

路径表示出来了,接下来就是泛函如何表示。路径是有头有尾的,假设两端坐标分别是 $x_1,x_2$,我们选择如下泛函:

$$
f(y)=\int_{x_{1}}^{x_{2}}F(x,y,y')\mathrm{d}x
$$

因为 $y,y'$ 都是关于 $x$ 的函数,因此这个积分结果一定是实数,因此,这是一个泛函。$F$ 需要根据实际问题进行选择,比如选择一个时间最少的路径,我们就需要用 $x,y,y'$ 表示每一段 $dx$ 上所需的时间,得到的表达式就是 $F$。

那么我们要如何找到最优的路径呢,即 $y$ 呢?接下来就涉及到变分法中的核心思想了。

变分法的核心思想

我们假定存在一个最优解 $y$,那么,如果在这个函数上,加上很小的扰动 $D$,即变成了 $\bar{y}=y+D$,经过泛函作用后,得到的值一定会比 $y$ 大 (这是因为 $y$ 是最优解)。可以发现这里的思想就是极值的思想,但是,这个扰动 $D$ 依旧是范围很广泛,没办法往下计算。因此,数学家们就希望能够用一个数来控制这个扰动,这样讨论对象就可以聚焦到这个数上,而不是这个扰动函数上。那么我们令:

$$
D=\epsilon\frac{D}{\epsilon}=\epsilon\eta
$$

此时,

$$
\bar{y}=y+\epsilon \eta
$$

这个 $\epsilon$ 便是控制这个扰动的系数,$\eta$ 是一个二阶可导的函数(根据前面的假设)。引入这个系数有什么好处呢?$\bar{y}$ 包含了我们所研究的所有的函数,当然,也包括了最优解。通过这个形式,我们希望:对 $\forall \eta$,当 $\epsilon \rightarrow 0$ 时,$\bar{y}\rightarrow y$。也就是无论扰动函数是什么,$\bar{y}$ 总能以不同的形式,在 $\epsilon=0$ 处达到极小值

另外,由于路径是有始有终的,因此,扰动函数 $\eta$ 在两端处的值为 0,即 $\eta(x_{1})=0,\eta(x_{2})=0$(边界条件)。有了边界条件,就构成了最基本的变分问题。

通过这个思想,便可以往下推导了。

Euler-Lagrange 方程式的推导

$$
\bar{y}'=(y+\epsilon \eta)'=y'+\epsilon \eta'
$$

因此,我们可以将问题写成如下的形式:

$$
f(y)=\int_{x_1}^{x_2}F(x,y+\epsilon \eta,y'+\epsilon \eta')\mathrm{d}x
$$

我们知道,$y,y',\eta,\eta'$ 都是关于 $x$ 的函数,因此,对 $x$ 进行积分后,只剩下 $\epsilon$,得到的是一个关于 $\epsilon$ 的关系式。

根据我们上面的分析,$f(y)$ 在 $\epsilon=0$ 处取得极值点。因此,可以得到:

$$
\frac{\mathrm{d} f}{\mathrm{d} \epsilon}|_{\epsilon =0}=0
$$

接下来我们进行推导化简,令 $u=y+\epsilon \eta$,$v=y'+\epsilon \eta'$,

$$
\begin{aligned}
\frac{\mathrm{d} f}{\mathrm{d} \epsilon}&=\int_{x_{1}}^{x_{2}}\frac{\partial F}{\partial \epsilon}\mathrm{d}x \\
&= \int_{x_{1}}^{x_{2}} \left( \frac{\partial F}{\partial x} \frac{\partial x}{\partial \epsilon} +\frac{\partial F}{\partial u} \frac{\partial u}{\partial \epsilon} +\frac{\partial F}{\partial v}\frac{\partial v}{\partial \epsilon} \right) \mathrm{d}x
\end{aligned}
$$

由于

$$
\frac{\partial x}{\partial \epsilon}=0,\quad \frac{\partial u}{\partial \epsilon}=\eta, \quad \frac{\partial v}{\partial \epsilon}=\eta'=\frac{\mathrm{d}\eta}{\mathrm{d}x}
$$

所以

$$
\begin{aligned}
\frac{\mathrm{d} f}{\mathrm{d} \epsilon}&=\int_{x_{1}}^{x_{2}}\frac{\partial F}{\partial \epsilon}\mathrm{d}x \\
&= \int_{x_{1}}^{x_{2}} \left( \frac{\partial F}{\partial x} \frac{\partial x}{\partial \epsilon} +\frac{\partial F}{\partial u} \frac{\partial u}{\partial \epsilon} +\frac{\partial F}{\partial v}\frac{\partial v}{\partial \epsilon} \right) \mathrm{d}x \\
&= \int_{x_{1}}^{x_{2}} \left( \frac{\partial F}{\partial u} \eta +\frac{\partial F}{\partial v}\frac{\mathrm{d}\eta}{\mathrm{d}x} \right) \mathrm{d}x
\end{aligned}
$$

首先,我们将 $\eta'$ 变换成 $\eta$,利用分部积分法对第二项进行处理,即:

$$
\int_{x_1}^{x_{2}} \frac{\partial F}{\partial v}\frac{\mathrm{d}\eta}{\mathrm{d}x} \mathrm{d}x=\frac{\partial F}{\partial v}\eta|_{x_{1}}^{x_{2}}- \int_{x_1}^{x_{2}} \frac{\mathrm{d}}{\mathrm{d}x} \frac{\partial F}{\partial v}\eta\mathrm{d}x
$$

根据前面的分析,扰动函数在边界处为 0,所以第一项为 0,因此可以得到:

$$
\int_{x_1}^{x_{2}} \frac{\partial F}{\partial v}\frac{\mathrm{d}\eta}{\mathrm{d}x} \mathrm{d}x=- \int_{x_1}^{x_{2}} \frac{\mathrm{d}}{\mathrm{d}x} \frac{\partial F}{\partial v}\eta\mathrm{d}x
$$

我们将这一项代入到上面,可以得到:

$$
\begin{aligned}
\frac{\mathrm{d} f}{\mathrm{d} \epsilon}&=
\int_{x_{1}}^{x_{2}} \left( \frac{\partial F}{\partial u} \eta +\frac{\partial F}{\partial v}\frac{\mathrm{d}\eta}{\mathrm{d}x} \right) \mathrm{d}x \\
&=\int_{x_{1}}^{x_{2}} \left( \frac{\partial F}{\partial u} \eta -\frac{\mathrm{d}}{\mathrm{d}x} \frac{\partial F}{\partial v}\eta \right) \mathrm{d}x \\
&= \int_{x_{1}}^{x_{2}} \left( \frac{\partial F}{\partial u} -\frac{\mathrm{d}}{\mathrm{d}x} \frac{\partial F}{\partial v} \right) \eta\mathrm{d}x
\end{aligned}
$$

令 $\epsilon =0$,则 $u=y,v=y',F(x,y+\epsilon \eta,y'+\epsilon \eta')=F(x,y,y')$ ,可以得到:

$$
\int_{x_{1}}^{x_{2}} \left( \frac{\partial F(x,y,y')}{\partial y} -\frac{\mathrm{d}}{\mathrm{d}x} \frac{\partial F(x,y,y')}{\partial y'} \right) \eta\mathrm{d}x=0
$$
由于 $\eta$ 为任意满足连续、二阶可导的函数,这个式子都成立,因此可以得到:

$$
\frac{\partial F}{\partial y} -\frac{\mathrm{d}}{\mathrm{d}x} \frac{\partial F}{\partial y'} =0
$$

这个便是 Euler-Lagrange 方程

有关这个结论的证明,其实很简单。这个定理的描述如下:

假设 $x_{1}$ 和 $x_{2}$ 是给定的常数,$\phi(x)$ 是一个特定的在 $x_{1}\le x\le x_{2}$ 上连续的函数,那么如果对于任意连续可微的函数 $\eta(x)$ 都有如下等式成立:

$$
\int_{x_{1}}^{x_{2}}\phi(x)\eta(x)\mathrm{d}x=0
$$

则 $\phi(x)=0(x_{1}\le x \le x_{2})$.

有关证明,我们考虑与变分法有关的情况,即满足边界条件,$\eta(x_{1})=0,\eta(x_{2})=0$,这样,我们可以令 $\eta(x)=-\phi(x)(x-x_{1})(x-x_{2})$,则

$$
\int_{x_{1}}^{x_{2}}-\phi(x)^{2}(x-x_{1})(x-x_{2})\mathrm{d}x=0
$$

当 $x_{1}<x<x_{2}$ 时, $-(x-x_{1})(x-x_{2})>0$ ,那么为使上式成立,只能让 $\phi(x)=0$.

通过这种证明方法,我们可以对这个定理进行推广,如果有两个任意连续可微的函数 $\eta(x),\xi(x)$,都有:

$$
\int_{x_{1}}^{x_{2}}\left( \phi_1(x)\eta(x)+\phi_2(x)\xi(x) \right)\mathrm{d}x=0
$$

那么有:$\phi_{1}(x)=0,\phi_{2}(x)=0$。仿照上面的证明方法,很容易证明。同样的,如果有更多个,结论也是同样成立的。这个定理是很有用的,之前我们讨论的是单变量情况,即讨论的函数的自变量只有一个,而如果是多变量函数,比如 $y=y(x_{1},x_{2})$,那么可以预料到,在上面的推导过程中,将会出现上面这个公式的形式。

Euler-Lagrange 方程可以改写成另一种形式,利用如下两个式子:

$$
\frac{\mathrm{d}F}{\mathrm{d}x}=\frac{\partial F}{\partial x}+\frac{\partial F}{\partial y}y'+\frac{\partial F}{\partial y'}y''
$$

$$
\frac{\mathrm{d}}{\mathrm{d} x}(y'\frac{\partial F}{\partial y'})=y''\frac{\partial F}{\partial y'}+y'\frac{\mathrm{d}}{\mathrm{d}x}\frac{\partial F}{\partial y'}
$$

可以发现,两个式子中都有 $\frac{\partial F}{\partial y'}y''$,通过消元化简,可以得到:

$$
\frac{\partial F}{\partial x}-\frac{\mathrm{d}}{\mathrm{d}x}(F-y'\frac{\partial F}{\partial y'})=0
$$

这个式子便是另一种形式。

这个式子在一种情况下十分有用,也就是当 $F$ 的表达式中不显含有 $x$ 时,可以得到第一项为 0. 所以:

$$
\frac{\mathrm{d}}{\mathrm{d}x}(F-y'\frac{\partial F}{\partial y'})=0
$$

因为对任意 $x$,上式都成立,故

$$
F-y'\frac{\partial F}{\partial y'}=C
$$

$C$ 表示常数。

变分相关符号

函数的变分

记 $\delta y=y+\epsilon \eta$,称为 $y$ 的一个变分。显然,$\delta y$ 是关于 $x$ 的函数。要注意 $\delta y$ 和 $\Delta y$ 的区别。$\delta y$ 是在同一个 $x$ 处,$\bar{y}$ 和 $y$ 的差。而 $\Delta y$ 是由于 $x$ 的增量 $\Delta x$,引起的 $y$ 的变化。简单来说,$\delta y$ 是同一点,两个函数,$\Delta y$ 是两个点,同一个函数。

泛函的变分

函数的变分,会引起泛函的变化。记:

$$
\Delta f=f(y+\delta y)-f(y)
$$

如果 $\Delta V$ 可以表示为:

$$
\Delta f=L(y,\delta y)+\beta(y,\delta y)\max |{\delta y}|
$$

其中,$L(y,\delta y)$ 是关于 $\delta y$ 的线性泛函,当 $\max |{\delta y}|\rightarrow 0$ 时,$\beta(y,\delta y)\rightarrow 0$,则称 $L(y,\delta y)$ 为泛函 $f(y)$ 上的一阶变分,记 $\delta f=L(y,\delta y)$。这个定义很抽象,接下来我们用这个思想推导 Euler-Lagrange 方程,就能理解这个定义了。

Euler-Lagrange 方程的第二种推导方法

仍旧考虑最开始的那个问题,这个问题属于固定边界的变分问题。

$$
\Delta f=\int_{x_{1}}^{x_{2}}\left(F(x,y+\delta y,y'+\delta y') -F(x,y,y') \right)\mathrm{d}x
$$

如果我们对 $\Delta f$ 进行泰勒展开,可以得到:

$$
\Delta f=\delta f+\delta^{2}f+\cdots
$$

其中,$\delta f$ 就是一阶变分。

然后我们对 $y,y'$ 进行 Taylor 展开,如下:

$$
\Delta f=\int_{x_{1}}^{x_{2}}\left(\frac{\partial F}{\partial y} \delta y+\frac{\partial F}{\partial y'}\delta y'+\cdots \right)\mathrm{d}x
$$

其中,省略号部分省略的是二阶及以上的项,考虑一阶变分,舍弃高阶项。这个地方就可以对应着上面的定义,省略号部分就对应着上面定义中的 $\beta(y,\delta y)\max |{\delta y}|$

然后可以得到一阶变分为:

$$
\delta f=\int_{x_{1}}^{x_{2}}\left(\frac{\partial F}{\partial y} \delta y+\frac{\partial F}{\partial y'}\delta y'\right )\mathrm{d}x
$$

然后,我们仿照之前的做法,对第二项利用分部积分法,并代入边界条件,就可以得到:

$$
\delta f=\int_{x_{1}}^{x_{2}}\left(\frac{\partial F}{\partial y} -\frac{\mathrm{d}}{\mathrm{d}x}\frac{\partial F}{\partial y'}\right )\delta y\mathrm{d}x
$$

这个便是固定边界的变分问题的一阶变分表达式,因为我们要求 $f$ 取极值,因此要求 $\delta f=0$,那么由于 $\delta y$ 的任意性,可以得到:

$$
\frac{\partial F}{\partial y} -\frac{\mathrm{d}}{\mathrm{d}x}\frac{\partial F}{\partial y'}=0
$$

变分运算的性质

引入变分符号 $\delta$ 后,可以得到许多与微分符号 $\mathrm{d}$ 相似的性质。

  1. $\delta$ 与微分和积分可以交换顺序。
  2. 四则运算与微分运算相同,例如乘法法则:

$$
\delta(AB)=A\delta B +B\delta A
$$

  1. 全微分

$$
\delta F(x,y)=\frac{\partial F}{\partial x}\delta x+\frac{\partial F}{\partial y}\delta y
$$

最速降线问题

最速降线问题是历史上出现的第一个变分法问题,在一个空间内,我们给出两点,那么一个物体从一点运动到另一点,问题:沿着什么路径运动,所需时间最短?

如上图所示,通过上面变分法的分析,可以发现这是一个十分典型的变分法问题。这个问题需要找到所需时间最短的路径,那么上面的 $f(y)$ 应该是表示时间,记为 $T$。

首先,我们建立坐标系:

我们选择路径中很小的一段,假设物体经过这一小段所需的时间为 $\mathrm{d}t$,则:

$$
T=\int_{x_{1}}^{x_{2}} \mathrm{d}t
$$

根据动能定理:

$$
\frac{1}{2}mv^2=mgy
$$

故:

$$
v=\sqrt{2gy}
$$

所以时间为:

$$
\mathrm{d}t=\frac{\mathrm{d}s}{v}=\frac{\sqrt{\mathrm{d}x^{2}+\mathrm{d}y^{2}}}{v}=\frac{\mathrm{d}x\sqrt{1+y'^2}}{\sqrt{2gy}}
$$

所以总时间为:

$$
T=\int_{x_{1}}^{x_{2}} \mathrm{d}t=\int_{x_{1}}^{x_{2}}\frac{\sqrt{1+y'^2}}{\sqrt{2gy}}\mathrm{d}x
$$

可以发现,这正好是上面变分法中的形式。此时:

$$
F(x,y,y')=\frac{\sqrt{1+y'^2}}{\sqrt{2gy}}
$$

可以发现,这个表达式不含有 $x$,所以可以利用第二种 Euler-Lagrange 方程形式。即:

$$
F-y'\frac{\partial F}{\partial y'}=C
$$

将 $F$ 的表达式代入,求解微分方程就可以得到解答。具体求解步骤见下图:

含多个未知函数泛函的变分问题与最小作用量原理

把自变量记为 $t$,待求的独立变化的自变函数记作 $q_{1}(t),q_{2}(t),\cdots ,q_{n}(t)$,它们的一阶导数记作 $\dot{q_{1}},\cdots,\dot{q_{n}}$,问题是使泛函

$$
V=\int_{t_{1}}^{t_{2}}L(t,q_{1},q_{2},\cdots,q_{n},\dot{q_{1}},\dot{q_{2}},\cdots,\dot{q_{n}})\mathrm{d}t
$$

利用之前的方法,对每一个 $q$ 和 $\dot{q}$ 进行泰勒展开,可以得到一阶变分为:

$$
\delta V=\int_{t_{1}}^{t_{2}}\left(\sum_{i=1}^{n} \frac{\partial L}{\partial q_{i}}\delta q_{i}+\sum_{i=1}^{n} \frac{\partial L}{\partial \dot{q_{i}}}\delta \dot{q_{i}} \right)\mathrm{d}t
$$

令 $\delta V=0$, 同样的,利用分部积分法和边界条件,并利用 $\delta q$ 的任意性,可以得到 n 个微分方程:

$$
\frac{\partial L}{\partial q_{i}}-\frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial L}{\partial \dot{q_{i}}}=0
$$

我们引入拉格朗日函数 $L=T-U$,其中,$T,U$ 分别表示系统的动能和势能,则上述变分问题就是哈密顿原理(Hamilton Principle),也是最小作用量原理。这里的 $q_{i}$ 表示广义坐标,$\dot{q_{i}}$ 表示广义速度。上面的方程便是理论力学中著名的拉格朗日方程组。拉格朗日力学虽然与牛顿力学在形式上等价,但可以不依赖特定坐标系解决问题,并且应用范围非常广泛,从电动力学到相对论,甚至在量子力学中,都可以看到它的影子。尤其是在量子力学中,量子力学的正则表述,就用到了哈密顿表述。根据最小作用量原理,可以推导出牛顿力学的公式。

上面的 $L=T-U$ 是力学中的最小作用量,通过分析量纲,可以发现量纲是能量乘时间,这说明这个世界的运转成本并非只考虑能量,而是将能量和时间综合考虑,这是非常有意思的。在力学的最小作用量发现之后,物理学家相继发现了电磁学、量子力学、相对论等等物理领域中的最小作用量,从这个角度看,最小作用量原理可能是整个宇宙运转的终极秘密。

至于为什么力学的最小作用量是 $T-U$,而不是 $T+U$ 呢?有一些更深奥的理论,我就不懂了,但是我有一个简单的理解。那就是 $T$ 表示外界推动该物体运动,而 $U$ 是势能,属于系统内部的能量,它会阻止物体运动。因此,$T-U$ 就表示物体的运动变化趋势,而物体更倾向于稳定,即能量状态更趋于稳定,正好对应着 $T-U$ 要最小。(很像虚功原理)

那么如何寻找最小作用量呢?显然不能完全靠猜,那么有什么规律吗?在力学,物理学家可能从动能、动量等开始,最终发现动能减势能就是最小作用量。这就引出了诺特定理。诺特定理阐述了任何作用量的对称性都对应着一个守恒量。例如,时间平移不变性,对应着能量守恒;空间平移不变性,对应着动量守恒;旋转不变性对应着角动量守恒。这在量子力学领域也是成立的。这说明什么,比如为什么能量守恒?这要求过去和现在,作用量是不变的。这说明如果有一个物理规律在过去和未来是不变的,那么能量一定守恒。作用量与守恒量是有关系的,守恒量与对称性又有关系,具体可以参考 https://zhuanlan.zhihu.com/p/374647578 。现在,最小作用量的找寻依旧在路上。

因此,研究对称性是十分关键的,数学也发展了一门研究对称性的科学,就是群论。在这之后,规范场论、宇称不守恒、对称性破缺等理论逐渐被提出。

写到这里,我其实都是有点震惊的,从一个变分法的基本问题,逐步走到了现在理论物理前言的研究,自己也逐渐明白了理论物理学家想要探寻宇宙秘密的那份义无反顾的决心。

虚功原理

如果我们想知道一个物体从一个点运动到另一个点所作的功,传统的方法便是分析每一点的力,然后计算出每一个微元所作的功,然后积分即可。但对于很多情况,这种方法是十分麻烦的,因此,我们换一个角度,从变分法的视角来看待这个问题。

$$
W=\int_{t_{1}}^{t_{2}}\mathbf{F}\cdot \mathbf{v}\mathrm{d}t
$$

与上面的理论对应,上面的泛函 $V$ 就是这里的 $W$,然后我们可以将 $\mathbf{F}\cdot \mathbf{v}$ 表示成广义坐标和广义速度的函数。正如文章开头描述的一样,物体肯定选择做功最少的方式,因此,给一个虚位移,$\delta W=0$。

根据维基百科对虚功原理的描述,考虑一个由一群质点组成,呈静态平衡的物理系统,其内部任意一个质点可能感受到很多个作用力,这些作用力的总和为 0. 给予这个质点虚位移 $\delta \mathbf{r}$,则合力所做的虚功 $\delta W$ 为 0. $F$ 分为主动力和约束力,如果约束面不随时间变化,那么物体的位移只能在约束面的切平面,所以约束力做功为0,所以主动力对作用点的虚功为 0.

可以发现,这段话的描述,正好就是变分法的思想。

总结

变分法带来的不仅仅是方法上的进步,更是思想上的进步,这也给我们带来了许多启示。就像黎曼积分和勒贝格积分,如果我们将视角放在 $y$ 上,而不是 $x$ 上,就会发现许多意料之外的事情。

有问题可以留言哦~ 觉得有帮助也可以投喂一下博主,感谢~
文章链接:https://www.corrain.top/variation/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章地址及作者
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
( ゜- ゜)つロ
_(:з」∠)_
(⌒▽⌒)
( ̄▽ ̄)
(=・ω・=)
(*°▽°*)八(*°▽°*)♪
✿ヽ(°▽°)ノ✿
(¦3【▓▓】
눈_눈
(ಡωಡ)
_(≧∇≦」∠)_
━━━∑(゚□゚*川━
(`・ω・´)
( ̄3 ̄)
✧(≖ ◡ ≖✿)
(・∀・)
(〜 ̄△ ̄)〜
→_→
(°∀°)ノ
╮( ̄▽ ̄)╭
( ´_ゝ`)
←_←
(;¬_¬)
(゚Д゚≡゚д゚)!?
( ´・・)ノ(._.`)
Σ(゚д゚;)
Σ(  ̄□ ̄||)<
(´;ω;`)
(/TДT)/
(^・ω・^)
(。・ω・。)
(● ̄(エ) ̄●)
ε=ε=(ノ≧∇≦)ノ
(´・_・`)
(-_-#)
( ̄へ ̄)
( ̄ε(# ̄) Σ
(╯°口°)╯(┴—┴
ヽ(`Д´)ノ
("▔□▔)/
(º﹃º )
(๑>؂<๑)
。゚(゚´Д`)゚。
(∂ω∂)
(┯_┯)
(・ω< )★
( ๑ˊ•̥▵•)੭₎₎
¥ㄟ(´・ᴗ・`)ノ¥
Σ_(꒪ཀ꒪」∠)_
٩(๛ ˘ ³˘)۶❤
(๑‾᷅^‾᷅๑)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
小黄脸
热词系列一
tv_小电视
上一篇
下一篇