矩阵的运算
既然maltlab具有强大的矩阵运算功能,现在就来给大家介绍一下矩阵的运算和一些特殊的矩阵。
1.特殊矩阵
函数 | 说明 |
---|---|
ones | 建立一个全1的矩阵或数组 |
zeros | 建立一个全0的矩阵或数组 |
eye | 建立一个对角线元素全为1,其余元素为0的矩阵 |
magic | 建立一个魔方矩阵,其行,列及对角线元素之和相等 |
rand | 建立一个随机数均匀分布的矩阵或数组 |
randn | 建立一个随机数标准正态分布的矩阵或数组 |
hilb | 建立一个希尔伯特矩阵,A=hilb(n),生成n阶Hilbert矩阵 |
vander | 建立一个范德蒙德矩阵,A=vander(v),v是一个向量 |
toeplitz | 建立一个特普利茨矩阵,A=toeplitz(x,y),它生成一个以x为第一列,y为第一行的特普利茨矩阵,特别地,toeplitz(x)用向量x生成一个对称的特普利茨矩阵 |
compan | 建立一个伴随矩阵,A=compan(u),u是多项式系数向量 详细用法 |
pascal | 建立一个帕斯卡矩阵,A=pascal(n) |
希尔伯特矩阵
Hilbert matrix,矩阵的一种,其元素A(i,j)=1/(i+j-1),i,j分别为其行标和列标,即:
特普利茨矩阵,除第一行第一列外,其他每个元素都与左上角的元素相同。即主对角线上的元素相等,平行于主对角线的线上的元素也相等。
帕斯卡矩阵,杨辉三角形表是二项式 (x+y)^n 展开后的系数随自然数 n 的增大组成的一个三角形表,而帕斯卡矩阵由杨辉三角形表组成的矩阵。
举例说明
参考资料:特殊矩阵
2.矩阵的运算
(1)方阵的值
d=det(X) %求出方阵X对应行列式的值
(2)矩阵的特征值
d=eig(A) %求出矩阵A的特征值,构成向量d
d=eig(A,B) %如果A,B都为一个方阵,返回一个广义的特征值
[V,D]=eig(A) %A的全部特征值构成对角矩阵D,每个特征值对应对应特征向量构成V的列向量
(3)矩阵的秩
k=rank(A) %返回矩阵A的秩
(4)矩阵的迹和伪迹
矩阵的迹等于矩阵对角线元素之和,也等于矩阵特征值之和
b=trace(A) %求方阵A的迹
b=pinv(A) %求方阵A的伪迹
(5)条件数运算
矩阵的条件数表示矩阵的病态程度,根据矩阵的条件数,可以判断矩阵是否病态。一般来说,条件数越大,矩阵越接近一个奇异矩阵(不可逆矩阵),矩阵越“病态”。病态矩阵的概念:在求解AX=b时,如果A的微小变化会引起解的剧烈变化,则矩阵A为病态矩阵。
函数 | 作用 |
---|---|
cond | 求解矩阵的条件数(默认为2-范式) |
condest | 求解矩阵的1-范式条件数 |
rcond | 求解矩阵的逆条件数 |
3.矩阵的分解
矩阵的分解是指将给定矩阵分解为特殊矩阵的乘积的过程。一般的矩阵分解运算主要有三角(LU)分解,正交(QR)分解,Chollesky(CHOL)分解,特征值(EIG)分解,奇异值分解(SVD)。
(1).三角分解
将矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积。
在matlab中我们常调用lu函数实现分解,调用格式如下:
A=[1 2 3 4 ;5 6 7 8;9 10 11 12;13 14 15 16]
[L,U]=lu(A)
[L,U,P]=lu(A) %P为置换矩阵,满足LU=PA
(2).正交分解
将矩阵分解为一个正交矩阵Q和一个上三角矩阵R的乘积。
在matlab中我们常调用qr函数来实现,调用格式如下:
A=[1 2 3 4 ;5 6 7 8;9 10 11 12;13 14 15 16]
[Q,R]=qr(A) %其中QR=A
[Q,R,E]=qr(A) %求得正交矩阵Q和上三角矩阵R,E为单位矩阵的变化形式其中AE=QR
(3).Cholesky分解
Cholesky分解主要是针对对称正定矩阵的分解。
设A为对称正定矩阵,A=R’R称为A的Cholesky分解,R是一个具有正的对角元素的上三交矩阵
A=gallery('moler',5) %gallery 函数是一个测试矩阵生成函数,该语句生成一个对称正定矩阵
R=chol(A)
[R,p]=chol(A) %若A为正定矩阵,则p=0;若A为非正定,则p为正整数,R为有序的上三角矩阵
(4).奇异值分解
奇异值分解是现代数值分析(尤其是数值计算)最基本,最重要的工具之一。所谓的奇异值分解就是将mn的矩阵A表示为三个矩阵乘积形式,即USV’,U为mm的酉矩阵,V为n*n的酉矩阵,S为对角矩阵,其对角线上的元素为矩阵A的奇异值。
A=[4 5 9;3 7 5;4 6 8]
s=svd(A) %返回A的奇异值向量
[U,S,V]=svd(A) %返回矩阵A的奇异值分解因子U,S,V
对于matlab中矩阵的运算和分解基本介绍已经结束,下一篇将对matlab中一些常用的函数和矩阵相关运算进行总结