欧拉公式
先给出欧拉公式:
\[
e^{i\theta}=\cos(\theta)+i\sin(\theta)\tag{1}
\]
参考如何通俗地解释欧拉公式(\(e^πi+1=0\))?
直观的理解:我们知道 \(e=\lim_{n\to \infty}(1+{1\over n})^n\) ,类似地定义
\[
e^i=\lim_{n\to \infty}(1+{i\over n})^n
\]
我们知道对于复数的乘法可以看成是旋转,长度相乘,幅角相加。所以我们可以把 \(e^i\) 理解成这么多个复数相乘的极限,这些复向量相乘之后的长度为 1,角度为 1 弧度。也就是说,\(e^i\) 相当于把实数 1 这个向量在复平面上旋转了 1 个单位。事实上我们在这里定义了复数值的乘方运算,据此 \(e^{i\theta}, 2^{i}=e^{i\ln2}\) 的含义也就明了了。另外,当 \(\theta=\pi\) 时还能得到那个著名的 \(e^{i\pi}+1=0\) 。
最后,根据欧拉公式,我们能得到
\[
\sin(\theta)={e^{i\theta}-e^{-i\theta}\over 2}\tag{1.2}\\
\cos(\theta)={e^{i\theta}+e^{-i\theta}\over 2i}
\]
也就是说,我们也同时把三角函数的定义域扩充到了复数域。
下面给出了欧拉公式的一个简单证明
根据泰勒公式,
\[
e^x=1+x+{1\over2!}x^2+{1\over3!}x^3+...\\
\sin(x)=x-{1\over 3!}x^3+{1\over5!}x^5+...\\
\cos(x)=1-{1\over 2!}x^2+{1\over4!}x^4+...
\]
令 \(x=i\theta\) ,则
\[
e^{i\theta}=1+i\theta+{(i\theta)^2\over 2!}+{(i\theta)^3\over3!}+{(i\theta)^4\over4!}+{(i\theta)^5\over5!}+{(i\theta)^6\over6!}+{(i\theta)^7\over7!}+{(i\theta)^8\over8!}\\
=1+i\theta-{\theta^2\over 2!}-{i\theta^3\over3!}+{\theta^4\over4!}+{i\theta^5\over5!}-{\theta^6\over6!}-{i\theta^7\over7!}+{\theta^8\over8!}\\
=\cos(x)+i\sin(x)
\]
证毕,关于 Taylor 公式,参看 如何通俗地解释泰勒公式?
傅里叶级数
从代数上看,傅立叶级数就是通过三角函数和常数项来叠加逼近周期为 \(T\) 的函数 \(f(x)\)
\[
f(x)={a_0\over 2}+\sum_{n=1}^\infty a_n\cos({2\pi n\over T}x)+\sum_{n=1}^\infty b_n\sin({2\pi n\over T}x)\tag{2.1}
\]
这里实质上是把 \(f(x)\) 在这些正交基下的线性组合
\[
\{1,\cos({2\pi n\over T}x),\sin({2\pi n\over T}x)\}
\]
注意到 1 是偏置项(偶函数,也可以理解为周期 T),而其余的基向量都是以 T 为周期的,cos 为偶函数 sin 为奇函数。事实上,任一个函数都能分解为奇偶函数之和
\[
f(x)={f(x)+f(-x)\over 2}+{f(x)-f(-x)\over 2}
\]
而对于目标函数,我们用这无穷个周期为 T 的函数进行逼近,n 越大,就添加了更多的细节信息从而更好地逼近,相关图示参看下面的链接 1。
那么,接下来的任务就是求出这些系数(坐标),回想给定了一组正交基 \(\{u,v\}\) ,我们如何得到 \(w\) 在这组正交基下的坐标?显然其在 \(u\) 下的系数是
\[
{w'u\over u'u}
\]
在函数空间中,相应地
\[
a_n={\int_0^Tf(x)\cos({2\pi n\over T}x)dx \over \int_0^T\cos^2({2\pi n\over T}x)dx}={2\over T }\int_0^Tf(x)\cos({2\pi n\over T}x)dx\tag{2.2}\\
b_n={\int_0^Tf(x)\sin({2\pi n\over T}x)dx \over \int_0^T\sin^2({2\pi n\over T}x)dx}={2\over T }\int_0^Tf(x)\sin({2\pi n\over T}x)dx
\]
观察展开式中的向量 1 的系数,可以发现正好为 \({a_0\over 2}\) ,最终得到式(2.1)的结果。
上面是从三角级数的角度来理解的,之前讲到了欧拉公式,利用它我们可以写出更为精简的傅里叶级数表达式。根据式(1.1),可得
\[
a_{k}\cos({2\pi k\over T}x)+b_{k}\sin({2\pi k\over T}x)=a_k{e^{i{2\pi k\over T}k}+e^{-i{2\pi k\over T}k}\over2}+b_k{e^{i{2\pi k\over T}k}-e^{-i{2\pi k\over T}k}\over2}\\
={a_k-i b_k\over 2}e^{i{2\pi k\over T}k}+{a_k+i b_k\over 2}e^{-i{2\pi k\over T}k}\\
=c_{k}e^{i{2\pi k\over T}k}+c_{-k}e^{-i{2\pi k\over T}k}, k=1,2,\dots
\]
其中
\[
c_k={a_k-ib_k\over 2},\ \ c_{-k}={a_k+ib_k\over 2}=\overline{c_k}, c=1,2,\dots
\]
不难看到当 \(k=0\) 时也满足上式,于是
\[
f(x)=\sum_{-\infty}^\infty c_ke^{i{2\pi k\over T}k}\tag{2.3}
\]
傅里叶系数为
\[
c_k={1\over T}\int_0^Tf(x)\big(\cos({2\pi k\over T}x)-i \sin({2\pi k\over T}x)\big)dx= {1\over T}\int_0^Tf(x)e^{-i2\pi kx/T}dx\tag{2.4}
\]
傅里叶变换
上面章节解释了傅里叶级数,形式上看是把一个周期函数写成了无数个周期函数和的形式,实质上是把函数看成一个向量(函数空间),求出目标函数在这一空间上的表示;对于这些最小周期为 T 的函数来说,它们在一个周期上的频率为 n;我们以这些频率为横轴,把目标函数所对应的表示向量各个维度的大小画在这根轴上,就得到如下图所示的离散图形。我们称左边的函数图像对应的空间和右边频率所对应的空间为时域和频域。
以上是对于周期为 T 的函数来说的,那么对一个非周期函数来说,是否存在傅里叶级数呢?观察频域
\[
\{1,\cos({2\pi n\over T}x),\sin({2\pi n\over T}x)\}
\]
若 \(T=2\pi\) ,则是 \(\{1, \sin(x), \sin(2x),... \}\) (简便起见不写 cos 了),对应的频率就是
\[
\{0Hz, 1Hz, 2Hz, ..., nHz\}
\]
然而,若 \(T=4\pi\) ,这是的频域为 \(\{1, \sin(.5x), \sin(x),... \}\),于是相应的频率为
\[
\{0Hz, .5Hz, 1Hz, ..., .5nHz\}
\]
也就是说,周期 T 越大,频率越为密集;可以想象当 \(T=\infty\) 时(也就是非周期函数),频率变为一条连续曲线(如上图所示);傅里叶变换就是求出这条曲线。
上面的叙述是基于三角级数的,更为直观;但事实上我们真正用的是第二节最后讲的复数形式的傅里叶级数,形式上更为统一也方便画出频域图像。
我们把式子抄过来
\[
f(x)=\sum_{-\infty}^\infty c_ke^{i{2\pi k\over T}k}
\]
当 \(T\to \infty\) 时,就变为
\[
f(x)=\int_{-\infty}^\infty F(\nu)e^{i2\pi \nu x}d\nu\tag{3.1}
\]
注意到我们简化了一下用 \(\nu=k/T\) 表示频率(事实上也没有 T 了);其中的 \(F(\nu)\) 就是我们关心的傅里叶变换结果。同样对 T 去极限,原本的
\[
c_k={1\over T}\int_0^Tf(x)e^{-i2\pi kx/T}dx
\]
变为
\[
F(\nu)=\int_{-\infty}^\infty f(x)e^{-i2\pi\nu x}dx\tag{3.2}
\]
这里的 \(f(x)\) 和 \(F(\nu)\) 称为傅里叶变换对,(3.1)(3.2)为相互转换的公式。这是看待同一个数学对象的两种形式,一个是函数,一个是向量。(可逆性,唯一性)
Note:注意到这里的傅立叶变换结果(在正交基函数下的表示)没有了系数 \(1\over T\) ,看《离散傅立叶变换》一文中的具体推导,可以看到它被移到式(3.1)之后变为微分 \(d\nu\) ;也就是说,我们这里的 \(F(\nu)\) 并不完全是第二部分中在函数空间中的坐标而是进行了伸缩(#存疑);若要保持上述的意义,或许可以分别乘上 \(T, {1\over T}\) ;事实上我们并不关心这个系数,所以可以删掉。
另外,链接 3 给出了上面那组公式的另外一种形式(变量代换即可得,可以看成是不同单位的频率):
\[
f(x)=\int_{-\infty}^\infty F(\omega)e^{i\omega x}dx\\
F(\omega)={1\over 2\pi}\int_{-\infty}^\infty f(x)e^{-i\omega x}dx
\]
这里的系数 \(1\over 2\pi\) 或许放在哪一项中都可以,只要保障 \(F^{-1}F(f(x))=f(x)\) 即可。
函数空间
注意到,在第二部分中我们悄悄用了基函数、函数正交等概念而未加说明,在这里补充函数空间的内容。
首先引入希尔伯特(Hilbert)空间:我们允许无限维向量,但要求其中的向量有限长度(即保有一般的几何性质)。
例如,无限维向量 \((1,{1\over2},{1\over 3},\dots)\) 长度有限,而 \((1,1,1,\dots)'\) 就不符合要求。在 Hilbert 空间中,长度、内积、正交的定义仍有效,三角不等式 \(\Vert x+y\Vert\le \Vert x+\Vert+\Vert y\Vert\) 也成立。Cauchy-Schwarz 不等式也成立
\[
\vert x'y\vert \le \Vert x\Vert\Vert y\Vert
\]
下面就引入了函数空间(function space)。例如对于定义在 \([0,2\pi]\) 上的正弦函数 \(f(x)=\sin(x)\) ,我们把函数看做一个无限维向量,向量的各元即为连续区间内的函数值 \(\sin(x)\) 。理解这一点即为重要。在这一空间中,原本的长度、内积的失效了,重新定义为
\[
\Vert f\Vert^2=\int_0^{2\pi}(f(x))^2dx=\int_0^{2\pi}(\sin(x))^2dx=\pi
\]
另取 \(g(x)=\cos(x)\) 则内积为
\[
\langle f,g\rangle=\int_0^{2\pi}f(x)g(x)dx=\int_0^{2\pi}\sin x\cos x dx=0
\]
可知 \(\sin(x)\) 与 \(\cos(x)\) 正交。Cauchy-Schwarz 不等式仍成立,即
\[
\vert \langle f,g\rangle\vert \le\Vert f\Vert\Vert g\Vert\tag{4.1}
\]
回过头来在看傅里叶变换,我们在 \(\{1,\cos({2\pi n\over T}x),\sin({2\pi n\over T}x)\}\) 这组正交基,对于向量 \(f(x)\) 重新进行了表示,从而将其转化到了一个等价并且更适合理论分析的空间中。
本部分主要参考了 從幾何向量空間到函數空間 ,该文该探讨了
对于一组不正交的基函数,我们可以进行 Gram-Schmidt 正交化。例如利用多项式函数可得到 Legendre 多项式。
在函数空间中也可以进行最小平方近似。设我们需要近似的函数为 \(b\),给定基函数用矩阵表示 \(A=[a_1,a_2,...]\),解正规方程:
\[
(A'A)\hat y=A'b
\]
即可得到系数向量 \(\hat y\)。
最后,引用 向量空間與實例 一文中对于空间的论述
在數學中,空間一詞並不單獨存在,我們可以稱 \(\mathbf X\) 是一個集合,但不稱 \(\mathbf X\) 是一個空間。粗淺地說,空間是一個賦予某種數學結構的集合,該數學結構決定空間的名稱。向量空間是一種代數結構,線性變換 (或稱線性映射) 是兩個向量空間之間的一種特殊映射,因此向量空間也稱為線性空間,意即線性變換所在的空間。請注意,我們定義的是向量空間,而非向量。任何一個向量空間的元素都稱為向量,因此本文指稱的向量是幾何向量的推廣。
离散傅立叶变换(DFT)
先把连续情况下的公式抄过来
\[
f(x)=\sum_{-\infty}^\infty c_ke^{i{2\pi k\over T}k}\\
c_k={1\over T}\int_0^Tf(x)e^{-i2\pi kx/T}dx
\]
计算机中显然不能直接用积分(另一个情况,则是图像处理),也就是离散情况。在这种情况下,离散傅立叶变换的的输入不再是无限维函数 \(f(t)\) 而仅在它的一个区间内的 n 个函数值 \(x_j=f(t_j)\) , \(t_j=jT/n, \ j=0,1,...,n-1\) (n 维向量);当然,其输出也就是这些系数也是一个 n 维向量,这启发我们在这种情况下傅立叶变换可表示为一个 \(n\times n\) 阶可逆矩阵。
参照 \(c_k\),我们忽略系数,用 \(t_j=jT/n\) 代替 \(x/T\) ,可得到对应的离散公式:对于 \(k=0,1,...n-1\)
\[
y_k=\sum_{j=0}^{n-1}f(x)e^{-i2\pi kj/n}\tag{5.1}
\]
记 \(w=e^{-2\pi i/n}=\cos(2\pi/n)-i\sin(2\pi/n)\) ,于是
\[
\begin{bmatrix}
y_0\\y_1\\y_2\\\vdots\\y_{n-1}
\end{bmatrix}=
\begin{bmatrix}
1&1&1&\dots&1\\
1&w&w^2&\dots&w^{n-1}\\
1&w^2&w^4&\dots&w^{2(n-1)}\\
\vdots&\vdots&\vdots&\ddots&\vdots\\
1&w^{n-1}&w^{2(n-1}&\dots&w^{(n-1)^2}\\
\end{bmatrix}
\begin{bmatrix}
x_0\\x_1\\x_2\\\vdots\\x_{n-1}
\end{bmatrix}
\]
或者 \(\mathbf y=F\mathbf x\) ,其中的 \(F\) 即为傅立叶矩阵,是一种特殊的 Vandermonde 矩阵。
\[
F^{-1}={1\over n}\begin{bmatrix}
1&1&1&\dots&1\\
1&w^{-1}&w^{-2}&\dots&w^{-(n-1)}\\
1&w^{-2}&w^{-4}&\dots&w^{-2(n-1)}\\
\vdots&\vdots&\vdots&\ddots&\vdots\\
1&w^{-(n-1)}&w^{-2(n-1}&\dots&w^{-(n-1)^2}\\
\end{bmatrix}
\]
因为 \(\mathbf x=F^{-1}\mathbf y\),于是得到离散傅立叶逆变换:
\[
x_j={1\over n}\sum_{k=0}^{n-1}y_k e^{i2\pi kj/n}\tag{5.2}
\]
这里的系数和和第二部分提到的一样,似乎放在(5.1)或(5.2)式中都可以只需要保证两个变换互为逆变换。更为详尽的细节见链接 5。
最后链一个将离散傅立叶变换的视频 离散傅里叶变换零基础入门-中文1(针对工科生,无需连续傅立叶变换知识) ,跳过了连续情况直接进行了直观解释,听清楚的。
应用
在上面的链接 1 中给出了一些解释,正在学图像处理,相关内容待补充。
3.5.1 图像压缩
我写“如何通俗地理解奇异值?”,里面就说过图像压缩的问题。
傅立叶级数通过同样的原理也可以做图像压缩,比如JPG就是用傅立叶进行图片压缩的。
原理可以大概这么理解,哪些基上的坐标值特别小,就可以丢掉,这样就可以压缩图像。
这就是把函数分解到正交基上的好处,我们可以用线性代数中的知识直接去处理。
信号处理中还有不少类似的分解,比如小波变换。所以掌握数学思想尤为重要。
3.5.2 模式识别
类似的图像,通过傅立叶变换,转换到频域之后看起来确实比较类似,比如下面这幅图,A的频域看起来就挺像,而A、B、C、D之间看起来就不太一样
图片出处。
我们人眼观察图片的方法对计算机并不适用,似乎对于计算机而言,频域更能揭示“特征”。