笔者是电子信息工程专业的学生,在学习专业课时逐渐发现线性代数、复变函数与积分变换、信号与系统等数学基础类课程几乎渗透在专业的方方面面。只有充分理解底层数学的本质,才能更好地对信号处理、控制系统等进行理解、分析,从而应用于实践,进行学术研究。故笔者决定开设此专栏,后续陆续更新一些站在工科生角度对这些底层数学的感性认识。
傅里叶变换和拉普拉斯变换贯穿于电信专业的所有专业课,以至于大家看到微分方程就下意识地想要进行变换。但似乎在题目被解决后,很少人会去思考其原因和本质,更不要谈去质疑、理解、成为傅里叶老先生。好奇心驱使笔者决定暂时从巨人的肩膀上下来,重新认识傅里叶。
一、关于i
1. 写在前面和结论
在复变函数的第一章第一节,复数域就被引入,i也就来到了我们面前。我们只知道,i的存在扩充了我们学习的数域,同时显著提升了我们的挂科率,成功把无数e人逼成了i人… …;自从染上了它,似乎就再也没放下过,日日夜夜都只能与它为伴。有没有一刻隐隐约约觉得,它似乎没有看上去那么单纯?
知乎规矩,先写结论:在平面中,i是一个与状态始终垂直的变化率,即平面中逆时针旋转90°。而
e
i
t
e^{it}
eit可以描述这个平面中的所有旋转。
2. 推导前准备
2.1 思想准备
众所周知,我们学习的路线一般是这样的:
但是请注意,我们需要站在数学家的角度思考问题,他们更可能是这样的:
是的,完全相反。请做好背道而驰的思想准备。
2.2 矩阵的理解方式
先说结论,矩阵的本质是坐标变换
假如有一个矩阵,
[
a
b
c
d
]
(1.2.1)
\left[ \begin{matrix} a & b \\ c & d \\ \end{matrix} \right] \tag{1.2.1}
[acbd](1.2.1)
其与一对基向量
[
1
0
]
\begin{bmatrix} 1 \\ 0 \end{bmatrix}
[10]、
[
0
1
]
\begin{bmatrix} 0 \\ 1 \end{bmatrix}
[01]的乘积分别为
[
a
c
]
(1.2.2)
\begin{bmatrix} a \\ c \end{bmatrix}\tag{1.2.2}
[ac](1.2.2)
[
b
d
]
(1.2.3)
\begin{bmatrix} b \\ d \end{bmatrix}\tag{1.2.3}
[bd](1.2.3)
可以理解为,该矩阵使得这一对基向量分别变为
[
a
c
]
\begin{bmatrix} a \\ c \end{bmatrix}
[ac]和
[
b
d
]
\begin{bmatrix} b \\ d \end{bmatrix}
[bd],在二维坐标轴中进行了如下的平移变换(图源:3Blue1Brown youtube官方账号):
类似于这样的,将某一数学元素理解为一种运算方式的思想会给我们打开新世界的大门。
3. 数学推导
我们从Specific problem出发。
假设有一位古玩卖家。如果卖家这次出售较多的古玩,则会增加下次进货的数量来维持库存;但如果卖家这次进货量较多,为了防止市场价下跌,卖家反而会在下次减少出售的古玩数。
在此基础上,定义出售的古玩数量为
y
(
t
)
\ y(t)
y(t) ,进货量为
x
(
t
)
x(t)
x(t)。
则可用以下式表示其关系:
d d x [ x ( t ) y ( t ) ] = [ 0 − 1 1 0 ] [ x ( t ) y ( t ) ] (1.3.1) \frac{d}{dx} \begin{bmatrix} x(t) \\ y(t) \end{bmatrix}\ = \left[ \begin{matrix} 0 & -1 \\ 1 & 0 \\ \end{matrix} \right]\begin{bmatrix} x(t) \\ y(t) \end{bmatrix}\tag{1.3.1} dxd[x(t)y(t)] =[01−10][x(t)y(t)](1.3.1)
如果只有一个变量,事实上,上式(3.1)可以被简化为:
d
d
x
x
(
t
)
=
r
∗
x
(
t
)
(1.3.2)
\frac{d}{dx} x(t) = r*x(t) \tag{1.3.2}
dxdx(t)=r∗x(t)(1.3.2)
这个性质看起来是不是有点眼熟?像不像指数函数?
d
d
x
e
r
x
=
r
∗
e
r
x
(1.3.3)
\frac{d}{dx} e^{rx} = r*e^{rx} \tag{1.3.3}
dxderx=r∗erx(1.3.3)
因此可以得到:
x
(
t
)
=
e
r
x
∗
x
0
(1.3.4)
x(t) = e^{rx}*x_0\tag{1.3.4}
x(t)=erx∗x0(1.3.4)
其中,
x
0
\ x_0
x0为
t
=
0
\ t = 0
t=0时的初始值。
由3.2-3.4可知,若将3.1这个增量式写成状态式,可以这样写:
KaTeX parse error: Got function '\left' with no arguments as superscript at position 51: …bmatrix}\ = e^\̲l̲e̲f̲t̲[ \begin{matri…
注意到,出现了一个非常匪夷所思的矩阵指数。显然我们无法使用一般对于
e
n
=
e
∗
e
∗
e
.
.
.
(
n
个
e
相乘
)
e^{n}=e*e*e...(n个e相乘)
en=e∗e∗e...(n个e相乘)的理解方式理解它。
幸亏我们学过泰勒级数展开,可以很好地解决这个问题。
e
x
=
∑
n
=
0
∞
x
n
n
!
=
1
+
x
+
x
2
2
!
+
x
3
3
!
+
x
4
4
!
+
⋯
(1.3.6)
e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \frac{x^4}{4!} + \cdots\tag{1.3.6}
ex=n=0∑∞n!xn=1+x+2!x2+3!x3+4!x4+⋯(1.3.6)
将矩阵塞进级数中运算,结果如下:
e
[
0
−
1
1
0
]
=
[
cos
(
t
)
−
s
i
n
(
t
)
s
i
n
(
t
)
c
o
s
(
t
)
]
e^ {\left[ \begin{matrix} 0 & -1 \\ 1 & 0 \\ \end{matrix}\right]} = \left[ \begin{matrix} \cos(t) & -sin(t) \\ sin(t) & cos(t) \\ \end{matrix}\right]
e[01−10]=[cos(t)sin(t)−sin(t)cos(t)]
可由
s
i
n
(
x
)
sin(x)
sin(x)和
c
o
s
(
x
)
cos(x)
cos(x)的泰勒级数展开推导得到,读者可自行推导。
sin
(
x
)
=
x
−
x
3
3
!
+
x
5
5
!
−
x
7
7
!
+
⋯
=
∑
n
=
0
∞
(
−
1
)
n
x
2
n
+
1
(
2
n
+
1
)
!
\sin(x) = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \cdots = \sum_{n=0}^{\infty} \frac{(-1)^n x^{2n+1}}{(2n+1)!}
sin(x)=x−3!x3+5!x5−7!x7+⋯=n=0∑∞(2n+1)!(−1)nx2n+1
cos
(
x
)
=
1
−
x
2
2
!
+
x
4
4
!
−
x
6
6
!
+
⋯
=
∑
n
=
0
∞
(
−
1
)
n
x
2
n
(
2
n
)
!
\cos(x) = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + \cdots = \sum_{n=0}^{\infty} \frac{(-1)^n x^{2n}}{(2n)!}
cos(x)=1−2!x2+4!x4−6!x6+⋯=n=0∑∞(2n)!(−1)nx2n
于是我们得到了:
x
(
t
)
=
c
o
s
(
t
)
∗
x
(
0
)
−
s
i
n
(
t
)
∗
y
(
0
)
y
(
t
)
=
s
i
n
(
t
)
∗
x
(
0
)
+
c
o
s
(
t
)
∗
y
(
0
)
(1.3.7)
\begin{align} & \begin{split} x(t) = cos(t)*x(0) - sin(t)*y(0) \end{split} \\ & \begin{split} y(t) = sin(t)*x(0) + cos(t)*y(0) \end{split} \end{align}\tag{1.3.7}
x(t)=cos(t)∗x(0)−sin(t)∗y(0)y(t)=sin(t)∗x(0)+cos(t)∗y(0)(1.3.7)
三角函数,条件反射放进单位圆思考。
以上可知,
e
[
0
−
1
1
0
]
e^{\begin{bmatrix} 0 & -1\\ 1 & 0 \end{bmatrix}}
e[01−10] 可以描述在一个平面内的任意角度旋转。模长由
x
(
0
)
x(0)
x(0)和
y
(
0
)
y(0)
y(0)决定。
举个例子:按这个结论来说,
e
[
0
−
π
π
0
]
e^{\begin{bmatrix} 0 & -π\\ π & 0 \end{bmatrix}}
e[0π−π0]即在平面内旋转180°,即模不变,正负取反。
事实上,
e
[
0
−
π
π
0
]
=
[
−
1
0
0
−
1
]
e^{\begin{bmatrix} 0 & -π\\ π & 0 \end{bmatrix}}={\begin{bmatrix} -1 & 0\\ 0 & -1 \end{bmatrix}}
e[0π−π0]=[−100−1],标准的(-1)×单位阵。
所以,重申一遍,将某一数学元素理解为一种运算方式的思想会给我们打开新世界的大门。
记得推导前准备里对矩阵的重新理解吗?带着这个想法,我们重新审视3.1增量式中的状态量系数矩阵:
[
0
−
1
1
0
]
\begin{bmatrix} 0 & -1\\ 1 & 0 \end{bmatrix}
[01−10],它可以被理解为是一对基向量
[
1
0
]
\begin{bmatrix} 1 \\ 0 \end{bmatrix}
[10]、
[
0
1
]
\begin{bmatrix} 0 \\ 1 \end{bmatrix}
[01]转换成了
[
0
−
1
]
\begin{bmatrix} 0 \\ -1 \end{bmatrix}
[0−1]、
[
−
1
0
]
\begin{bmatrix} -1 \\ 0 \end{bmatrix}
[−10]。如果放在平面中,可以认为,逆时针旋转了90°。
你是不是还知道一个在平面里逆时针旋转90°的操作?乘以虚数单位i。
所以,如果我们尝试将
x
(
t
)
x(t)
x(t)和
y
(
t
)
y(t)
y(t)以复数形式而非矩阵形式表示,我们可以得到下式:
d
d
x
[
x
(
t
)
+
i
y
(
t
)
]
=
i
[
x
(
t
)
+
i
y
(
t
)
]
(1.3.8)
\frac{d}{dx} [x(t)+iy(t)] = i[x(t) + iy(t)] \tag{1.3.8}
dxd[x(t)+iy(t)]=i[x(t)+iy(t)](1.3.8)
同理,我们可以将增量式变换为状态式。即:
[
x
(
t
)
+
i
y
(
t
)
]
=
e
i
t
[
x
(
0
)
+
i
y
(
0
)
]
(1.3.9)
\ [x(t)+iy(t)] = e^{it}[x(0) + iy(0)] \tag{1.3.9}
[x(t)+iy(t)]=eit[x(0)+iy(0)](1.3.9)
所以,类比来看,
e
i
t
e^{it}
eit 可以描述在一个平面内的任意角度旋转。模长由
x
2
(
0
)
+
y
2
(
0
)
\sqrt{x^2(0)+y^2(0)}
x2(0)+y2(0)决定。
所以,在平面中,i是一个与状态始终垂直的变化率,即平面中逆时针旋转90°。而
e
i
t
e^{it}
eit可以描述这个平面中的所有旋转。 事实上,任何一个与状态始终垂直的变化率,即平面中逆时针旋转90°的变换,其指数都可以去描述任意维空间中一个平面中的所有旋转。
二、微分方程
1. 一点形而上的东西
讲点形而上的东西:
我们学过泰勒展开,即:
f
(
x
)
=
f
(
a
)
+
f
′
(
a
)
(
x
−
a
)
+
f
′
′
(
a
)
2
!
(
x
−
a
)
2
+
f
′
′
′
(
a
)
3
!
(
x
−
a
)
3
+
⋯
+
f
(
n
)
(
a
)
n
!
(
x
−
a
)
n
+
⋯
\begin{align} & \begin{split} f(x) = f(a) + f'(a)(x-a) + \frac{f''(a)}{2!}(x-a)^2 + \frac{f'''(a)}{3!}(x-a)^3 + \cdots + \frac{f^{(n)}(a)}{n!}(x-a)^n + \cdots \end{split} \end{align}
f(x)=f(a)+f′(a)(x−a)+2!f′′(a)(x−a)2+3!f′′′(a)(x−a)3+⋯+n!f(n)(a)(x−a)n+⋯
泰勒公式也向我们展示了,几乎所有的match function都可以被近似拟合成n阶方程。
所以,几乎自然界中所有的物理or数学模型都可以用微分方程来表示。
其实还有一个更感性的理解方法:
在自然界中,变化是最永恒的东西。天崩地裂,冰雪消融,没有什么矢志不渝。
什么是变化?导数就是状态变化。导数即永恒不变。
你知道的,数学不只是处理数字、处理结构。就像音乐不只是处理音符一样。
2. 微分方程与傅里叶变换
几乎自然界中所有的物理or数学模型都可以用微分方程来表示,但是微分方程本身有一个致命的缺点:难解!
y
(
n
)
+
a
n
−
1
(
x
)
y
(
n
−
1
)
+
⋯
+
a
1
(
x
)
y
′
+
a
0
(
x
)
y
=
g
(
n
)
+
b
m
−
1
(
x
)
g
(
m
−
1
)
+
⋯
+
b
1
(
x
)
g
′
+
b
0
(
x
)
g
\begin{align} & \begin{split} y^{(n)} + a_{n-1}(x)y^{(n-1)} + \cdots + a_1(x)y' + a_0(x)y = g^{(n)} + b_{m-1}(x)g^{(m-1)} + \cdots + b_1(x)g' + b_0(x)g \end{split} \end{align}
y(n)+an−1(x)y(n−1)+⋯+a1(x)y′+a0(x)y=g(n)+bm−1(x)g(m−1)+⋯+b1(x)g′+b0(x)g
这还只是常微分方程,如果再看看远处的偏微分方程,请自便吧… …
所以站在这个角度来看,傅里叶变换提供了一个极好的想法:将n阶方程转化为n次方程去计算,就算算不出来,起码好理解。
简化计算和理解的难度是大多数方法提出的初衷。简洁也是大多数数学家终其一生痴迷和追求的目标。多说一句,记得线性代数矩阵运算最开始是用来做什么的嘛?
是为了简化方程组的表示的,懒得写那么多加减号… …
所以,到这,是不是有点理解傅里叶了?
三、傅里叶变换
接下来,重头戏。
先叠个甲,以下思路是受3Blue1Brown的可视化启发,放个链接在这,各位可以自行学习(强力推荐):[[【【官方双语】形象展示傅里叶变换】 https://www.bilibili.com/video/BV1pW411J7s8/?share_source=copy_web&vd_source=1c0cb7c09703329b9f9b31a3d96b5e74]]
1. 引出公式
老样子,还是从Specific problem出发。
两个声波,波形都是正弦波,
f
f
f不同,叠加到一起形成了一个新的声波。现在需要去分开这两个声波,怎么做?
时域里肯定是没戏了,两个声波都是连续且没有不重叠的区域。
那只能从别的两者不同的特性入手了,比如说,频率。
那怎么去区分出频率呢?
在第一部分,关于i的环节我们得出了结论,
e
i
t
e^{it}
eit可以描述这个平面中的所有旋转。我们决定从旋转下手。
令频率为 f 1 f_1 f1的波形表达式为 f ( t ) f(t) f(t),频率为 f 2 f_2 f2的波形表达式为 g ( t ) g(t) g(t)。将两个表达式想象为旋转向量的模长,即将其乘以 e i t e^{it} eit。现在上面这张图应该变成了这样:
(图源3Blue1Brown)
然后是一个绝妙的想法,想象这是一个有质量的物体,在时间不停推移的过程中想象质心的位置。
为什么是质心的位置呢?质心与物体的形状有关,而在坐标轴中的这个图形中,形状显然和频率
f
f
f有关。嘿,闭环了。
当时间范围为负无穷到正无穷时,周期性函数图形的图形形状是确定的。也就是说,质心位置是确定的。不同的频率
f
f
f产生了不同形状的图形,质心的位置也就不同。由此,我们就分辨出了不同
f
f
f的波形。
严谨一些,将这个二维坐标想象为极坐标,某一频率的波形持续的时间越长,极坐标的r越大很合理吧?所以最后来个积分。
好了,傅里叶公式出炉了。其定义如下:
F
(
ω
)
=
∫
−
∞
∞
f
(
t
)
e
−
j
ω
t
d
t
(3.1.1)
F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-j\omega t} dt \tag{3.1.1}
F(ω)=∫−∞∞f(t)e−jωtdt(3.1.1)
2. 公式应用
第二部分我们提到,对于微分方程,傅里叶变换提供了一个极好的想法:将n阶方程转化为n次方程去计算和理解。我不知道傅里叶是先有的这个想法再有的傅里叶公式,还是先有的傅里叶公式再有的这个用途。
笔者这里给出数学推导转换,但是是已知傅里叶公式的基础上对性质的推导。如有大神知道更加本源的相关知识可以分享一下。
已知傅里叶公式:
F
(
ω
)
=
∫
−
∞
∞
f
(
t
)
e
−
j
ω
t
d
t
(3.2.1)
F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-j\omega t} dt \tag{3.2.1}
F(ω)=∫−∞∞f(t)e−jωtdt(3.2.1)
现在,我们考虑
f
(
t
)
f(t)
f(t) 的导数
f
′
(
t
)
f'(t)
f′(t),并寻找其傅里叶变换
F
′
(
ω
)
F'(\omega)
F′(ω)。根据导数的定义,我们有:
f
′
(
t
)
=
lim
Δ
t
→
0
f
(
t
+
Δ
t
)
−
f
(
t
)
Δ
t
f'(t) = \lim_{\Delta t \to 0} \frac{f(t + \Delta t) - f(t)}{\Delta t}
f′(t)=Δt→0limΔtf(t+Δt)−f(t)
将
f
′
(
t
)
f'(t)
f′(t) 代入傅里叶变换的定义中,我们得到:
F
′
(
ω
)
=
∫
−
∞
∞
f
′
(
t
)
e
−
j
ω
t
d
t
(3.2.2)
F'(\omega) = \int_{-\infty}^{\infty} f'(t) e^{-j\omega t} dt\tag{3.2.2}
F′(ω)=∫−∞∞f′(t)e−jωtdt(3.2.2)
为了简化这个积分,我们可以使用分部积分的方法。设
u
=
f
′
(
t
)
u = f'(t)
u=f′(t) 和
d
v
=
e
−
j
ω
t
d
t
dv = e^{-j\omega t} dt
dv=e−jωtdt,那么我们有
d
u
=
f
′
′
(
t
)
d
t
du = f''(t) dt
du=f′′(t)dt 和
v
=
−
1
j
ω
e
−
j
ω
t
v = -\frac{1}{j\omega} e^{-j\omega t}
v=−jω1e−jωt。应用分部积分公式
∫
u
d
v
=
u
v
−
∫
v
d
u
\int u dv = uv - \int v du
∫udv=uv−∫vdu,我们得到:
F
′
(
ω
)
=
[
−
1
j
ω
f
′
(
t
)
e
−
j
ω
t
]
−
∞
∞
+
1
j
ω
∫
−
∞
∞
f
′
′
(
t
)
e
−
j
ω
t
d
t
(3.2.3)
F'(\omega) = \left[ -\frac{1}{j\omega} f'(t) e^{-j\omega t} \right]_{-\infty}^{\infty} + \frac{1}{j\omega} \int_{-\infty}^{\infty} f''(t) e^{-j\omega t} dt\tag{3.2.3}
F′(ω)=[−jω1f′(t)e−jωt]−∞∞+jω1∫−∞∞f′′(t)e−jωtdt(3.2.3)
由于
f
(
t
)
f(t)
f(t) 和其导数
f
′
(
t
)
f'(t)
f′(t) 通常在无穷远处趋于零,边界项消失,因此我们只剩下:
F
′
(
ω
)
=
1
j
ω
∫
−
∞
∞
f
′
′
(
t
)
e
−
j
ω
t
d
t
(3.2.4)
F'(\omega) = \frac{1}{j\omega} \int_{-\infty}^{\infty} f''(t) e^{-j\omega t} dt\tag{3.2.4}
F′(ω)=jω1∫−∞∞f′′(t)e−jωtdt(3.2.4)
但是,我们实际上是对
f
′
(
t
)
f'(t)
f′(t) 进行傅里叶变换,而不是
f
′
′
(
t
)
f''(t)
f′′(t)。因此,我们需要回到原始的积分并重新考虑。我们可以直接对
f
(
t
)
f(t)
f(t) 的傅里叶变换
F
(
ω
)
F(\omega)
F(ω) 进行求导,而不是对积分表达式进行分部积分。利用傅里叶变换的性质,我们有:
F
′
(
ω
)
=
∫
−
∞
∞
f
′
(
t
)
e
−
j
ω
t
d
t
=
−
j
ω
∫
−
∞
∞
f
(
t
)
e
−
j
ω
t
d
t
=
−
j
ω
F
(
ω
)
F'(\omega) = \int_{-\infty}^{\infty} f'(t) e^{-j\omega t} dt = -j\omega \int_{-\infty}^{\infty} f(t) e^{-j\omega t} dt = -j\omega F(\omega)
F′(ω)=∫−∞∞f′(t)e−jωtdt=−jω∫−∞∞f(t)e−jωtdt=−jωF(ω)
这里我们使用了 e − j ω t e^{-j\omega t} e−jωt 的导数是 − j ω e − j ω t -j\omega e^{-j\omega t} −jωe−jωt 这一事实。因此,我们得到了傅里叶变换的一个重要性质:时域中的导数 f ′ ( t ) f'(t) f′(t) 在频域中对应于乘以 j ω j\omega jω 的操作。这个性质在信号处理和系统分析中非常有用,因为它将微分方程的求解转换为了频域中的代数操作。
本文站在一个工科生的角度理解傅里叶,数学语言多少有些不严谨,请读者原谅。总而言之,本文想表达的是,自然科学往往有着作为工具之外的美妙之处,甚至很多时候,社会科学和自然科学的底层逻辑是相通的。在融会贯通的一刹那所体验到的美妙,是科学带给我们的礼物。