矩阵
范数
numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)
x: 矩阵
ord: 范数的阶。默认为‘fro’。
当ord是正整数时,矩阵范数由对应的向量范数决定,(称为该向量范数的从属范数)。
∣
∣
x
∣
∣
o
r
d
=
(
∑
i
=
1
n
x
i
o
r
d
)
1
/
o
r
d
||x||_{ord} = (\sum_{i = 1}^{n}x_{i}^{ord})^{1/ord}
∣∣x∣∣ord=(i=1∑nxiord)1/ord
∣
∣
A
∣
∣
=
max
x
≠
0
∣
∣
A
x
∣
∣
o
r
d
∣
∣
x
∣
∣
o
r
d
=
max
∣
∣
x
∣
∣
o
r
d
=
1
∣
∣
A
x
∣
∣
o
r
d
||A|| = \max_{x\ne 0}\frac{||Ax||_{ord}}{||x||_{ord}} = \max_{||x||_{ord}= 1}||Ax||_{ord}
∣∣A∣∣=x=0max∣∣x∣∣ord∣∣Ax∣∣ord=∣∣x∣∣ord=1max∣∣Ax∣∣ord
特别的,
o
r
d
=
1
,
∣
∣
A
∣
∣
1
=
m
a
x
1
≤
j
≤
n
∑
i
=
1
n
∣
a
i
j
∣
(最大列和)
ord = 1, \quad ||A||_{1} = max_{1\leq j \leq n}\sum_{i=1}^{n}|a_{ij}| \quad \text{(最大列和)}
ord=1,∣∣A∣∣1=max1≤j≤ni=1∑n∣aij∣(最大列和)
o
r
d
=
inf
,
∣
∣
A
∣
∣
inf
=
m
a
x
1
≤
i
≤
n
∑
j
=
1
n
∣
a
i
j
∣
(最大行和)
ord = \inf, \quad ||A||_{\inf} = max_{1\leq i \leq n}\sum_{j=1}^{n}|a_{ij}| \quad \text{(最大行和)}
ord=inf,∣∣A∣∣inf=max1≤i≤nj=1∑n∣aij∣(最大行和)
o
r
d
=
2
,
∣
∣
A
∣
∣
2
=
[
ρ
(
A
T
A
)
]
1
/
2
(最大奇异值,
ρ
为谱半径)
ord = 2, \quad ||A||_{2} = [\rho(A^TA)]^{1/2}\quad \text{(最大奇异值,$\rho$ 为谱半径)}
ord=2,∣∣A∣∣2=[ρ(ATA)]1/2(最大奇异值,ρ 为谱半径)
当
o
r
d
ord
ord为负整数时,其实不再是数学上的范数,表示的是对应的
∣
∣
A
∣
∣
=
min
∣
∣
x
∣
∣
o
r
d
=
1
∣
∣
A
x
∣
∣
o
r
d
||A|| = \min_{||x||_{ord}= 1}||Ax||_{ord}
∣∣A∣∣=∣∣x∣∣ord=1min∣∣Ax∣∣ord
此外,
o
r
d
=
‘
f
r
o
’
,
∣
∣
A
∣
∣
f
r
o
=
(
∑
i
,
j
=
1
n
∣
a
i
j
∣
2
)
1
/
2
(Frobenius范数)
ord = ‘fro’, \quad ||A||_{fro} = (\sum_{i,j=1}^{n}|a_{ij}|^2)^{1/2}\quad \text{(Frobenius范数)}
ord=‘fro’,∣∣A∣∣fro=(i,j=1∑n∣aij∣2)1/2(Frobenius范数)
o
r
d
=
‘
n
u
c
’
,
∣
∣
A
∣
∣
n
u
c
=
所有奇异值之和 (nuclear范数)
ord = ‘nuc’, \quad ||A||_{nuc} = \text{所有奇异值之和 (nuclear范数)}
ord=‘nuc’,∣∣A∣∣nuc=所有奇异值之和 (nuclear范数)
条件数
对于矩阵
A
A
A,条件数
c
o
n
d
(
A
)
=
∣
∣
A
∣
∣
⋅
∣
∣
A
−
1
∣
∣
cond(A) = ||A||\cdot||A^{-1}||
cond(A)=∣∣A∣∣⋅∣∣A−1∣∣
numpy.linalg.cond(x, p=None)
x: 矩阵
p: 用于确定使用哪种矩阵范数。同numpy.linalg.norm的参数ord。注意,默认为2-norm!
特征值
numpy.linalg.eig(x)
x: 矩阵
return:分为两部分,一个一维数组w表示全体特征值,和一个二维数组,第i列为
w
[
i
]
w[i]
w[i]的归一化的特征向量。
当求特征值算法不收敛时会报错。
谱半径
数学上,称一个矩阵
A
A
A的全体特征值的集合为谱,记作
σ
(
A
)
\sigma(A)
σ(A)。谱半径
ρ
(
A
)
=
max
λ
∈
σ
(
A
)
∣
λ
∣
\rho(A) = \max_{\lambda\in\sigma(A)} |\lambda|
ρ(A)=λ∈σ(A)max∣λ∣
谱半径在数值分析中很有用,例如,判断迭代法是否收敛。numpy没有直接的函数可以调用,可以通过eig得到
max(abs(eig(x)[0]))
行列式
numpy.linalg.det(x)