7.5 基于奇异值的范数

樊畿k-范数

  把矩阵的奇异值从大到小排列,前k个奇异值的和就是Ky Fan k-norm。Ky Fan是樊畿的英文名。用公式定义如下:
∥ A ∥ ( k ) = ∑ i = 1 k σ i ↓ \parallel A \parallel_{(k)}=\sum_{i=1}^k\sigma_i^{\downarrow} A(k)=i=1kσi
  当 k = 1 k=1 k=1时就是矩阵的2-范数,当 k = n k=n k=n时等于沙滕1-范数。因为定义简单,所以python代码也简单:

    # 樊畿范数
    def ky_fan_norm(self, k):
        values = self.sigular_values()
        values = sorted(values)
        result = 0
        n = len(values)
        for i in range(n - 1, n - k - 1, -1):
            result += values[i]
        return result

沙滕p-范数

  沙滕p-范数Schatten p-norm,又叫沙滕范数。它是基于奇异值定义的范数。其定义如下:
∥ A ∥ S p = ( ∑ i = 1 n σ i p ) 1 p \parallel A \parallel_{Sp}=(\sum_{i=1}^n\sigma_i^p)^{\frac1{p}} ASp=(i=1nσip)p1
  注意:沙滕-p范数不是矩阵的p-范数。举个例子,矩阵的2-范数是最大奇异值,但是沙滕2-范数却是矩阵的Frobenius范数。根据定义,计算沙滕p-范数的代码如下:

    # 沙滕范数
    def schatten_norm(self, p):
        values = self.sigular_values()
        result = 0
        for value in values:
            result += value ** p
        return result ** (1 / p)

核范数

  核范数nuclear norm又叫迹范数* trace norm*,就是沙滕1-范数,也是樊畿-n范数。

你可能感兴趣的:(线性代数【更新中】,线性代数,矩阵)