9.4 诱导范数

编程入门 行业动态 更新时间:2024-10-11 01:14:12

9.4 <a href=https://www.elefans.com/category/jswz/34/1762867.html style=诱导范数"/>

9.4 诱导范数

  前面一篇文章说过,把向量范数的计算方法用在矩阵上,不能用相同的名字。那什么样的矩阵范数才能用向量范数相同的名字呢?答案就是诱导范数induced norm或自然范数Natural Norm。诱导范数不是把向量范数的计算方法直接用在矩阵上,它的计算方法比较另类。是这样定义的,已知一个向量范数 ∥ x ∥ α \parallel x\parallel_{\alpha} ∥x∥α​,它诱导的矩阵范数为:
∥ A ∥ α = max ⁡ ( ∥ A x ∥ α ∥ x ∥ α ) , x ≠ 0 \parallel A\parallel_\alpha=\max(\frac{\parallel Ax\parallel_\alpha}{\parallel x\parallel_\alpha}),x\ne 0 ∥A∥α​=max(∥x∥α​∥Ax∥α​​),x=0
  也即是说遍历所有非零向量,让矩阵乘以这个向量得到的向量的范数,再除于向量的范数。然后在这些商里找最大值。那什么是算子范数呢?公式和诱导范数差不多。算子范数operator norm,是两个向量范数诱导出的矩阵范数,定义如下:
∥ A ∥ ( α , β ) = max ⁡ ( ∥ A x ∥ α ∥ x ∥ β ) , x ≠ 0 \parallel A\parallel_{(\alpha,\beta)}=\max(\frac{\parallel Ax\parallel_\alpha}{\parallel x\parallel_\beta}),x\ne 0 ∥A∥(α,β)​=max(∥x∥β​∥Ax∥α​​),x=0
  也就是说,诱导范数是算子范数 α = β \alpha=\beta α=β的特殊场景。
  但是这个定义,太难计算了吧,遍历所有向量再求最大值,计算量是无穷的。不过对于常见的诱导范数,前人总结出了计算方法。

1-范数

  1-范数的计算就是求最大列和,所以也叫列范数,或列和范数。计算公式:
∥ A ∥ 1 = max ⁡ 1 ≤ j ≤ n ∑ i = 0 m ∣ a i j ∣ \parallel A\parallel_1=\max_{1\le j\le n}\sum_{i=0}^m|a_{ij}| ∥A∥1​=1≤j≤nmax​i=0∑m​∣aij​∣
  Python代码:

    def one_norm(self):array = [[abs(e) for e in vector] for vector in self.__vectors]sum_array = [sum(vector) for vector in array]return max(sum_array)

  要注意是模长的和,对于实数是绝对值。

2-范数

  2-范数,也叫谱范数,它的计算方法,前人也总结了。公式如下:
∥ A ∥ 2 = λ m a x ( A H A ) = σ 1 \parallel A\parallel_2=\sqrt{\lambda_{max}(A^HA)}=\sigma_1 ∥A∥2​=λmax​(AHA) ​=σ1​
  就是 A H A A^HA AHA的最大特征值开根号。也就是A的最大奇异值 σ 1 \sigma_1 σ1​,所以也等于樊畿1-范数。Python代码:

    # 2-范数def two_norm(self):return math.sqrt(max(self.sigular_values()))# 暂时用海森堡法求奇异值def sigular_values(self):m = Matrix(self.transpose()) * self# 用海森堡法计算from com.youngthing.mathalgorithm.linearalgebra.hessenberg import Matrix as Mreturn [math.sqrt(e) for e in M(m.__vectors).eigen_values()]

  我这里直接导入了我之前写的海森堡算法代码求特征值。

无穷范数

  无穷范数也叫行范数,或行和范数,计算方法如下:
∥ A ∥ 1 = max ⁡ 1 ≤ i ≤ m ∑ j = 0 n ∣ a i j ∣ \parallel A\parallel_1=\max_{1\le i\le m}\sum_{j=0}^n|a_{ij}| ∥A∥1​=1≤i≤mmax​j=0∑n​∣aij​∣
  Python代码:

    # 无穷范数def infinite_norm(self):return Matrix(self.transpose()).one_norm()

  在这里我为了复用代码,直接转置一下求1-范数,就等于无穷范数了。
  至于p不为1和2的向量p-范数的诱导范数,是非常难求的,而且实际应用较少,所以很少有人研究。

更多推荐

9.4 诱导范数

本文发布于:2024-02-14 09:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762786.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:诱导

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!