MATLAB的数据与运算(三)

矩阵的运算
既然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 的增大组成的一个三角形表,而帕斯卡矩阵由杨辉三角形表组成的矩阵。

举例说明
矩阵1
矩阵2
矩阵3
参考资料:特殊矩阵

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中一些常用的函数和矩阵相关运算进行总结

猜你喜欢

转载自blog.csdn.net/weixin_44595362/article/details/104045145