7.3 矩阵范数
定义
向量有范数,矩阵也有范数,定义和向量范数类似,不过多了一条要求。它的定义如下:
- 正定性positivity, ∥ A ∥ ≥ 0 \parallel A\parallel\ge 0 ∥A∥≥0,只有 A = 0 A=0 A=0时才取等号;
- 非负齐次性homogeneity或scaling, ∥ k A ∥ = ∣ k ∣ ∥ A ∥ \parallel kA\parallel=|k|\parallel A\parallel ∥kA∥=∣k∣∥A∥
- 劣可加性subadditivity或三角不等式triangle inequality, ∥ A + B ∥ ≤ ∥ A ∥ + ∥ B ∥ \parallel A+B\parallel \le \parallel A\parallel+\parallel B\parallel ∥A+B∥≤∥A∥+∥B∥。
- 相容条件submultiplicativity, ∥ A B ∥ ≤ ∥ A ∥ ∥ B ∥ \parallel AB\parallel \le \parallel A\parallel\parallel B\parallel ∥AB∥≤∥A∥∥B∥。
只满足前三个条件的是广义矩阵范数。当然也有国外一些教材把满足前三条的叫矩阵范数,把满足第四条的叫相容矩阵范数Consistent Matrix Norms。矩阵的范数有点多,有和范数、Frobenius范数、最大范数、行范数、列范数、谱范数等,后面三个叫诱导范数。
和范数
向量的各个分量模长的和,叫做1-范数。但是矩阵各个位置模长的和可不能叫1-范数。至于为什么不能叫,因为矩阵的1-范数属于诱导范数,我会另外写一篇诱导范数的文章来说。矩阵各个位置模长的和叫和范数sum norm,定义如下:
∥
A
∥
S
=
∑
i
=
1
m
∑
j
=
1
n
∣
a
i
j
∣
\parallel A\parallel_S=\sum_{i=1}^{m}\sum_{j=1}^{n}|a_{ij}|
∥A∥S=i=1∑mj=1∑n∣aij∣
求和范数的Python代码就比较简单了:
def sum_norm(self):
result = 0
for vector in self.__vectors:
for e in vector:
result += abs(e)
return result
Frobenius范数
同样,矩阵各位置元素模长的平方和再开根号,不能叫2-范数,因为2-范数属于诱导范数。那应该叫什么呢?有个专门的名字Frobenius范数Frobenius norm,或者叫F范数,还可以叫希尔伯特-施密特范数Hilbert-Schmidt norm或舒尔范数Schur norm。定义如下:
∥
A
∥
F
=
∑
i
=
1
m
∑
j
=
1
n
∣
a
i
j
∣
2
\parallel A\parallel_F=\sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n}|a_{ij}|^2}
∥A∥F=i=1∑mj=1∑n∣aij∣2
F范数是考试热门。因为它性质特别多。首先有:
∥
A
∥
F
=
t
r
(
A
H
A
)
\parallel A\parallel_F=\sqrt{tr(A^HA)}
∥A∥F=tr(AHA)
这个就无需证明了,因为一阶迹是所有对角线元素的和。而复数乘以自己的共轭就等于模长的平方。还有F-范数等于
A
H
A
A^HA
AHA所有特征值的和开根号。这也无需证明,因为一阶迹就是所有特征值的和。
F-范数等于奇异值的平方和再开根号:
∥
A
∥
F
=
∑
i
=
1
n
σ
i
2
\parallel A\parallel_F=\sqrt{\sum_{i=1}^n\sigma_i^2}
∥A∥F=i=1∑nσi2
奇异值那个希腊字母很少见,读做西格玛是求和符号的小写形式。所以它也等于沙滕2-范数。
Python代码:
# F-范数
def frobenius_norm(self):
result = 0
for vector in self.__vectors:
for e in vector:
result += abs(e)**2
return math.sqrt(result)
最大范数
矩阵所有元素的模长的最大值同样不能叫无穷范数,所以矩阵范数难受的是向量范数用过的名词都不能用了,要换个名词了,这次换成了最大范数max norm。最大范数不是相容范数,所以属于广义矩阵范数。它的定义如下:
∥
A
∥
M
=
m
a
x
(
∣
a
i
j
∣
)
\parallel A\parallel_M=max(|a_{ij}|)
∥A∥M=max(∣aij∣)
最大范数为什么不相容?我们只要找个
∥
A
B
∥
>
∥
A
∥
∥
B
∥
\parallel AB\parallel \gt \parallel A\parallel\parallel B\parallel
∥AB∥>∥A∥∥B∥的反例就行了。现在就给一个:
∥
1
1
1
1
∥
M
=
1
(
1
1
1
1
)
(
1
1
1
1
)
=
(
2
2
2
2
)
∥
2
2
2
2
∥
M
=
2
\begin{Vmatrix}1 & 1\\ 1 & 1\\ \end{Vmatrix}_M=1\\ \begin{pmatrix}1 & 1\\ 1 & 1\\ \end{pmatrix}\begin{pmatrix}1 & 1\\ 1 & 1\\ \end{pmatrix}=\begin{pmatrix}2 & 2\\ 2 & 2\\ \end{pmatrix}\\ \begin{Vmatrix}2 & 2\\ 2 & 2\\ \end{Vmatrix}_M=2\\
1111
M=1(1111)(1111)=(2222)
2222
M=2
Python代码:
# 最大范数
def max_norm(self):
array = [[abs(e) for e in vector] for vector in self.__vectors]
max_vectors = [max(vector) for vector in array]
return max(max_vectors)
相关文章
- Java实现 蓝桥杯VIP 算法训练 矩阵乘方
- C++矩阵处理库--Eigen初步使用
- 【LeetCode 73】矩阵置零
- ZZNUOJ_用C语言编写程序实现1158:矩阵的最大值(指针专题)(附完整源码)
- Py之seaborn:数据可视化seaborn库的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的组合图/矩阵图可视化代码实现集合之详细攻略
- NLP:自然语言处理技术中常用的文本特征表示方法之字典特征抽取(对字典型数据通过特征抽取和向量化进而实现特征数字化,one-hot编码/仅有值稀疏矩阵,如对类别型特征转换数字型)代码实现
- NLP之CO-SVD:CO共现词频矩阵法/CO-SVD法的简介、实现步骤之详细攻略
- 电力系统中随机矩阵理论的应用(Matlab实现)
- 矩阵满秩分解证明
- 附录A 9. 矩阵
- 第十三届蓝桥杯 C++ B 组省赛 F 题——统计子矩阵 (AC)