矩阵函数
2.4.1 对角阵与三角阵
对角线函数
- 对角阵只有对角线上有非0元素的矩阵称为对角矩阵。
- 对角线上的元素相等的对角矩阵称为数量矩阵。
- 对角线上的元素都为1的对角矩阵称为单位矩阵。
对角线函数diag:
既可以用来生成矩阵,又可以来提取矩阵的对角线元素,其调用格式如下。
-
1.A=diag(v,k) :
(1)当v是有n个元素的向量,返回矩阵A是行列数为n+|k|的方阵。
(2)向量v的元素位于A的第k条对角线上。
(3)K=0 对应主对角线,k>0对应主对角线以上,k<0对应主对角线以下。 -
2.A=diag(v):
将向量v的元素放在方阵A的主对角线上,等同于A=diag(v,k)中k=0的情况。
A =
1 0 2 0 5
5 1 0 5 2
0 4 5 0 5
1 2 5 0 4
5 0 5 3 0
>> diag(A)
ans =
1 1 5 0 0
>> diag(A,-2)
ans =
0 2 5
>>> diag(A,1)
ans =
0 0 0 4
下三角阵的提取tril
(1)L=tril(A): 提取矩阵A的下三角部分
(2)L=tril(A,k):提取矩阵A的第k条对角线以下部分。k=0对应主对角线,k>0对应主对角线以上,k<0对应主对角线以下
>> tril(A)
ans =
1 0 0 0 0
5 1 0 0 0
0 4 5 0 0
1 2 5 0 0
5 0 5 3 0
>> tril(A,2)
ans =
1 0 2 0 0
5 1 0 5 0
0 4 5 0 5
1 2 5 0 4
5 0 5 3 0
上三角阵的提取函数triu
(1)U=triu(A): 提取矩阵A的上三角部分元素
(2)U=triu(A,k): 提取矩阵A的第k条对角线以上的元素。k=0对应主对角线,k>0对应主对角线以上,k<0对应主对角线以下。
>> triu(A)
ans =
1 0 2 0 5
0 1 0 5 2
0 0 5 0 5
0 0 0 0 4
0 0 0 0 0
>> triu(A,3)
ans =
0 0 0 0 5
0 0 0 0 2
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
2.4.2 矩阵的转置与旋转
1.矩阵的转置
- ’ 它实际上完成的是矩阵的共扼转置,一般意义上的转置运算符为 .’。
- 当A 是复数矩阵是,A’是共轭转置,如果实现非共轭转置,需要采用A.’。
2.矩阵的翻转和旋转
(1)矩阵的左右翻转
调用格式:B = fliplr(A) 将矩阵A左右翻转成矩阵B。
(2)矩阵上下翻转函数
调用格式:B=flipud(A) 把矩阵A上下翻转成矩阵B。
(3)多维数组翻转函数
调用格式:B=flipdim(A,dim) 把矩阵或多维数组A沿指定维数翻转成B。
(4)矩阵的旋转函数
调用格式为:
B=rot90(A):矩阵B是矩阵A沿逆时针方向旋转90度得到的。
B=rot90(A,k):矩阵B是矩阵A沿逆时针方向旋转k*90度得到的(要想顺时针旋转,k取-1)。
>> b=fliplr(A)
b =
5 0 2 0 1
2 5 0 1 5
5 0 5 4 0
4 0 5 2 1
0 3 5 0 5
>> c=flipud(A)
c =
5 0 5 3 0
1 2 5 0 4
0 4 5 0 5
5 1 0 5 2
1 0 2 0 5
>> d=flipdim(A,3)
d =
1 0 2 0 5
5 1 0 5 2
0 4 5 0 5
1 2 5 0 4
5 0 5 3 0
>> e=rot90(A)
e =
5 2 5 4 0
0 5 0 0 3
2 0 5 5 5
0 1 4 2 0
1 5 0 1 5
2.4.3 矩阵的逆与伪逆
- 对于可逆矩阵来说,伪逆和逆结果一样。
- 对于不可能逆矩阵,是采用最小二乘的方法求一个近似的逆。
(1)矩阵的逆
- 理论:对于一个方阵A,如果存在一个与其同阶的方阵B,使得:AB=BA=I (I为单位矩阵) 则称B为A的逆矩阵,当然,A也是B的逆矩阵。
- 函数调用:求方阵A的逆矩阵可调用函数inv(A)。
(2)矩阵的伪逆
- 如果矩阵A是一个非满秩的方阵时(行列式为零的矩阵不可逆),矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A’同型的矩阵B,使得:ABA=A,BAB=B 此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。
- 函数调用:pinv(A)。当一个矩阵不是满秩的时候,如果要求逆,只能用伪逆函数来求。
>> A = [1 2 3; 1 2 3; 4 5 6]
B = inv(A)
C = pinv(A)
A =
1 2 3
1 2 3
4 5 6
B =
Inf Inf Inf
Inf Inf Inf
Inf Inf Inf
C =
-0.47222 -0.47222 0.44444
-0.055556 -0.055556 0.11111
0.36111 0.36111 -0.22222
2.4.4 方阵的行列式
- 回顾一下:由n阶方阵A的元素所构成的行列式(各元素的位置不变),称为方阵A的行列式,记作|A|或detA。
- 函数调用:d=det(A),该指令返回方阵A的行列式,并赋给d。若A仅包含整数项,则该结果d也是一个整数。
2.4.5 矩阵的秩与迹
关于矩阵秩的推到可以参照笔记:https://blog.csdn.net/qq_45562910/article/details/104175341
- 设A=(aij)为n阶矩阵,称A的主对角线上所有元素的和为A的迹,记作trace(A)
- rank(A) 函数用来求矩阵A的秩,表示矩阵A中不为零的子式的最大阶数。
2.4.6 向量和矩阵的范数
1.向量范数
在一维空间中,实轴上任意两点距离用两点差的绝对值表示。
绝对值是一种度量形式的定义。
范数 是对函数、向量和矩阵定义的一种度量形式。任何对象的范数值都是一个非负实数。
使用范数可以测量两个函数、向量或矩阵之间的距离。
向量范数是度量向量长度的一种定义形式。
p-范数。
-
若x=[x1,x2,…,xn] T 那么║x║p=(|x1|p+|x2|p+…+|xn|p)^{1/p},可以验证p-范数确实满足范数的定义。
-
当p取1,2,∞的时候分别是以下几种最简单的情形:
-
- 1-范数:║x║1=│x1│+│x2│+…+│xn│ ;
-
- 2-范数 :║x║2=(│x1│2+│x2│2+…+│xn│2)^1/2 ;
-
- ∞-范数:║x║∞=max(│x1│,│x2│,…,│xn│) 。
其中2-范数就是通常意义下的距离。
- ∞-范数:║x║∞=max(│x1│,│x2│,…,│xn│) 。
-
函数调用:
n = norm(X,inf):求向量X的无穷-范数;
n = norm(X,1):求向量X的1-范数;
n = norm(X,-inf):求向量X的绝对值的最小值;
n = norm(X, p):求向量X的p-范数;
n = norm(X,2):求向量X的2-范数。
2.矩阵范数
一个在m* n的矩阵上的矩阵范数(matrix norm)是一个从m* n 线性空间到实数域上的一个函数,记为||•||,它对于任意的m*n矩阵A和B及所有实数a。矩阵是四种,相比较向量,多一个F范数。
满足以下四条性质:
||A||>=0;
||A||=0 iff A=O (零矩阵); (1和2可统称为正定性);
||aA||=|a| ||A||; (齐次性);
||A+B||<= ||A|| + ||B||. (三角不等式)。
-
ps:在一些教科书上定义的矩阵范数是对于二阶矩阵的,这种定义往往要求矩阵满足相容性,即||AB||<=||A|| ||B||. (相容性)。
对于矩阵范数的定义仅要求前4条性质,而满足第5个性质的矩阵范数称为服从乘法范数。 -
矩阵范数的函数调用:
n = norm(A):求矩阵A欧几里德范数,等于A的最大奇异值;
n = norm(A,1):求矩阵A的列范数,等于A的列向量的1-范数的最大值;
n = norm(A,2):求A的欧几里德范数,和norm(A)相同;
n = norm(A,inf):求矩阵A的行范数,等于A的行向量的1-范数的最大值即:max(sum(abs(A’)))。
n = norm(A, ‘fro’ ):求矩阵A的Frobenius范数,矩阵元p阶范数估计需要自己编程。
(范数这里因为没有遇到具体的应用,所以我自己也不太明白其中的曲折)
2.4.7 矩阵的条件数
- 用矩阵及其逆矩阵的范数的乘积表示矩阵的条件数,由于矩阵范数的定义不同,因而其条件数也不同,但是由于矩阵范数的等价性,故在不同范数下的条件数也是等价的,一般取2-范数。矩阵条件数的大小是衡量矩阵“坏”或“好”的标志。
- cond(A)称作矩阵A的条件数,为矩阵A的范数与A的逆矩阵的范数的乘积。
调用:
cond(A,1) 计算A的1—范数下的条件数。
cond(A)或cond(A,2) 计算A的2—范数数下的条件数。
cond(A,inf) 计算A的 ∞—范数下的条件数。
(和范数一样我也不太明白)
2.4.8 矩阵的特征值与特征向量
- 回顾一下:对于任意方阵A,首先求出方程|λE-A|=0的解,这些解就是A的特征值,再将其分别代入方程(λE-A)X=0中,求得它们所对应的基础解系,则对于某一个λ,以它所对应的基础解系为基形成的线性空间中的任意一个向量,均为λ所对应的特征向量。(如果这里有遗忘可以参照笔记:https://blog.csdn.net/qq_45562910/article/details/104178703)
- 函数调用:
格式:[V,D] = eig(A)
说明:其中D为特征值构成的对角阵,每个特征值对应于V矩阵中列向量(也正是其特征向量),如果只有一个返回变量,则得到该矩阵特征值构成的列向量。
按上述说明,在MATLAB输入: [V,D] = eig(A) 即可求出结果。
A =
1 2 3
1 2 3
4 5 6
>> [V,D]=eig(A)
V =
0.37005 0.52007 0.40825
0.37005 0.52007 -0.8165
0.85213 -0.67753 0.40825
D =
9.9083 0 0
0 -0.90833 0
0 0 2.0095e-17