这篇文档介绍一维和高维 Gaussian 函数 Fourier 变换公式的推导方法。首先考虑一维情景下 Gaussian 函数在 \(\mathbb{R}\) 上的积分:

\[ I = \int_{-\infty}^{\infty} e^{-\pi x^2} \mathrm{d}x, \] 通过 “升一维” (replica trick) 的办法,上述一维空间中的积分转化到二维空间中的积分: \[ I^2 = \int_{-\infty}^{\infty} e^{-\pi x^2} \mathrm{d}x \int_{-\infty}^{\infty} e^{-\pi y^2} \mathrm{d}y = \iint_{\mathbb{R}^2} e^{-\pi (x^2 + y^2)} \mathrm{d}x\mathrm{d}y. \] 再变换到极坐标系中,有 \(x^2 + y^2 = r^2\)\(\mathrm{d}x\,\mathrm{d}y = r\,\mathrm{d}r\,\mathrm{d}\theta\),得到 \[ I^2 = \int_{0}^{2\pi} \mathrm{d}\theta \int_{0}^{\infty} e^{-\pi r^2} r\mathrm{d}r = 1. \]

Remark

能够应用 replica trick 的积分项函数的形式是有限制的,详见Poisson’s remarkable calculation – a method or a trick?。具体的,如果函数 \(f:\mathbb{R} \mapsto \mathbb{R}\) 满足如下关系 \[ f(x) f(y) = g(x^2 + y^2) h(y/x), \] 并且待选取的函数集合 \(g\)\(h\) 是基本函数,那么函数 \(f\) 的形式只能是关于 \(x\) 的幂函数和 \(e^{x^2}\) 的乘积: \[ f(x) = A x^p e^{x^2}. \]

接下来,考虑一维情景 Gaussian 函数的 Fourier 变换: \[ \begin{equation}\label{eq:question} \widehat{e^{-\pi x^2}} = \int_{\mathbb{R}} e^{-\pi x^2} e^{-i 2\pi \xi x} ~\mathrm{d}x. \end{equation} \]

以下提供两种求解方法。第一种方法是使用换元, \[ \int_{\mathbb{R}} e^{-\pi(x^2 + 2i\xi x)} ~\mathrm{d}x = e^{ -\pi\xi^2} \int_{\mathbb{R}} e^{-\pi(x + i\xi)^2} ~\mathrm{d}x = e^{ -\pi\xi^2} \int_{L} e^{-z^2} ~\mathrm{d}z, \quad L = (-\infty+i\xi, +\infty + i\xi). \] 构造积分回路 \((-a+i\xi,\,a + i\xi,\,a,\,-a)\),如图所示。可以证明当 \(a \rightarrow \infty\) 时,在 \((a,\,a+i\xi)\)\((-a,\,-a + i\xi)\) 上的积分等于 0,所以有 \[ \int_{L} e^{-z^2} ~\mathrm{d}z = \int_{-\infty}^{\infty} e^{-\pi x^2} \mathrm{d}x = 1. \] 最终得到 \[ \begin{equation}\label{eq:result} \widehat{e^{-\pi x^2}} = e^{-\pi \xi^2}. \end{equation} \]

阅读全文 »

这篇文档希望说明二维情景下 Laplace 方程和复分析中解析函数之间的关系,主要参考文献是 Gilbert Strang,Introduction to applied mathematics。待求解的微分方程为 Laplace 方程:

\[ \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} = 0. \] 复变函数 \(f(z) = f(x + iy)\) 自动满足 Laplace 方程。 这是因为根据链式法则,对 \(x\) 的二阶偏导数为 \[ \frac{\partial f}{\partial x} = \frac{\mathrm{d}f}{\mathrm{d}z} \frac{\partial z}{\partial x} = \frac{\mathrm{d}f}{\mathrm{d}z}, \quad \frac{\partial^2 f}{\partial x^2} = \frac{\mathrm{d}^2f}{\mathrm{d}z^2} \frac{\partial z}{\partial x} = \frac{\mathrm{d}^2f}{\mathrm{d}z^2}. \] 而在对 \(y\) 求偏导数时,会额外多出 \(i^2 = -1\) 的因子: \[ \frac{\partial f}{\partial y} = \frac{\mathrm{d}f}{\mathrm{d}z} \frac{\partial z}{\partial y} = i\frac{\mathrm{d}f}{\mathrm{d}z}, \quad \frac{\partial^2 f}{\partial y^2} = (i^2) \frac{\mathrm{d}^2f}{\mathrm{d}z^2} = - \frac{\mathrm{d}^2f}{\mathrm{d}z^2}, \] 所以有 \[ i \frac{\partial f}{\partial x} = \frac{\partial f}{\partial y}, \quad \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} = 0. \tag{1} \] 但是,\(f(x+iy)\) 给出的是复数形式的解,而感兴趣的是实数域 \((x,y) \in \mathbb{R}^2\) 上的解。事实上,如果将函数 \(f\) 写成实数与虚数两部分: \[ f(x+iy) = u(x,y) + i v(x,y), \quad u,v: \mathbb{R}^2 \mapsto \mathbb{R} \] 那么 \(u\)\(v\) 均满足 Laplace 方程。这是因为

\[ \frac{\partial^2 f}{\partial x^2} = \frac{\partial^2 u}{\partial x^2} + i \frac{\partial^2 v}{\partial x^2}, \quad \frac{\partial^2 f}{\partial y^2} = \frac{\partial^2 u}{\partial y^2} + i \frac{\partial^2 v}{\partial y^2}, \quad \Delta f = \Delta u + i\Delta v, \]

而函数 \(f\) 满足 Laplace 方程,所以有 \[ \Re (\Delta f)=0\ \ \text{and}\ \ \Im (\Delta f)=0 \quad\Rightarrow\quad \Delta u = 0\ \ \text{and}\ \ \Delta v = 0. \] 可以验算两个不平凡的算例,第一个例子是 \(f(z) = z^3\)\[ f(x+iy) = x^3-3xy^2 + i (3x^2y - y^3). \] 所以,函数 \(f\) 的实部 \(u(x,y) = x^3 - 3xy^2\) 验算结果为 \[ \frac{\partial^2 u}{\partial x^2} = 6x, \quad \frac{\partial^2 u}{\partial y^2} = -6x \Rightarrow \Delta u = 0, \] 以及函数 \(f\) 的虚部 \(v(x,y) = 3x^2y - y^3\) 验算结果为 \[ \frac{\partial^2 v}{\partial x^2} = 6y, \quad \frac{\partial^2 v}{\partial y^2} = -6y \Rightarrow \Delta v = 0. \] 第二个例子是在求解圆盘上的 Laplace 方程时,给出解的级数形式为 \[ u(r,\theta) = \frac{a_0}{2} + a_1 r \cos \theta + b_1 r \sin \theta + a_2 r^2 \cos 2\theta + b_2 r^2 \sin 2\theta + \cdots. \] 级数项 \(r^n\cos n \theta\)\(r^n \sin n\theta\) 自动满足 Laplace 方程,这是因为它们分别来自于 \(f(z) = z^n\) 的实部和虚部。

需要强调的是,并不是所有的函数都可以写成某一个关于复数 \(z\) 函数的实部或者虚部,这样的话,所有的函数都会满足 Laplace 方程,那么求解该方程的行为就变成平凡的了。例如函数 \(u(x,y) = x^2 + y^2\),可以快速验证 \(\Delta u =4 \neq 0\)。然而,如果使用如下变量替换,任意函数 \(f(x,y)\) 均可以表示为 \(f(z,\bar z)\)\[ x = \frac{z + \bar z}{2}, \quad y = \frac{z - \bar z}{2i}. \] 例如 \(u(x,y)=x^2 + y^2\) 写成关于 \((z,\bar z)\) 的函数为 \(u(z,\bar z) = z \bar z\)。现在的问题是,如果给定 \(u\)\(v\),怎样才能确定组合 \(u + iv\) 是不是一个解析函数? 这就需要用到式 (1) 中一阶导数的结果,将 \(f = u + iv\) 代入得到

阅读全文 »

写这篇文档的动机是我实在是厌倦了通过坐标变换,推导二维情景下 Laplace 算子的极坐标形式。二维空间中的函数 \(u\) 满足 Laplace 方程 \[ -\Delta u = 0, \] 在直角坐标系下,Laplace 算子表示为 \[ \Delta = \frac{\partial^2~}{\partial x^2} + \frac{\partial^2~}{\partial y^2} \tag{D} \] 极坐标下的 Laplace 算子可通过坐标变换 \[ x = r\cos \theta, \quad y = r \sin \theta \] 得到 \[ \Delta = \frac{\partial^2~}{\partial r^2} + \frac{1}{r} \frac{\partial~}{\partial r} + \frac{1}{r^2} \frac{\partial^2~}{\partial \theta^2}. \tag{P} \] 现在请给出上式的推导:

我尝试将不同坐标系下的算子用矩阵关联。将一阶微分写成矩阵的形式,有: \[ \begin{pmatrix} \frac{\partial~}{\partial x} \\ \frac{\partial~}{\partial y} \end{pmatrix} = R(\theta) \begin{pmatrix} \frac{\partial~}{\partial r} \\ \frac{1}{r} \frac{\partial~}{\partial \theta} \end{pmatrix} \] 式中,\(R(\theta)\) 为旋转矩阵, \[ R(\theta) \triangleq \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}. \] 但是,无法再继续得到用矩阵表示的二阶偏导数形式,这是因为算子的系数是非线性的。最终我在 Math stack Exchange 上找到了这一篇回答:How to remember laplacian in polar and (hyper)spherical coordinates?。设直角坐标下的函数形式为 \(u(x,y)\),考虑在轴线 \((x,0)\) 的特殊情况,此时 \(r = x\),所以 \(u_{xx} = u_{rr}\)。现在考虑固定 \(x\)\(r\),此时函数 \(u\) 表示为关于 \(\theta\) 的函数:

\[ u_{\theta}(\theta) = u(r\cos\theta, r\sin\theta). \] 函数 \(u_{\theta}\)\(\theta\) 的一阶导数为 \[ \frac{\mathrm{d} u_{\theta}}{\mathrm{d} \theta} = \frac{\mathrm{d} u }{\mathrm{d} x} (-r\sin\theta)|_{\theta=0} + \frac{\mathrm{d} u }{\mathrm{d} y}(r\cos\theta)|_{\theta=0} = r \frac{\mathrm{d} u }{\mathrm{d} y}. \] 接下来要求二阶导数,注意到不能直接对上式代入 \(\theta=0\) 之后的关系式 \({\mathrm{d} u_{\theta}}/{\mathrm{d} \theta}= r u_y\) 求导,得到 \({\mathrm{d}^2 u_{\theta}}/{\mathrm{d} \theta^2}= r^2 u_{yy}\)\[ \left.\frac{\mathrm{d}^2 u_{\theta}}{\mathrm{d} \theta^2}\right|_{\theta=0} = -\frac{\mathrm{d} u}{\mathrm{d} x} r + \frac{\mathrm{d}^{2} u}{\mathrm{d} y^{2}} r^2 \] 注意到 \(u_x = u_r\),所以 \(\mathrm{d}^{2} u/\mathrm{d} y^{2}\) 可以表示为 \[ \frac{\mathrm{d}^{2} u}{\mathrm{d} y^{2}} = \frac{1}{r} \frac{\mathrm{d} u}{\mathrm{d} r} + \frac{1}{r^2}\frac{\mathrm{d}^2 u_{\theta}}{\mathrm{d} \theta^2}. \] 这就得到 Laplace 算子的极坐标形式 (P)。

这篇文档主要参考明平兵老师在学校开设应用偏微分方程的课程讲义,整理了(我认为)Fourier 级数的常用性质,具体有:

  • Parseval 等式
  • Fourier 级数的收敛性
  • Riemann-Lebesgue 引理

在介绍性质之前,首先给出本文档中使用的 Fourier 级数的系数的定义。定义周期为 \(1\) 的函数空间的内积为

\[ \begin{equation}\label{eq:df_ip} \langle f(x), g(x) \rangle \triangleq \int_0^{1} f(x) \overline{g(x)} ~\mathrm{d}x. \end{equation} \] 一方面,函数 \(f\) 的 Fourier 级数可使用指数基函数展开为 \[ f(x) = \sum_{k=-\infty}^{\infty} c_k e^{i 2\pi k x}, \] 式中,级数项的系数 \(c_k\) 由式 \(\eqref{eq:df_ip}\) 定义的内积给出 \[ \begin{equation}\label{eq:fac_exp} c_k = \langle f(x), e^{i 2\pi k x} \rangle = \int_{0}^{1} f(x) e^{-i 2\pi k x} ~\mathrm{d}x. \end{equation} \]

另一方面,函数 \(f\) 的 Fourier 级数也可以使用三角函数展开, \[ f(x) = \frac{a_0}{2} + \sum_{k=1}^{\infty} a_k \cos 2\pi k x + \sum_{k=1}^{\infty} b_k \sin 2\pi k x, \]

阅读全文 »

Fourier 级数项既可以用三角函数表示,也可以用指数函数表示,两种级数表示同一个函数,因此级数项前的系数必然存在某种联系,这篇文档希望给出两种不同表示方法下系数之间的关系。一方面,对于 \([0,1]\) 上的周期函数 \(f(x)\),其 Fourier 级数用三角函数可以表示为 \[ \begin{equation}\label{eq:fs_tri} f(x) = \frac{a_0}{2} + \sum_{k=1}^{\infty} a_k \cos 2\pi k x + \sum_{k=1}^{\infty} b_k \sin 2\pi k x, \end{equation} \] 根据三角函数基的正交性(见文末的证明) \[ \int_{0}^{1} \cos 2\pi k x \cos 2\pi m x ~\mathrm{d} x = \begin{cases} 0, \quad &k \neq m, \\ \frac{1}{2}, \quad &k = m, \\ \end{cases} \] 可以确定由式 \(\eqref{eq:fs_tri}\) 表示的 Fourier 级数系数为 \[ \begin{equation}\label{eq:fs_fac_tri} \begin{aligned} a_k &= 2 \int_{0}^{1} f(x) \cos 2\pi k x ~\mathrm{d}x, \quad k=0,1,2,\ldots\,,\\ b_k &= 2 \int_{0}^{1} f(x) \sin 2\pi k x ~\mathrm{d}x, \quad k=1,2,\ldots\,. \end{aligned} \end{equation} \] 另一方面,如果将函数 \(f(x)\) 展开为指数表示的 Fourier 级数, \[ \begin{equation}\label{eq:fs_exp} f(x) = \sum_{k=-\infty}^{\infty} c_k e^{i 2\pi k x}, \end{equation} \] 那么根据指数函数的规范正交性(见文末的证明),可以得到 \[ \begin{equation}\label{eq:fs_fac_exp} c_k = \langle f(x), e^{i 2\pi k x} \rangle = \int_{0}^{1} f(x) e^{-i 2\pi k x} ~\mathrm{d}x, \end{equation} \] 式中,\(\langle \square,\,\square \rangle\) 是周期为 \(1\) 的函数函数空间的内积运算。一般的,周期为 \(L\) 的函数空间中的内积定义为: \[ \begin{equation}\label{eq:df_inner_pro} \langle f(x), g(x) \rangle \triangleq \frac{1}{L} \int_0^{L} f(x) \overline{g(x)} ~\mathrm{d}x. \end{equation} \] 以上分别给出三角函数和指数函数表示的 Fourier 级数,现在希望系数 \(\eqref{eq:fs_fac_tri}\)\(\eqref{eq:fs_fac_exp}\) 的关系。将式 \(\eqref{eq:fs_fac_exp}\) 积分项中的 \(e^{-i2\pi k x}\) 展开得到 \[ \begin{aligned} c_k &= \int_{0}^{1} f(x) \cos{2\pi k x} ~\mathrm{d}x - i\int_{0}^{1} f(x) \sin{2\pi k x} ~\mathrm{d}x, \\ c_{-k} &= \overline{c}_{k} = \int_{0}^{1} f(x) \cos{2\pi k x} ~\mathrm{d}x + i\int_{0}^{1} f(x) \sin{2\pi k x} ~\mathrm{d}x. \end{aligned} \] 联立式 \(\eqref{eq:fs_fac_tri}\) 给出的 \(a_k\)\(b_k\) 表达式,得到 \[ \begin{cases} a_k= c_k + c_{-k}, \quad b_k = i(c_k - c_{-k}), & k=1,2,\ldots\,, \\ a_0 = c_0 & k=0. \end{cases} \]

一般的,对于周期为 \(L\) 的函数 \(f(x)\),其 Fourier 级数的表达式为 \[ f(x) = \frac{a_0}{2} + \sum_{k=1}^{\infty} a_k \cos \frac{2\pi}{L} k x + \sum_{k=1}^{\infty} b_k \sin \frac{2k\pi}{L} x = \sum_{k=-\infty}^{\infty} c_k e^{i \frac{2\pi}{L} k x} \]

同样也可以用三角函数基 \(\{ \cos \frac{2\pi}{L} k x \}\)\(\{ \sin \frac{2\pi}{L} k x \}\) 和指数函数基 \(\{ e^{i \frac{2\pi}{L} k x} \}\) 的内积得到 Fourier 系数的表达式为 \[ \begin{aligned} a_k &= \frac{2}{L} \int_{0}^{L} f(x) \cos \frac{2\pi}{L} k x ~\mathrm{d}x, \quad k=0,1,2,\ldots\,, \\ b_k &= \frac{2}{L} \int_{0}^{L} f(x) \sin \frac{2\pi}{L} k x ~\mathrm{d}x, \quad k=1,2,\ldots\,, \end{aligned} \]\[ \begin{equation}\label{eq:fs_fac_l} c_k = \frac{1}{L} \int_{0}^{L} f(x) e^{-i \frac{2\pi}{L} k x} ~\mathrm{d}x. \end{equation} \] 使用积分变换同样可以获得上式。以指数函数基为例,对于周期为 \(L\) 的函数 \(f(x)\),函数 \(F(y) = f(Ly)\) 的周期为 \(1\) ,展开成指数函数表示的 Fourier 级数为 \[ F(y) = \sum_{k=-\infty}^{\infty} c_k e^{i 2\pi k y}, \] 对应的系数 \(c_k\)\[ c_k = \int_{0}^{1} F(y) e^{-i 2\pi k y} ~\mathrm{d}y = \int_{0}^{1} f(Ly) e^{-i 2\pi k y} ~\mathrm{d}y. \] 作变量替换 \(y=\frac{x}{L}\),代入后得到 \[ f(x) = \sum_{k=-\infty}^{\infty} c_k e^{i \frac{2\pi}{L} k x}, \] 对应 Fourier 系数和式 \(\eqref{eq:fs_fac_l}\) 是一致的。


以下给出指数函数基和三角函数基均是正交基的证明。按照式 \(\eqref{eq:df_inner_pro}\) 的定义,指数函数基 \(\{ e^{i \frac{2\pi}{L} kx} \}\) 总是规范正交基: \[ \langle e^{i \frac{2\pi}{L} k x}, e^{i \frac{2\pi}{L} m x} \rangle = \frac{1}{L} \int_{0}^{L} e^{i \frac{2\pi}{L} k x} e^{-i \frac{2\pi}{L} m x} ~\mathrm{d}x =\begin{cases} \frac{L}{i2\pi(k-m)} \left( e^{i \frac{2\pi}{L} (k-m)} -1 \right) \equiv 0, \quad &k \neq m \\ 1, &k = m \end{cases} \] 三角函数基 \(\{ \cos \frac{2\pi}{L} kx \}\)\(\{ \sin \frac{2\pi}{L} kx \}\)的正交性的证明可以通过如下积化和差公式得到: \[ \begin{aligned} \cos \frac{2\pi}{L} k x\, \cos 2m\pi x &= \frac{1}{2} \Big( \cos \frac{2\pi}{L} (k-m) x + \cos \frac{2\pi}{L} (k+m) x \Big) \\ \sin \frac{2\pi}{L} k x \,\sin 2m\pi x &= \frac{1}{2} \Big( \cos \frac{2\pi}{L} (k-m) x - \cos \frac{2\pi}{L} (k+m) x \Big) \end{aligned} \] 一方面,当 \(k\neq m\) 时,上式右侧积分总等于 0,所以有 \[ \langle \cos{\frac{2\pi}{L} k x}, \cos{\frac{2\pi}{L} m x} \rangle = 0, \quad \langle \sin{\frac{2\pi}{L} k x}, \sin{\frac{2\pi}{L} m x} \rangle = 0, \quad k\neq m. \] 只有当 \(k=m\) 时, \[ \begin{aligned} \langle \cos{\frac{2\pi}{L} k x}, \cos{\frac{2\pi}{L} k x} \rangle = \frac{1}{L} \int_{0}^{L} \cos^2 \frac{2\pi}{L} k x ~\mathrm{d}x = \frac{1}{2}, \quad \langle \sin{\frac{2\pi}{L} k x}, \sin{\frac{2\pi}{L} k x} \rangle = \frac{1}{L} \int_{0}^{L} \sin^2 \frac{2\pi}{L} k x ~\mathrm{d}x = \frac{1}{2}. \end{aligned} \] 另一方面,三角函数基 \(\{ \cos \frac{2\pi}{L} kx \}\)\(\{ \sin \frac{2\pi}{L} kx \}\)之间总是正交的,这是因为 \[ \sin \frac{2\pi}{L} k x \cos \frac{2\pi}{L} m x = \frac{1}{2} \Big( \sin \frac{2\pi}{L}(k+m)x + \sin \frac{2\pi}{L}(k-m)x \Big), \] 因此,对任意的 \(k\)\(m\)\[ \langle \sin{\frac{2\pi}{L} k x}, \cos{\frac{2\pi}{L} m x} \rangle = \frac{1}{L} \int_{0}^{L}\sin \frac{2\pi}{L} k x \cos \frac{2\pi}{L} m x ~\mathrm{d}x = 0. \quad \blacksquare \]

阅读全文 »

我在数学相关文档的编写中,对三种特殊的等号作如下约定:

恒等于 \(\equiv\)

LaTeX 表达式:\equiv

左侧为函数,右侧为常数,表示等号左侧的函数在定义域上的取值恒等于右侧的常数。例如三角恒等式:

\[ \cos^2 x + \sin^2 x \equiv 1. \]

阅读全文 »

在 Windows 环境下,因为有 Tortoise SVN 和 Visual SVN Server 的存在,SVN 的操作难度降低了不少。但在 Linux 环境下,为了让用户更好地了解 SVN 的工作原理,从而体验自立更生的快乐和自闭。SVN 的种种操作,从建仓到创建用户到配置网络到 checkout 到 commit 到 update,据作者有限的知识,全都是用命令行实现的。本文介绍的是如何在 Linux 环境下使用 apache2 配置 https 协议下的 SVN 仓库。主要的参考文档是:Subversionssl 配置,Ubuntu 版本号是 22.04。

创建 apache2 用户 www-data

apache2 是与网络相关的服务器,如果希望能在同一局域网下的不同设备操作同一个 SVN 仓库,就必须要配置它。首先需要创建一个与 SVN 相关的 group,和 apache2 的用户:

创建的 group 以及所属用户可以查看 /etc/group 文件获知:

创建 SVN 仓库

阅读全文 »

在 Ubuntu 22.04 中安装 MATLAB 之后,使用命令行运行 MATLAB 报错如下:

这样每次运行 MATLAB,总是要到路径 /usr/local/MATLAB/R2024a/bin 下运行 matlab 脚本,并且再切换到原来的目录,很不方便。一种解决方案是使用 alias 命令,定义一条短语替代长的字符串命令:

根据 MATLAB 在工作站的安装目录,我定义的 alias 为:

命令中 -nodesktop -nodisplay 表示不运行 MATLAB GUI 界面。运行这一行命令之后,如果运行 alias,就会发现定义的短语已经加载到当前的 bash 当中了,其运行结果如下:

此外还会看到许多并没有直接定义的 alias,这是因为它们是在 bash 配置文件 ~/.bashrc 中预定义的,每次运行 bash 时都会将这些命令加载进来,所以,如果希望下一次运行 bash 可以直接运行 matlab,还需要将定义的 alias 加载到 ~/.bashrc 中。在编辑完 bash 配置文件之后,运行 source 命令重新加载如下命令,就完成配置了。

阅读全文 »

如果在 markdown 文档插入本地路径中的图片,那么移动 markdown 文档同时还必须考虑图片路径,否则图片总是无法正确显示。而配置网络中的图床,在 markdown 中只需要插入图片对应的网络链接即可,这在写网络博客很方便。图床一共需要配置三个位置:Github、PicGo 和 Typora。

配置 Github

Github 设置公共仓库,同时生成一个 token 用于 PicGo 操作仓库。注意生成时只需要勾选 repo 选项即可,如图所示:

生成 Github token 时的选项截图

如果设置 token 有效时长为有限的,那么需要记住 token 失效的时间,否则超出期限之后将无法上传图片。

阅读全文 »

tmux 之于命令窗口有点类似于浏览器之于网页,可在 tmux 命令环境中操纵多个命令行窗口。

注: tmux 的快捷键操作一般需要先按下 Ctrl +b。 文档中列出的快捷键清单默认没有写出这一组合键,如不需要按下 Ctrl +b,会在按键操作中特别说明。

面板 (pano) 操作

按键 描述
% 左右分裂当前面板
上下分裂当前面板
方向键 导航面板
Ctrl+d (不按 c-b) 关闭当前面板
z 将 pano 放大为全屏,
再按一次缩小为原来的尺寸
Ctrl+方向键 按照方向键方向调整 pano 尺寸

窗口 (window) 操作

按键 描述
c 创建新窗口
Ctrl+d (不按 c-b) 关闭当前窗口
, 重命名当前窗口
p 打开前一个窗口
n 打开后一个窗口
num 打开编号 num 窗口

本文整理了 Vim 常用的快捷键。首先介绍 Vim 插入模式、浏览模式和命令模式的快捷键及其功能描述,然后重点介绍导航编辑文档这两部分的快捷键。这篇文档主要参考 Missing semester for CS-Editors (Vim)

Vim 的四种模式

  • Normal mode:普通模式,移动光标或使用命令修改文本
  • Visual mode:浏览模式,选择文本
  • Insert mode:插入模式,编辑文本
  • Command mode:命令模式,执行命令

普通模式

普通模式没太有什么好说的。

阅读全文 »

这篇文档旨在通过形式上的逻辑运算,理清一致连续和连续之间的逻辑包含关系。

极限的定义,以及否定形式

关于序列 \(\{a_n\}\) 的极限命题为:

对任意的 \(\varepsilon > 0\),存在 \(N \in \mathbb{N}\),当 \(n>N\) 时,\(|a_n - a| < \varepsilon\)

含参数的陈述表示上述命题的后半段:

阅读全文 »

在开始之前,首先理清一下 Hexo、NexT 和 Github 三者的关系:

  • Hexo 本身是自动生成博客网页的框架代码,它不需要我们自己编写网页(例如 .css.js ),而是修改 _config.yml 文件提供的参量,自动生成静态网页,可以在本机浏览。
  • NexT 是 Hexo 的主题插件,本身依赖于 Hexo,提供额外的主题。它同样也提供 _config.yml 文件供我们配置。
  • 使用 Github 将生成的静态网页推送到互联网当中。
    阅读全文 »

参考文献:

M.A.Crisfield, Non-linear Finite Element Analysis of Solids and Structures.

算例简述

本算例是希望通过一个简单的一维系统,给出非线性计算过程中增量步的概念,这是线性与非线性有限元计算之间一个很大的区别。准备分析的系统如图所示

阅读全文 »