因为在下一篇文章介绍旋转位置编码的时候会涉及到一些复数的概念,所以这里先来简单的介绍一下复数的概念。
1. 复数#
1.1 复数的概念#
复数是(Complex Number)是数学中一种扩展了实数(Real Number)概念的数,其定义为
$$ z=a+b i\tag{1} $$其中 $a$ 和 $b$ 均是实数;而 $i$ 是虚数单位,且满足 $i^2=-1$; $a=\text{Re}\{z\}$ 叫做复数的实部 (Real Part),$b=\text{Im}\{z\}$ 叫做复数的虚部(Imaginary Part)。
可以发现,实数可以看作是一类虚部为 0 的特殊复数。
同时,我们还可以将复数 $z=a+b i$ 看成是复平面(Complex plane)上的点,即用 $x$ 轴表示实部(可以想象成因为实数都位于 $x$ 轴上),用 $y$ 轴来表示虚部。
1.2 共轭复数#
共轭复数(Complex Conjugate)也叫做复数的共轭或就叫共轭,其定义为:一个复数 $z=a+b i$,它的共轭复数是 $\overline{z}=a-bi$ ,也就是把虚部符号改为相反数。
由此,我们还可以将两个向量的内积写成复数相乘取实部的形式,即
$$ \begin{aligned} a&=(x_1,y_1)=x_1+y_1i\\[2ex] b&=(x_2,y_2)=x_2+y_2i\\[2ex] \implies a\cdot b&=x_1x_2+y_1y_2\\[2ex] &=\text{Re}[a\cdot \overline{b}]=\text{Re}[(x_1+y_1i)(x_2-y_2i)]=x_1x_2+y_1y_2 \end{aligned}\tag{2} $$2. 欧拉公式#
2.1 定义#
欧拉公式(Euler’s formula)是数学中一个非常重要、非常美的公式,其定义如下
$$ e^{ix} = \cos{x} + i \sin{x}\tag{3} $$其中 $e$ 是自然对数的底数,约为 $e\approx 2.71828$;$i$ 是虚数单位;$x$ 是实数,通常表示角度(单位是弧度)
当 $x = \pi$ 时,$e^{i\pi} = \cos{\pi} + i \sin{\pi} = -1 + 0i = -1$,即 $e^{i\pi} + 1 = 0$。 这个被称为“数学中最美的公式”,它优雅地把 5 个最重要的数学常数联系了起来:$e$ 自然对数底、$i$ 虚数单位、$\pi$ 圆周率、$1$ 和 $0$。
进一步,根据上面对于复数在复平面的表示可以知道,$e^{ix}$ 在复平面上的坐标点为 $(\cos x,\sin x)$。又因为 $\cos^2 x+\sin^2 x=1$ ,所以 $e^{ix}$ 表示的便是在复平面上半径为 1 的单位圆。
当然, 由于 $\sin x$ 和 $\cos x$ 均为周期函数,所以随着 $x$ 的不停递增,$e^{ix}$ 的轨迹便不停地逆时针旋转,即
① 当 $x=0$ 时, $e^{i0} = \cos{0} + i \sin{0} = 1 + 0i$ , 点落在 $(1, 0)$ 处。
② 当 $x = \pi/2$ 时, $e^{i \pi/2} = \cos{\pi/2} + i \sin{\pi/2} = 0 + 1i$ ,点落在 $(0, 1)$ 处。
③ 当 $x = \pi$ 时,$e^{i\pi} = -1 + 0i$,点落在 $(-1, 0)$ 处。
④ 当 $x = 3\pi/2$ 时,$e^{i3\pi/2} = 0 - 1i$,点落在 $(0, -1)$ 处。
⑤ 当 $x = 2\pi$ 时,$e^{i2\pi} = 1 + 0i $,点又回到了 $(1, 0)$ 处。
如过是作图的话,增加一个时间维度 $z$,便可以得到如图3所示的结果。
也就是说,$e^{ix}$ 是一个复旋转因子,可以用来给别的复数旋转一个角度 $x$。
2.2 向量旋转#
在二维平面上,任意一个点 $(a, b)$ 本质上就是一个向量,如过用复数表示,则可以写成 $z=a+bi$ 。此时,如果想要把该点旋转一个角度 $\theta$,那么只需要将其乘以 $e^{i\theta}$ 即可得到。
假设有一个点 $z_0 = 1 + i$ ,也就是平面上的点 $(1, 1)$ 。我们现在要把它逆时针旋转 90°(即 $\theta = \frac{\pi}{2}$),那么 $z_0 e^{i \frac{\pi}{2}} $ 便是最后的结果。
由 $\theta = \frac{\pi}{2}$ 可得
$$ e^{i \theta} = e^{i \frac{\pi}{2}} = \cos \frac{\pi}{2}+i\sin \frac{\pi}{2}=0+i=i\tag{4} $$所以有
$$ z_{\text{new}}=z_0\times e^{i \frac{\pi}{2}} =(1+i)\times i=i+i^2=-1+i\tag{5} $$因此,$z_0$ 逆时旋转 90° 之后的位置为 $(-1,1)$。
当然,除了通过乘以上述方式以外,我们还可以通过乘以一个旋转矩阵的方式来实现这一过程。旋转矩阵的定义如下
$$ T=\begin{bmatrix} \cos \theta&-\sin \theta\\[2ex] \sin \theta& \cos \theta \end{bmatrix}\tag{6} $$其中 $\theta$ 表示需要旋转的角度,$\theta >0 $ 表示逆时针旋转。
因此,上述点 $z_0$ 顺时针旋转 90° 以后的位置也可通过如下方式计算得到
$$ z_{\text{new}}=z_0\times\begin{bmatrix} \cos \theta&-\sin \theta\\[2ex] \sin \theta& \cos \theta \end{bmatrix}= \begin{bmatrix} 1&1 \end{bmatrix}\times \begin{bmatrix} \cos (-\frac{\pi}{2})&-\sin (-\frac{\pi}{2})\\[2ex] \sin(-\frac{\pi}{2})& \cos(-\frac{\pi}{2}) \end{bmatrix}=\begin{bmatrix} 1&1 \end{bmatrix}\times \begin{bmatrix} 0&1\\[2ex] -1& 0 \end{bmatrix}=\begin{bmatrix} -1&1 \end{bmatrix}\tag{7} $$当然,也可以将旋转矩阵放到前面
$$ z_{\text{new}}=\begin{bmatrix} \cos \theta&-\sin \theta\\[2ex] \sin \theta& \cos \theta \end{bmatrix}\times z_0^T= \begin{bmatrix} \cos (\frac{\pi}{2})&-\sin (\frac{\pi}{2})\\[2ex] \sin(\frac{\pi}{2})& \cos(\frac{\pi}{2}) \end{bmatrix}\times \begin{bmatrix} 1\\[2ex]1 \end{bmatrix}= \begin{bmatrix} 0&-1\\[2ex] 1& 0 \end{bmatrix}\times \begin{bmatrix} 1\\[2ex]1 \end{bmatrix}=\begin{bmatrix} -1\\[2ex]1 \end{bmatrix}\tag{8} $$2.3 欧拉公式推导#
对于式(3)的由来,我们可以用泰勒展开(Taylor series)来进行理解。
$e^x$ 的泰勒展开是
$$ e^x = 1 + \frac{x}{1!} + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots\tag{9} $$把 $x$ 换成 $ix$ 可得
$$ e^{ix} = 1 + \frac{ix}{1!} + \frac{(ix)^2}{2!} + \frac{(ix)^3}{3!} + \frac{(ix)^4}{4!} + \cdots\tag{10} $$拆开计算 $(ix)^n$ ,此时有
$$ \begin{aligned} (ix)^1 &= i x\\[2ex] (ix)^2 &= i^2 x^2 = -x^2\\[2ex] (ix)^3 &= i^3 x^3 = -i x^3\\[2ex] (ix)^4 &= i^4 x^4 = x^4 \end{aligned}\tag{11} $$以此类推,实部和虚部的项会交替出现,进一步整理可得
$$ e^{ix} = \left(1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \cdots \right) + i \left( \frac{x}{1!} - \frac{x^3}{3!} + \frac{x^5}{5!} - \cdots \right)\tag{12} $$其中第1项正好是 $\cos{x}$ 的展开,第2项则正好是 $\sin{x}$ 的展开,即
$$ \begin{aligned} \cos{x} &= 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \cdots \\[3ex] \sin{x} &= \frac{x}{1!} - \frac{x^3}{3!} + \frac{x^5}{5!} - \cdots \end{aligned}\tag{13} $$所以最后得到
$$ e^{ix} = \cos{x} + i \sin{x}\tag{14} $$3. 复数的表示方式#
在上面,我们分别介绍了复数和欧拉公式的基本概念,这里我们再来总结一下复数的几种表示方法。
① 笛卡尔坐标(直角坐标系)
直角坐标系表示法,也就是上面介绍过的将复数 $z=a+b i$ 看成是复平面上的点,用 $x$ 轴来表示实部,用 $y$ 轴表示虚部,即图1所示。
② 极坐标
我们知道,在二维平面中任意一个点除了通过笛卡尔坐标系表示以外,还可以通过极坐标系来进行表示。对于任意一个点来说,我们可以通过 $(r,\theta)$ 来进行表示,其中 $r$ 表示坐标点到原点的距离, $\theta$ 表示其在水平方向上的夹角,如图4所示。
由此可以知道,如过要将极坐标系转换成直角坐标系,则为 $(x=r\cos \theta,y=r\sin \theta)$,如图5所示。
由此,对于 复数 $z=a+b i$ 来说,还可以将其通过极坐标系来进行表示,即
$$ z = r\cos \theta+r\cdot i\sin\theta=r \left( \cos \theta + i \sin \theta \right)\tag{15} $$③ 指数形式
进一步,我们借助欧拉公式 $e^{i\theta} = \cos \theta + i \sin \theta$ ,所以复数 $z=a+b i$ 还可以写成 $z = r e^{i \theta}$ 这样的指数形式。
同理,因为
$$ e^{-i\theta} = \cos (-\theta) + i \sin (-\theta)\tag{16} $$又 $\cos x$ 为偶函数, $\sin(x)$ 为奇函数,所以式(14) 可写为
$$ e^{-i\theta} = \cos \theta - i \sin \theta\tag{17} $$因此,复数 $z=a+b i$ 的共轭 $\overline{z}=a-b i$ 的指数形式为 $\overline{z}=r e^{-i \theta}$
最后,根据上面第2小节内容可知,将复数用指数形式进行表示在涉及旋转、乘法、幂运算时,更简洁,计算更方便。
引用#
[1] https://zh.wikipedia.org/wiki/%E5%A4%8D%E6%95%B0_(%E6%95%B0%E5%AD%A6)
[2] https://zh.wikipedia.org/zh-hans/%E5%A4%8D%E5%B9%B3%E9%9D%A2
[3] https://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%85%AC%E5%BC%8F
[4] https://zh.wikipedia.org/wiki/%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5