9.3 矩阵范数

定义

   向量有范数,矩阵也有范数,定义和向量范数类似,不过多了一条要求。它的定义如下:

  1. 正定性positivity, ∥ A ∥ ≥ 0 \parallel A\parallel\ge 0 A∥≥0,只有 A = 0 A=0 A=0时才取等号;
  2. 非负齐次性homogeneityscaling, ∥ k A ∥ = ∣ k ∣ ∥ A ∥ \parallel kA\parallel=|k|\parallel A\parallel kA∥=kA
  3. 劣可加性subadditivity或三角不等式triangle inequality ∥ A + B ∥ ≤ ∥ A ∥ + ∥ B ∥ \parallel A+B\parallel \le \parallel A\parallel+\parallel B\parallel A+B∥≤∥A+B
  4. 相容条件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}| AS=i=1mj=1naij
  求和范数的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} AF=i=1mj=1naij2
  F范数是考试热门。因为它性质特别多。首先有:
∥ A ∥ F = t r ( A H A ) \parallel A\parallel_F=\sqrt{tr(A^HA)} AF=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} AF=i=1nσ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}|) AM=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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醒过来摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值