5.1矩阵
eye(n):创建n×n的矩阵
eye(m,n):创建m×n的矩阵
eye(size(A)):创建与A维数相同的单位阵
ones(n):创建n×n的全1矩阵
ones(m,n):创建m×n的全1矩阵
ones(size(A)):创建与A维数相同的全1矩阵
zeros(m,n):创建m×n全0矩阵
zeros(size(A)):创建与A维数相同的全0矩阵
rand(n):在[0,1]区间内创建一个n×n均匀分布的随机矩阵
rand(m,n):在[0,1]区间内创建一个m×n均匀分布的随机矩阵
rand(size(A)):在[0,1]区间内创建一个与A维数相同的均匀分布的随机矩阵
compan§:创建系数向量是P的多项式的伴随矩阵
diag(v):创建一向量v中的元素为对角的对角阵
hilb(n):创建n×n的Hilbert矩阵
magic(n):生成n阶魔方矩阵
sparse(n):将矩阵A转化为稀疏矩阵形式,即由A的非零元素和下标构成稀疏矩阵S。若A本身为稀疏矩阵,则返回A本身。
矩阵元素修改
A = [A;B C]
A(m,???? = [] 删除第m行
A(n,:) = [] 删除第n列
A(m,n) = a; A(m,:) = [a b …]; A(:,n) = [a b …]
reshape(X,m,n):将已知矩阵变维成m行n列的矩阵
C(:)=A(????:同reshape
矩阵的变向:
Rot(90):将A逆时针旋转90°
Rot(90,k):将A逆时针方向旋转90°*k,k可为正整数或负整数。
Fliplr(X):将X左右翻转
flipud(X):将X上下翻转
flipdim(X,dim):dim=1时对行翻转,dim=2时对列翻转
矩阵的抽取:
diag(X,k):抽取矩阵X的第k条对角线上的元素向量。k=0时抽取主对角线,k为正整数时抽取上方第k条对角线上的元素,k为负整数时抽取下方第k条对角线上的元素
diag(X):提取主对角线
diag(v,k):使得v为所得矩阵第k条对角线上的元素向量
diag(v):使得v为所得矩阵主对角线上的元素向量
tril(X):提取矩阵X的主下三角部分
tril(X,k):提取矩阵X的第k条对角线下面的部分(包括第k条对角线)
triu(X):提取矩阵X的主上三角部分
triu(X,k):提取矩阵X的第k条对角线上面的部分(包括第k条对角线)
矩阵运算
DX = B
X = inv(D)B=D\B:左除条件为B的行数等于D的阶数
XD1=B1
X=B1inv(D1)=B1/D1:右除条件为B1的列数等于D1的阶数
函数名 | 说明 | 函数名 | 说明 |
---|---|---|---|
cond | 矩阵的条件数值 | diag | 对角变换 |
det | 矩阵的行列式值 | exmp | 矩阵的指数运算 |
eig | 矩阵的特征值 | logm | 指数的对数运算 |
inv | 矩阵的逆 | sqrtm | 矩阵的开方运算 |
norm | 矩阵的范数值 | cdf2rdf | 复数对角矩阵转换成实数块对角矩阵 |
normest | 矩阵的2-范数值 | rref | 转换成逐行递减的阶梯矩阵 |
condest | 1-范数矩阵条件数值 | rsf2csf | 实数块对角矩阵转换成复数对角矩阵 |
rank | 矩阵的秩 | rot90 | 矩阵逆时针方向旋转90° |
orth | 矩阵的正交化运算 | fliplr | 左右翻转矩阵 |
rcond | 矩阵的逆条件数值 | flipud | 上下翻转矩阵 |
trace | 矩阵的迹 | reshape | 改变矩阵的维数 |
triu | 上三角变换 | funm | 一般的矩阵函数 |
tril | 下三角变换 |
对于单个n阶矩阵A
A^k A^l = A^(k+l)
对于两个n阶矩阵
(AB)^k ≠ A^k B^k
矩阵的逆:
如果有n阶方阵B满足 AB=BA =I,则称矩阵A为可逆的
求解矩阵逆条件数值:rcond
矩阵的条件数cond(A)用于判断矩阵是否病态
楚列斯基分解:针对对称正定矩阵的分解,分解为R是一个具有正的对角元上三角矩阵
R = chol(A) 返回楚列斯基分解因子R
[R,p] = chol(A) 该命令不产生任何错误信息,若A为正定矩阵,则p=0,R同上;若X非正定,则p为正整数,R是有序的上三角阵
LU分解:矩阵的LU分解又称矩阵的三角分解,它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。
[L,U]=lu(A):对矩阵A进行LU分解,其中L为单位下三角阵或其变换形式,U为上三角阵。
[L,U,P]=lu(A):对矩阵A进行LU分解,其中L为单位下三角阵,U为上三角阵,P为置换矩阵,满足LU=PA。
实际应用中,我们一般都是使用第二种格式的lu分解命令,因为第一种调用格式输出的矩阵L并不一定是下三角矩阵,这对于分析和计算都是非常不利的。
LDMT与LDLT分解
对于n阶方阵A,所谓的LDMT分解就是将A分解为3个矩阵的乘积——LDMT。其中,L、M是单位下三角矩阵,D为对角矩阵。事实上,这种分解是LU分解的一种变形,因此这种分解可以将LU分解稍作修改得到,也可根据三个矩阵的特殊结构直接计算出来。
[L,D,M] = ldm(A)
[L,D]=ldl(A)
QR分解:
矩阵A的QR分解也叫正交三角分解,即将矩阵A表示成一个正交矩阵Q与一个上三角矩阵R的乘积形式。
[Q,R]=qr(A) 返回正交矩阵Q和上三角矩阵R,Q和R满足A=QR;若A为m×n矩阵,则Q为m×m矩阵,R为m×n矩阵
[Q,R,E]=qr(A) 求得正交矩阵Q和上三角阵R,E为置换矩阵使得R的对角线元素按绝对值大小降序排列,满足AE=QR
[Q,R]=qr(A,0) 产生矩阵A的“经济型”分解,即若A为m×n矩阵,且m>n,则返回Q的前n列,R为n×n矩阵;否则该命令等价于[Q,R]=qr(A)
[Q,R,E]=qr(A,0) 产生矩阵A的“经济型”分解,E为置换矩阵使得R的对角线元素按绝对值大小降序排列,且A(:,E)=QR
R=qr(A) 对稀疏矩阵A进行分解,只产生一个上三角阵R,R为ATA的Cholesky分解因子,即满足RTR=ATA
R=qr(A,0) 对稀疏矩阵A的“经济型”分解
[C,R]=qr(A,b) 此命令用来计算方程组Ax=b的最小二乘解
[Q1,R1]=qrdelete(Q,Rj) 返回去掉A的第j列后,新矩阵的QR分解矩阵。其中Q、R为原来A的QR分解矩阵
[Q1,R1]=qrdelete(Q,R,j,‘col’) 同上
[Q1,R1]=qrdelete(Q,R,j,‘row’) 返回去掉A的第j行后,新矩阵的QR分解矩阵。其中Q、R为原来A的QR分解矩阵
[Q1,R1]=qrinsert(Q,R,j,x) 返回在A的第j列前插入向量x后,新矩阵的QR分解矩阵。其中Q、R为原来A的QR分解矩阵。
[Q1,R1]=qrinsert(Q,R,j,x,‘col’) 同上
[Q1,R1]=qrinsert(Q,R,j,x,‘row’) 返回在A的第j行前插入向量x后,新矩阵的QR分解矩阵。其中Q、R为原来A的QR分解矩阵
SVD分解
奇异值分解(SVD) 是现代数值分析(尤其是数值计算)的最基本和最重要的工具之一,因此在实际工程中有这广泛的应用。
s = svd(A) 返回矩阵A的奇异值向量s
[U,S,V] = svd(A) 返回矩阵A的奇异值分解因子U、S、V
[U,S,V] = svd(A,0) 返回m×n矩阵A的“经济型”奇异值分解,若m>n则只计算出矩阵U的前n列,矩阵S为n×n矩阵,否则同[U,S,V]=svd(A)
舒尔(Schur)分解
舒尔分解是一种典型的酉相似变换,它的最大好处是能够保持数值稳定。
T=schur(A) 返回舒尔矩阵T,若A有复特征值,则相应的对角元以2×2的块矩阵形式给出。
T = schur(A,flag) 若A有复特征值,则flag=‘complex’,否则flag=‘real’
[U,T]=schur(A,…) 返回酉矩阵U和舒尔矩阵T
海森伯格(Hessenberg)分解
如果矩阵H的第一子对角线下元素都是0,则H(或其转置形式)称为上(下)海森伯格矩阵。
H=hess(A) 返回矩阵A的上海森伯格形式
[P,H]=hess(A) 返回一个上海森伯格矩阵H以及一个矩阵P,满足:A=PHP’ 且P’P=I
[H,T,Q,U]=hess(A,B) 对于方阵A、B,返回上海森伯格矩阵H,上三角矩阵T以及酉矩阵Q、U,使得QAU=H,且QBU=T。
·