c++求矩阵的秩_科学计算 | MATLAB矩阵分析处理

f9cc364bd6cdcc700bd94ae363119f70.gif

点击“蓝字”关注我们

bc052cd5e41e5b3620fed7510b77583f.png

科学计算 | MATLAB矩阵分析处理

01

特殊矩阵

1.通用特殊矩阵

  • zeros函数:产生全0矩阵,即零矩阵。

  • ones函数:产生全1矩阵,即幺矩阵。

  • eye函数:产生对角线为1的矩阵。当矩阵是方阵,得到一个单位矩阵。

  • rand函数:产生(0,1)区间均匀分布的随机矩阵。

  • randn函数:产生均值为0,方差为1的标准正态分布随机矩阵。

   zeros函数的调用格式:

  • zeros(m):产生m*m零矩阵。

  • zeros(m,n):产生m*n零矩阵。

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

>> A=zeros(3,2)A =     0     0     0     0     0     0>> zeros(size(reshape(A,2,3)))ans =     0     0     0     0     0     0

2.用于专门学科的特殊矩阵

  • 魔方矩阵

>> M=magic(3)M =     8     1     6     3     5     7     4     9     2

n阶魔方阵由1,2,3,…,n²个整数组成,且每行、每列以及主、副对角线上各n个元素之和都相等。

n>2 时有很多不同的n阶魔方阵,matlab函数 magic(n)产生一个特定的魔方阵。
  • 范德蒙矩阵

    在matlab中,函数vander(V)生成以向量V为基础的范德蒙矩阵。

    e68144d072aba8fa7f89d0227b47f788.png

>> A=vander(1:3)A =     1     1     1     4     2     1     9     3     1
  • 希尔伯特矩阵

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

4faf2df0b91d2703c5079c9a31b515db.png

>> format rat     %定义输出显示格式为有理分式>> A=hilb(3)A =       1              1/2            1/3            1/2            1/3            1/4            1/3            1/4            1/5     
  • 伴随矩阵

matlab生成伴随矩阵的函数是 compan(p),其中p是一个多项式的系统向量,高次幂系数排在前,低次幂系数排在后。

e9ba3b31bc13956bfd9e7bf12d8e36a0.png

>> p=[1,3,-1,6];     %多项式x³+3x²-x+6>> A=compan(p)A =      -3              1             -6              1              0              0              0              1              0       
  • 帕斯卡矩阵

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

906dbdada911eb4f9a65c18b16f4c47a.png20980db34ca3a8d355d6514bae7620ad.png

02

矩阵变换

1.对角阵

  • 对角矩阵:只有对角线上有非零元素的矩阵。

  • 数量矩阵:对角线上的元素相等的对角矩阵。

  • 单位矩阵:对角线上的元素都为1的对角矩阵。

⑴提取矩阵的对角线元素

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

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

⑵构造对角矩阵

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

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

>> A=[1,2,3;4,5,6;7,8,9];>> diag(A)ans =       1              5              9       >> diag(1:3)ans =       1              0              0              0              2              0              0              0              3

2.三角阵

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

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

⑴上三角矩阵

  • triu(A):提取矩阵A的主对角阵及以上的元素。

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

⑵下三角阵

在matlab中,提取矩阵A的下三角矩阵的函数 tril,其用法与triu函数完全相同。
>> A=[1,2,3;4,5,6;7,8,9];>> triu(A)ans =       1              2              3              0              5              6              0              0              9

3.矩阵的转置

转置运算符是小数点后面接单引号(.')。共轭转置,其运算符是单引号('),它在转置的基础上还要取每个数的复共轭。
>> A=[1+i,2-i;3+i,4-i,];>> A.'ans =       1        +    1i             3        +    1i             2        -    1i             4        -    1i      >> A'ans =       1        -    1i             3        -    1i             2        +    1i             4        +    1i

4.矩阵的旋转

rot90(A,k):将矩阵A逆时针方向旋转90度的k倍, 当k为1时可忽略。
>> A=[1,2,3;4,5,6;7,8,9];>> rot90(A)ans =       3              6              9              2              5              8              1              4              7

5.矩阵的翻转

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

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

>>  A=[1,2,3;4,5,6;7,8,9];>> flipud(A)ans =       7              8              9              4              5              6              1              2              3       >> fliplr(A)ans =       3              2              1              6              5              4              9              8              7

6.矩阵的求逆

定义:对于一个方阵A,如果存在一个与其方阵B,使得AB=BA=I(I为单位矩阵),则称B为A的逆矩阵,当然A也是B的逆矩阵。(常用于解线性方程组) inv(A):求方阵A的逆矩阵。

03

矩阵求值

1.方阵的行列式

把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为方阵所对应的行列式的值。 det(A):求方阵A所对应的行列式的值。
>> A = [1 -2 4; -5 2 0; 1 0 3];>> det(A)ans =     -32

2.矩阵的秩

矩阵线性无关的行数或列数称为矩阵的秩。 rank(A):求矩阵A的秩。
>> A = [3 2 4; -1 1 2; 9 5 10];>> rank(A)ans =       2

3.矩阵的迹

矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。 trace(A):求矩阵A的迹。
>> A=[1,2,3;4,5,6;7,8,9];>> trace(A)ans =      15

4.向量和矩阵的范数

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

⑴向量的3种常用范数

向量1—范数:向量元素的绝对值之和向量2—范数:向量元素绝对值的平方和的平方根向量∞—范数:所有向量元素绝对值中的最大值

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

norm(V)或 norm(V,2):计算向量V的2—范数 norm(V,1):计算向量V的1—范数 norm(V,inf):计算向量V的∞—范数

⑵矩阵的范数

矩阵A的1—范数:矩阵列元素绝对值之和的最大值矩阵A的2—范数:A'A矩阵的最大特征值的平方根矩阵A的∞—范数:所有矩阵行元素绝对值之和的最大值在matlab提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。
>> a=(1:3)a =       1              2              3       >> norm(a,1)ans =       6

5.矩阵的条件数

矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。条件数越接近于1,矩阵的性能越好,反之矩阵的性能越差。
  • cond(A,1):计算A的1—范数下的条件数

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

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

04

矩阵的特征值和特征向量

1.矩阵特征值的数学定义:

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

  • E=eig(A):求矩阵A的全部特征值,构成向量E。

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

>> A = [1 -2 4; -5 2 0; 1 0 3];>> E=eig(A)E =   -1244/573       1261/230       1648/613

05

稀疏矩阵

定义:零元素的个数远远多于非零元素的个数的矩阵。

1.矩阵的存储方式

  • 完全存储方式:将矩阵的全部元素按列存储。

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

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

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

2.稀疏存储方式的产生

⑴完全存储方式与稀疏存储方式之间的转化

  • A=sprase(S):将矩阵S转化为稀疏矩阵存储方式的矩阵A。

  • S=full(A):将矩阵A转化为完全存储方式的矩阵S。

>> A=sparse(eye(3))A =   (1,1)          1          (2,2)          1          (3,3)          1       >> B=full(A)B =       1              0              0              0              1              0              0              0              1

⑵直接建立稀疏存储矩阵

sparse函数的其他调用格式:

  • sparse(m,n):生成一个m*n的所有元素都是零的稀疏矩阵。

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

>> A=sparse([1,2,2],[2,1,4],[4,5,7])A =   (2,1)          5          (1,2)          4          (2,4)          7       >> B=full(A)B =       0              4              0              0              5              0              0              7       

使用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列。
>> A=[2,2,1;2,1,-1;2,4,3]A =       2              2              1              2              1             -1              2              4              3       >> B= spconvert(A)B =   (2,1)         -1          (2,2)          1          (2,4)          3

⑶带状稀疏矩阵的稀疏存储方式

  • 稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵与有规则的稀疏矩阵。

  • 带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。

  • [B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d。

  • A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的行数与列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。

>> A=[12,0,2,0;0,13,0,3;6,0,8,0]A =      12              0              2              0              0             13              0              3              6              0              8              0       >> [B,d]=spdiags(A)B =       0             12              2              0             13              3              6              8              0       d =      -2              0              2     >> A=spdiags(B,d,3,4)A =   (1,1)         12          (3,1)          6          (2,2)         13          (1,3)          2          (3,3)          8          (2,4)          3         

⑷单位矩阵的稀疏存储

speye(m,n):返回一个m*n的稀疏存储矩阵单位矩阵。

>> speye(3)ans =   (1,1)          1          (2,2)          1          (3,3)          1

在大学我们一般都会学线性代数这门基础课,我们都知道其中最复杂就是数值计算,所以在传统的教学内容上老师会着重强调其定义、性质和定理,把复杂的问题通过一些性质转化成简单的问题,但在实际问题中,往往涉及到的线性方程组和矩阵是大规模的,人工计算是非常不容易的,这也导致我们在学习线性代数的时候觉得无趣。我想如果在学习线性代数理论课的基础上增加实验课学分,这样将理论与实验相结合,反而能增加同学们的学习积极性。

在这个寒冷的时节里

因为有你的关注

而变得温暖

欢迎大家评论下方留言!

203341ac9a85efc88ce79c0c2a92fdf0.png 7776b992cb3530ec08da50985c7d3f3a.png

你“在看”我吗?

234b27d01a53a126be3a40c445bfb9d0.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值