推荐在知乎阅读此文。
说实话我不知道怎么称呼这一章节比较好,这一章在教材中的标题就是「矩阵分析」。
这一篇文章笔者写得有点吃力,高数和大物笔者学得真是不太好,如果哪里出现了错误,请指出!
矩阵序列
Takeaway:
矩阵序列代表一串线性变换在逐渐逼近某个线性变换。
如果只研究实数域,那么矩阵序列的概念是这个样子的:设有$\mathbb{R}^{m\times n}$中的矩阵序列$\{A^{(k)}\}$,其中$A^{(k)}=(a_{ij}^{(k)})_{m\times n}$,如果$\lim_{k\to+\infty}a_{ij}^{(k)}=a_{ij}(i=1,2,\cdots,m;j=1,2,\cdots,n)$,则称矩阵序列$\{A^{(k)}\}$收敛于$A=(a_{ij})_{m\times n}$,或称$A$是矩阵序列$\{A^{(k)}\}$的极限,记作:
$$ \lim_{k\to+\infty}A^{(k)}=A $$
不收敛的矩阵序列称为发散。
如果读者静下心来观察这个概念,就会很轻易地通过,我在第一篇文章中给出的矩阵的理解方法,来理解这个概念:
在实现中,我把标量、向量和张量都看作一个一维数组,它们的形状也就是说,它们是且仅是数字的组合方式而已。
没错,矩阵序列在代数上,似乎可以看成是 $mn$ 个标量数列的共同收敛。当然,这样理解有点太没意思了,不够直观,我们想想几何层面,矩阵序列代表什么含义?
贯穿我们整个系列始终的一个概念便是矩阵的概念——矩阵代表线性变换。在很多时候,我们的向量可能要经过多次的变换,只有一次变换,可能并不足以满足我们的要求。比如优化算法,需要经过多次矩阵的乘法。Whatever,这些过程可以抽象为:
$$ x_{k+1}=Ax_k $$
那么也就是:
$$ x_k=A^kx_0 $$
几何上就是研究这样一件事情:
- 一个向量,经过多次相同的线性变换后,会到哪个位置?这通常代表矩阵内部元素有幂级数的场景。
举个例子,比如一个简单的缩放变换:
$$ A=\begin{bmatrix}\frac{1}{2} & 0 \\ 0 & \frac{1}{3} \end{bmatrix} $$
那么,我们就可以通过矩阵序列的形式,研究多次经过这个变换后,会到哪个位置,我们就可以把微积分那一套拿过来:
$$ A^{(k)}=\begin{bmatrix}(\frac{1}{2})^k & 0 \\ 0 & (\frac{1}{3})^k \end{bmatrix}\to \begin{bmatrix}0 & 0 \\ 0 & 0 \end{bmatrix} $$
也就是说,经历无穷多次变换后,所有的变量都会变成零向量。这也很好理解,不停缩小,不停缩小,最后就是零向量。
矩阵序列完全可以通过微积分那一套来理解,笔者的理解就是,把高等数学的知识拿到了矩阵层面。
矩阵级数
Caution:
呃啊,笔者高等数学级数这一部分学得很差,这一节可能会出现很多错误。
Takeaway:
矩阵级数代表许多线性变换的累积效果。
矩阵级数的收敛,代表矩阵级数代表的变换,最终效果很稳定,而绝对收敛,代表矩阵每一步的影响也有限。
首先我们来举一个例子,来表示为什么矩阵级数是有必要的。一个比较恰当的例子是在反馈系统中,系统状态$x$可能是外部输入$b$和内部反馈$Ax$组成的,反馈可能产生很多次,那么就产生了:
$$ x_k = (I+A+A^2+A^3+\cdots)b $$
这里就产生了类似级数的结构。
还有什么有意思的东西呢……嘿,有啦!我们知道在高等数学里是有绝对收敛的概念的,那么到矩阵级数这里也是通用的,矩阵级数收敛,不仅要求$\sum_{k=1}^\infty A_k$收敛,也要求$\sum_{k=1}^\infty ||A_k||$收敛,那么这是什么意思?
矩阵级数收敛,很简单,那就是一个向量,经过所有线性变换后,得到的结果是稳定的。那么绝对收敛呢?我们知道,矩阵范数的几何含义是对单位向量最多能造成多大的位移/拉伸效果。那么,如果矩阵范数的级数也收敛,就表示,每一步的缩放倍数,或者说是影响程度,的加和,也是有限的。
举个例子,一个收敛且绝对收敛的例子:
$$ A_k=\frac{1}{2^k}I $$
那么:
$$ \sum_{k=1}^\infty A_k=\sum_{k=1}^\infty \frac{1}{2^k}I $$
它代表着沿着标准基方向,不断缩小一半,所有这样的影响的加和,这当然是很稳定的,也就是普通收敛,而且每一步也不会产生特别大的影响,所以也是绝对收敛。
那么我们举一个普通收敛,但不绝对收敛的例子:
$$ A_k=\frac{(-1)^k}{k}I $$
这个级数普通收敛,这是因为正负方向的变化不断抵消,但是每一层变换本身的影响强度,加起来实际上是无限大的。
按照高等数学的知识,如果只是条件收敛,那么它的收敛可能依赖于特定排列方式,本质上更脆弱。绝对收敛可以理解为无限多个线性变换的总效果不仅存在,而且这个总效果不是靠偶然抵消维持的,而是因为每一层影响本身足够小。
矩阵微积分
Caution:
呃啊,算了……笔者高等数学学得都很差。我也不保证这一节不出现很多错误。
Takeaway:
矩阵的微积分研究线性变换如何随着时间连续变化。
函数矩阵的微分对一个向量的变换,表示这个向量点的瞬时速度。
函数矩阵的积分表示一段时间上变换效果的累积。
矩阵序列代表矩阵的强度不断增大,那么矩阵的微积分就代表矩阵的变换随着时间的变化。矩阵的微积分是以函数矩阵为基础的,其定义为:以变量$t$的函数为元素的矩阵$A(t)=(a_{ij}(t))_{m\times n}$称为函数矩阵,其中$a_{ij}(t)$都是变量$t$的函数。笔者很喜欢把这个$t$理解为time,也就是时间。这样理解,我们就可以从几何上理解函数矩阵——这个矩阵所代表的线性变换是随时间变化而变化的。
那么函数矩阵的微分,就是给当前的时间一个微小的扰动,观察整个线性变换的微小变化。如果一个线性变换$A$,作用到向量$x$上,就有:
$$ \mathrm{d}y=\mathrm{d}Ax $$
也就是:
$$ y'(t)=A'(t)x $$
这个公式的几何含义就是固定向量$x$被不断变化的线性变换$A(t)$作用时,这个点被线性变换本身的变换拖拽,形成的瞬时运动速度。
为了让问题更有趣一些,我们研究一下当向量$x$也随时间变化,即$x(t)$的时候,又是什么含义,根据相应的公式,我们有:
$$ y'(t)=A'(t)x(t)+A(t)x'(t) $$
那么前一项就是$A(t)x(t)$这个点的瞬时速度,而后一项则表示向量本身运动的速度,经过线性变换之后,在输出空间的速度。一个是线性变换本身改变了,形成了一个速度,另一个则是输入本身变了,形成的速度。
积分就很简单,就是一段时间上线性变换的效果的累积,这里有一个比较有趣的公式:
$$ (\int A(t)\mathrm{d}t)x=\int A(t)x\mathrm{d}t $$
这个公式表示这个总线性变换对$x$的作用,等于所有瞬时变换对$x$的作用结果的连续叠加。
应用:一阶常系数微分方程组
Takeaway:
一阶常系数微分方程组在空间中定义了一个速度场。
一阶常系数微分方程组常写成如下形式:
$$ \frac{\mathrm{d}x}{\mathrm{d}t}=Ax $$
这个公式笔者浅显的理解是:用线性变换$A$,把当前的位置$x$,映射为此刻的速度$x'(t)$。那么这个公式实际上是在空间中定义了一个速度场,对于二维的情况,那么$x'(t)$的两个分量就分别代表$x$轴和$y$轴方向的速度。
那么常系数为什么要常系数呢?那是因为,常系数表明这个速度场本身不随时间变化——同一个位置有不同的速度,不同的运动规律,但是每个点的运动规律是固定的。
如果我们把这个速度、运动规律画出来,就得到了控制理论里面的一种东西——相图。笔者并不是控制系的,所以不多展开。