mooc刘卫国老师matlab第十二版学习笔记 (专题二)

目录

二、MATLAB矩阵处理

2.1 特殊矩阵

2.1.1通用性的特殊矩阵

2.1.2用于专门学科的特殊矩阵

2.2矩阵变换

2.2.1对角阵

2.2.2三角阵

2.2.3矩阵的转置

2.2.4矩阵的旋转

2.2.5矩阵的翻转

2.2.6矩阵求逆

2.3矩阵求值

2.3.1矩阵的行列式值

2.3.2矩阵的秩

2.3.3矩阵的迹

2.3.4矩阵的范数

        (1) 向量的3种常用范数

        (2) 矩阵的范数

2.3.5矩阵的条件数

2.4 矩阵的特征值与特征向量

2.4.1 矩阵特征值的数学定义

2.4.2 求矩阵的特征值与特征向量

​编辑

2.4.3 特征值的几何意义

2.5 稀疏矩阵

2.5.1 矩阵的存储方式

2.5.2 稀疏存储方式的产生

        (1)完全存储方式与稀疏存储方式之间的转化

        (2) 直接建立稀疏存储矩阵

        (3)带状稀疏矩阵的稀疏存储

        (4)单位矩阵的稀疏存储

2.5.3 稀疏矩阵的应用实例

总结


 

二、MATLAB矩阵处理

2.1 特殊矩阵

2.1.1通用性的特殊矩阵

  • zeros函数:产生全0矩阵,即零矩阵。
  • ones函数:产生全1矩阵,即幺矩阵。
  • eye函数:产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
  • rand函数:产生(1,0)区间均匀分布的随机矩阵。
  • randn函数:产生均值为0,方差为1的标准正态分布随机矩阵。

        zeros函数的调用格式:

  • zeros(m):产生m×m零矩阵。
  • zeros(m,n):产生m×n零矩阵。
  • zeros(size(A)):产生与矩阵A同样大小的零矩阵。

        

        例1  首先产生5阶两位随机整数矩阵A,再产生均值为0.6,方差为0.1的5阶正态分布随机矩阵B,最后验证(A+B)I= IA+BI(I为单位矩阵)

  • rand函数:产生(0,1)开区间均匀分布的随机数x。
  • fix(a+(b-a+1)* x):产生[a,b]区间上均匀分布的随机整数。
  • randn函数:产生均值为0,方差为1的标准正态分布随机数x。
  • \mu + \sigma x : 得到均值为\mu 、方差为\sigma ^2 的随机数。

            若要产生均值为\mu,方差为\sigma ^{2}的正态分布的n阶矩阵:\mu +\sigma *randn(n)    

2.1.2用于专门学科的特殊矩阵

        (1)魔方矩阵(Magic Square)

  • n阶魔方阵有1,2,3……,n^{2}n^{2}个整数组成,且每行、每列以及主、副对角线上各n个元素之和都相等。
  • n阶魔方阵每行每列元素的和为(1+2+3……+n^{2})/n=(n+n^{3})/ 2
  • n>2时有很多不同的n阶魔方阵,MATLAB函数magic(n)产生一个特定的魔方阵。

        例2  产生8阶魔方阵,求其每行每列元素的和。

        (2)范德蒙矩阵

        对于向量V=[V_{1}V_{2},……,V_{n}] , 范德蒙矩阵的一般形式为:

范德蒙矩阵的最后一列全为1,即向量V各元素的零次方,倒数第二例为指定的向量V,即向量各元素的一次方,其他各列是其后列与倒数第二列的点乘积。在MATLAB中,函数vander(V)为基础的范德蒙矩阵。

        范德蒙矩阵常用在各种通信系统的纠错编码中,例如,常用的Reed—Solomon编码即以范德蒙矩阵为基础。

        (3)希尔伯特矩阵

        n阶希尔伯特矩阵的一般形式为:

        希尔伯特矩阵的元素为H(i,j) = 1/(i+j-1)。

        在MATLAB中,生成n阶希尔伯特矩阵的函数为hilb(n)。

        希尔伯特矩阵是著名的病态矩阵,即任何一个元素发生较小的变动,整个矩阵的值和逆矩阵都会发生很大变化。病态程度和矩阵的阶数有关,随着阶数的增加病态越严重。

        (4)伴随矩阵

        设多项式p(x)为a_{n}x^{n}+a_{n-1}x^{n-1}+……+a_{1}x+a_{0},则多项式伴随矩阵是:

        p(x)称为A的特征多项式,方阵p(x)=0的根称为A的特征值。MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。

        例如,多项式x^{3}-2x^{2}-5x+6 的伴随矩阵。

        可以求出伴随矩阵的特征值,该特征值等于多项式方程的根。

        (5)帕斯卡矩阵

  • 根据二项式定理,(x+y)^n展开后的系数随着n的增大组成一个三角形表,这个三角形称为杨辉三角形。
  • 把二项式系数依次填写在矩阵的左侧对角线上,然后提前左侧的n行n列元素即为n阶帕斯卡矩阵。

  • 帕斯卡矩阵的第一行元素和第一列元素都为1,其余位置的元素是该元素的左边元素与上面元素相加,即P(i,j)=P(i,j-1)+P(i-1,j),且P(i,1)=1,P(1,i)=1。
  • 函数pascal(n)生成一个n阶帕斯卡矩阵。

        例三 生成5阶帕斯卡矩阵,验证他的所有元素都为整数。


2.2矩阵变换

2.2.1对角阵

  • 对角阵:只有对角线上有非零元素的矩阵
  • 数量矩阵:对角线上的元素相等的对角矩阵
  • 单位矩阵:对角线上的元素都为1的对角矩阵

(1)提取矩阵的对角线元素

  • diag(A):提取矩阵A主对角线元素,产生一个列向量。
  • diag(A,k):提取矩阵A第k条对角线的元素,产生一个列向量。

(2)构造对角阵

  • diag(V):以向量V为主对角线元素,产生对角矩阵。
  • diag(V,k):以向量V为第k条对角线元素,产生对角矩阵。

例1 先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行元素乘以2,……,第五行乘以5。

要将A的各列元素分别乘以对角线的对角线元素,如何实现?

2.2.2三角阵

  • 上三角阵:矩阵的对角线以下的元素全为零的矩阵。
  • 下三角阵:对角线以上的元素全为零的矩阵。

(1)上三角矩阵

  • triu(A):提取矩阵A是主对角线即以上的元素。
  • triu(A,k):提取矩阵A的第k条对角线及以上的元素

(2)下三角矩阵

在MATLAB中,提取矩阵A的下三角矩阵的函数tril,其用法与triu函数完全相同。

2.2.3矩阵的转置

  • 转置运算符是小数点后面接单引号(.')。
  • 共轭转置,其运算符是单引号('),它在转置的基础上还要取每个数的副共轭。

  • 矩阵的转置:把源矩阵的第一行变成目标矩阵的第一列,第二行变成第二列,……,以此类推。
  • 如果矩阵的元素是实数,那么转置和共轭转置的结果是一样的。

2.2.4矩阵的旋转

        rot90(A,k):将矩阵A逆时针方向旋转90°的k倍,当k为1时可以省略。

2.2.5矩阵的翻转

        对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,……,依次类推。

  • fliplr(A):对矩阵A实施左右翻转。
  • flipud(A):对矩阵A实施上下翻转。

例2 验证魔方阵的主对角线、副对角线元素之和相等。

  • 对矩阵A实施上下翻转得到矩阵B,这样矩阵A的副对角线就移到了B的对角线。
  • 5阶魔方阵的主对角线、副对角线元素之和相等,都为65。

2.2.6矩阵求逆

  • 对于一个方阵A,如果存在一个与其同阶的方阵B,使得AB=BA=I(I为单位矩阵),则称B为A的逆矩阵,当然,A也是B的逆矩阵。
  • inv(A):求方阵A的逆矩阵。


2.3矩阵求值

2.3.1矩阵的行列式值

  • 把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为所对应的行列式的值。
  • det(A):求方阵A所对应的行列式的值。

例1  验证det(A^{-1})= 1 / det(A)。

2.3.2矩阵的秩

  • 矩阵线性无关的行数或列数称为矩阵的秩。
  • rank(A):求矩阵的A的秩。

例2  求3~20 阶魔方阵的秩。

  • 奇数阶魔方矩阵秩为n,即奇数阶魔方阵是满秩矩阵。

  • 一重偶数阶魔方阵秩为n/2 + 2(n是2的偶数,但非4的倍数)。

  • 双重偶数阶魔方阵秩均为3(阶数是4的倍数)。

2.3.3矩阵的迹

  • 矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。
  • trace(A):求矩阵A的迹。

2.3.4矩阵的范数

        矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。

        (1) 向量的3种常用范数
  • 向量1——范数: 向量元素的绝对值之和。

  • 向量2——范数:向量元素绝对值的平方和的平方根。

  • 向量∞——范数:所有向量元素绝对值中的最大值。

        在MATLAB中,求向量范数的函数为:

  • norm(V)或norm(V,2):计算向量V的2——范数。
  • norm(V,1):计算向量V的1——范数。
  • norm(V,inf):计算向量V的∞——范数。
        (2) 矩阵的范数
  • 矩阵A的1——范数:所有矩阵元素绝对值之和的最大值。

  • 矩阵A的2——范数:A’A矩阵的最大特征值的平方根。

        其中\lambda 1为A’A的最大特征值。

  • 矩阵A的∞——范数:所有矩阵行元素绝对值之和的最大值。

MATLAB提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。

2.3.5矩阵的条件数

  • 矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。
  • 条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差。

在MATLAB中,计算矩阵A的3种条件数的函数是:

  • cond(A,1):计算A的1——范数下的条件数。
  • cond(A)或cond(A,2):计算A的2——范数数下的条件数。
  • cond(A,inf):计算A的∞——范数下的条件数。

例3  求2~10阶希尔伯特矩阵的条件数。


2.4 矩阵的特征值与特征向量

2.4.1 矩阵特征值的数学定义

        设A是n阶方阵,如果存在常数\lambda和n维非零列向量x,使得等式Ax=\lambdax成立,则称\lambda为A的特征值,x是对应特征值\lambda的特征向量。

2.4.2 求矩阵的特征值与特征向量

        在MATLAB中,计算矩阵的特征值和特征向量的函数是eig,常用调用格式有两种:

  • E=eig(A):求矩阵A的全部特征值,构成向量E。
  • [X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量。

        A矩阵的特征值有R矩阵的特征值和S矩阵的特征值组成,关于A矩阵每个特征值的特征向量,前三个特征向量的前三个元素是R的特征向量,后两个特征向量的后两个元素是S的特征向量,运算结果与结论相符。

2.4.3 特征值的几何意义

  •  定义变化矩阵A,再利用A对x进行变化,得到Y矩阵,最后分别绘制变换前后的图形,M原来是正体,变化后改为斜体。
  • 启示:在构建字库时,不必单独创建斜体字库,而只需对正体字库进行适当的线性变换即可,这样可以大大节省存储空间。

2.5 稀疏矩阵

2.5.1 矩阵的存储方式

  • 完全存储方式:将矩阵的全部元素按列存储。
  • 稀疏存储方式:只存储矩阵的非零元素的值及其位置,即行号和列号。

    注意:采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按列的顺序进行存储。

A=\begin{bmatrix} 1 &0 &0 &0 \\ 0& 5&0 &0 \\ 2 & 0& 0 & 7 \end{bmatrix}

A矩阵的稀疏存储方式:

(1,1),1

(3,1),2

(2,2),5

(3,4),7

当矩阵的规模很大时,采用稀疏存储方式可大大节约存储空间。

2.5.2 稀疏存储方式的产生

        (1)完全存储方式与稀疏存储方式之间的转化
  • A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A。
  • S=full(A):将矩阵A转化为完全存储方式的矩阵S。

        (2) 直接建立稀疏存储矩阵

        sparse函数的其他调用格式:

  • sparse(m,n):生成一个m×n的所有元素都是零的稀疏矩阵。
  • sparse(u,v,S):其中u、v、S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别是S(i)的行和列下标。

         使用spconvert函数直接建立稀疏存储矩阵,其调用格式为:

        B=spconvert(A)

        其中,A为一个m×3或m×4的矩阵,其每行表示一个非零元素,m是非零元素的个数。

  • A(i,1)表示第i个非零元素所在的行。
  • A(i,2)表示第i个非零元素所在的列。
  • A(i,3)表示第i个非零元素值的实部。
  • A(i,4)表示第i个非零元素值的虚部。

        若矩阵的全部元素都是实数,则无需第4列。

        (3)带状稀疏矩阵的稀疏存储
  • 稀疏矩阵有两种基本类型,无规则结构的稀疏矩阵与有规则结构的稀疏矩阵。
  • 带状稀疏矩阵就是一种十分典型的具有规则结构的稀疏矩阵,它是指所有非零元素集中在对角线上的矩阵。 
  • [B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d。
  • A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的行数和列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。

         利用带状稀疏矩阵非零对角线元素组成的矩阵B,以及对角线位置组成的向量d,命令执行后产生一个稀疏存储矩阵A。

总结

        用spdiags函数产生带状稀疏矩阵的稀疏存储A:

        A=spdiags(B,d,m,n)

        其中,m、n为原带状矩阵的行数和列数。B为r×p矩阵,这里r=min(m,n),p为原带状矩阵所有非零对角线条数。矩阵B的第i列即为原带状矩阵的第i条非零对角线。取值方法是:若非零对角线上元素个数等于r,则取全部元素;若非零对角线上元素个数小于r,则应该用零补足到r个元素。补零的原则是:若m<n(行数<列数),则d<0时(主对角线以下)在前面补0,d>0时(主对角线以上)在后面补零;当m>=n(行数>=列数),则d<0时在后面补零;d>0时在前面补零。

        (4)单位矩阵的稀疏存储

        speye(m,n)返回一个m×n的稀疏单位矩阵。

2.5.3 稀疏矩阵的应用实例

        求下列三对角线性方阵组的解。

 


总结

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值