7.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≤nmaxi=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 M
return [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≤mmaxj=0∑n∣aij∣
Python代码:
# 无穷范数
def infinite_norm(self):
return Matrix(self.transpose()).one_norm()
在这里我为了复用代码,直接转置一下求1-范数,就等于无穷范数了。
至于p不为1和2的向量p-范数的诱导范数,是非常难求的,而且实际应用较少,所以很少有人研究。
相关文章
- 麒麟系统V10 SP2 编译安装PHP 7.4.30
- 麒麟系统V10 SP2 编译安装 Zabbix 6.0.8 +MySQL 8.0.30 + PHP 7.4.30
- 【重识云原生】第六章容器6.1.7.4节——cgroups使用
- 7.4v升12v锂电池升压芯片方案_电池升压
- 再谈WindowsBlinds 7.4的试用期
- 犀牛3d建模哪个版本好?Rhino犀牛7.4中文版下载和安装使用教程
- 【错误记录】Android Studio 编译报错 ( Could not resolve com.android.tools.build:gradle:7.4.2. )
- Rhino建模软件 犀牛7.4中文版 win/mac电脑版下载安装,Rhino犀牛
- 【错误记录】Android Studio 编译报错 ( The project is using an incompatible version (AGP 7.4.2) of the Androi )
- centos 7.4 + greenplum 5.7 + make详解数据库
- centos 7.4 + redis 4.0.9 cluster + make详解大数据
- ABAP 7.4新特性(四): COND SWITCH 操作符详解编程语言
- CentOS 7.4 发布 安全稳定的 Linux 发行版