【范数】
定义:$||x||_p=(\sum_{i=1}^n|x_i|^p)^{\frac{1}{p}}$,p 阶范数,记做 $L_p$
根据 x 是矩阵还是向量,分为向量范数、矩阵范数,其中矩阵范数是由向量范数推导过来的,含义相近
对于常用的向量范数有:
- 当 p=0 时:$L_0=(\sqrt[0]{\sum_{i=1}^n|x_t|^0})=i|x_i\neq 0$,即向量中非 0 个数
- 当 p=1 时:$L_1=\sum_i|x_i|$,即向量中所有元素的绝对值的和
- 当 p=2 时:$L_2=\sqrt{\sum_i x_i^2}$,即向量的元素平方和
- 当 $p=\infty$ 时:$L_\infty=max\{x_i\}$,即向量的元素最大值
- 当 $p=-\infty$ 时:$L_{-\infty}=min\{x_i\}$,即向量的元素最小值
对于常用的矩阵范数有:
- 当 p=1 时:$L_1$ 为矩阵中列元素的绝对值的和的最大值,等价于
max(sum(abs(a)))
- 当 p=2 时:$L_2$ 为矩阵的最大奇异值
- 当 $p=\infty$ 时:$L_\infty$ 为矩阵的转置的列元素绝对值和的最大值,等价于
max(sum(abs(a')))
- 当 $p=-\infty$ 时:$L_{-\infty}$为转置矩阵与矩阵乘积取对角后的和的开方,等价于
sqrt(sum(a'*a))
在 matlab 中,利用 norm()
求范数:
norm(x,p)
:返回 x 的 p 阶范数,默认 p=2
1 | >> norm([1:6],2) |
由于矩阵的二阶范数并不好计算,有时会花费过长的时间,当只需给一个近似范数值时,利用 normest()
来计算二阶范数
normest(x)
:计算矩阵 x 的二阶范数normest(x,tol)
:计算矩阵 x 的二阶范数,相对误差为 tol
1 | >> a=[1,2,3;3,4,5;7,8,9]; |
【矩阵的秩】
行秩:矩阵中线性无关的行向量
列秩:矩阵中线性无关的列向量
在 matlab 中,利用 rank()
来求矩阵的秩
rank(A)
:以默认误差来计算 A 的秩,默认误差为:max(size(a))*eps(norm(a))
rank(A,tol)
:以 tol 指定相对误差来计算 A 的秩
1 | >> a=magic(3); |
【行列式】
在 matlab 中,利用 det(A)
来求矩阵的行列式
1 | >> a=magic(5); |
【矩阵的迹】
定义:矩阵对角元素和
在 matlab 中,利用 trace()
来计算矩阵的迹
1 | >> a=magic(5); |
【矩阵的化零矩阵】
定义:对于非满秩矩阵 A,若存在矩阵 B 使 AB=0,且 BB‘=I,则称矩阵 B 为矩阵 A 的化零矩阵
在 matlab 中,利用 null()
求矩阵的化零矩阵,若不存在返回空矩阵
1 | >> a=magic(3); |
【矩阵的正交空间】
定义:矩阵 A 的正交空间 Q,具有 Q’Q=I 的性质,且 Q 的列向量构成的线性空间与 A 的列向量构成的线性空间相同,同时,Q 与 A 具有相同的秩
在 matlab 中,利用 orth()
来求正交空间
1 | >> a=[1,2,3;4,5,6;7,8,9]; |
【约化行阶梯形式】
在 matlab 中,利用 rref()
来将矩阵转为约化行阶梯形式
1 | >> a=[1,2,3;4,5,6;7,8,9]; |
【矩阵夹角】
在 matlab 中,利用 subspace()
来求矩阵空间的夹角
1 | >> a=[1,2,3;4,5,6;7,8,9]; |
【矩阵分解】
矩阵分解,是将一个复杂的矩阵分解为几个较简单的矩阵连乘的形式
矩阵分解,是将一个复杂的矩阵分解为几个较简单的矩阵连乘的形式
在 matlab 中,各种调用方式均相似,以对称正定矩阵 Cholesky 分解为例:
R=chol(A)
:返回对称正定矩阵 X 的上三角矩阵 R,使得 R’R=X
函数 | 作用 |
---|---|
cholinc | 稀疏矩阵的不完全 Cholesky 分解 |
lu | 矩阵 LU 分解 |
luinc | 稀疏矩阵的不完全 LU 分解 |
qr | QR 分解 |
svd | 奇异值分解 |
gsvd | 一般奇异值分解 |
schur | 舒尔分解 |
1 | >> a=pascal(3) |
【特征向量与特征值】
在 matlab 中,利用 eig()
来求矩阵的特征向量
d=eig(A)
:求 A 的特征值向量 d[x,d]=eig(A)
:求满足 ax=xd 的矩阵 x、d
1 | >> a=magic(3); |
【稀疏矩阵】
由于稀疏矩阵的特性,其按列存储的方式过于占用存储空间,因此在 matlab 中,以 (行,列) 值
的方式对稀疏矩阵存储
sparse(A)
:生成稀疏矩阵 A,若 A 已经为一个稀疏矩阵,返回 A 本身full(A)
:将稀疏矩阵 A 转为满矩阵
1 | >> sparse([1,2,3;0,0,0;0,1,0]) |