在维基百科关于 向量空间 的介绍中,并未提及构成向量空间的「向量」的具体形态,即它未必是我们通常理解的3维或者 n 维的实数空间,只是提及对加法和数乘封闭。
0. 向量的使用
- 向量:大小和方向;
方向的意义在于,比如日常用到的邮政编码,相对顺序是很要紧的; - 存储数据
在一些问题的求解中,引进一个辅助向量D→ ,它的每一个分量 D→i 可以富裕特定的物理意义,比如在图论当中求解最短路径问题时,从开始点 v 到其他每个终点vi 的最短路径的长度。1. 向量空间
这里引入一个新的向量空间,比如:all 3×3 matrices. 也即矩阵也是一种向量(将 Rn 的概念延伸至 Rn×n ),只不过需要要求矩阵满足加法和数乘(乘法和向量空间没有关系),显然满足,即两个 3×3 的矩阵相加仍然是 3×3 的矩阵,一个 3×3 的矩阵和一个数(scalar)相乘也仍旧是 3×3 的矩阵。此时,我们单独考察 3×3 的向量空间或称作矩阵空间对数乘封闭这一性质,进而可以得到一种升级版的线性组合(linear combination),此时因为轴(axis)的关系,对应的编程实现便不再是np.dot,而应是np.tensordot,关于numpy下的多维数组的轴的讨论,请参阅numpy中多维数组的轴(axis)。
>>> np.random.seed(123) >>> X = np.random.randint(0, 6, [3, 2, 2]) >>> X array([[[5, 2], [4, 2]], [[1, 3], [2, 3]], [[1, 1], [0, 1]]]) >>> np.tensordot(X, [1, 1, 1], axes=([0], [0])) array([[7, 6], [6, 6]]) # 我们可将[1, 1, 1]替换为任一长度为3的数组 # 数学含义即为矩阵空间的线性组合 # 等价于 >>> np.sum(X, axis=0) array([[7, 6], [6, 6]])
2. 矩阵空间其相关的子空间的维数
这里顺便澄清一下维数的定义,
定义:线性空间 V 中线性无关向量所含向量的最大个数称为
V 的维数(dimension)。我们考察如下的矩阵空间( ∀3×3 , M )的一个子空间(subspace),如所有
3×3 的对角矩阵(diagonal matrices,仍然保持对加法和数乘的封闭),它的维数是多少?并非3*3==9,而是3,极大线性无关组所含向量的个数嘛,比如如下的一组线性无关组:
⎡⎣⎢1,0,0,0,0,0,000⎤⎦⎥,⎡⎣⎢1,0,0,0,3,0,000⎤⎦⎥,⎡⎣⎢0,0,0,0,0,0,007⎤⎦⎥.再比如对称矩阵的维数为6,上三角矩阵的维数也为6。
3. 对不同的子空间取并( S∪U ) 还是取和( S+U )
为什么我们对两个子空间的并集(union)不感兴趣,比如对称矩阵构成的子空间( S )与上三角矩阵构成的子空间(
U ),而它们的交集构成对角矩阵( S∩U=D )。是因为此时 S∪U 构成的子空间不再是线性空间。此时将 S∪U 约束为 S+U (direct sum,any element of S +(向量加法) any element of
U =all 3*3 matrices)这里又引申出另外一条重要的公式,维数公式:
定理(维数公式):如果 V1,V2 是数域 K 上的线性空间V 的两个子空间,那么有如下的公式:
dimV1+dimV2=dim(V1+V2)+dim(V1∩V2)
也即 dim(V1+V2)=dimV1+dimV2−dim(V1∩V2)