应用MATLAB求解线性代数题目(二)——矩阵

目录

矩阵的秩

矩阵A与B的和与差

矩阵的数乘

矩阵A与B的乘积

转置矩阵

伴随矩阵

可逆矩阵:

简化行阶梯(行最简)矩阵

矩阵A的n次方


矩阵的秩

先看一下矩阵的秩的定义,摘自百度百科。

方阵(行数、列数相等的矩阵)的列秩和行秩总是相等的,因此它们可以简单地称作矩阵A。通常表示为r(A),rk(A)或rank(A)。

m × n矩阵的秩最大为mn中的较小者,表示为 min(m,n)。有尽可能大的秩的矩阵被称为有满秩;类似的,否则矩阵是秩不足(或称为“欠秩”)的。

设A是一组向量,定义A的极大无关组中向量的个数为A的秩。

定义1. 在m*n矩阵A中,任意决定α行和β列交叉点上的元素构成A的一个k阶子矩阵,此子矩阵的行列式,称为A的一个k阶子式。

例如,在阶梯形矩阵中,选定1,3行和3,4列,它们交叉点上的元素所组成的2阶子矩阵的行列式 就是矩阵A的一个2阶子式。

定义2. A=(aij)m×n的不为零的子式的最大阶数称为矩阵A的秩,记作rA,或rankA或R(A)。

特别规定零矩阵的秩为零。

即存在r阶子式不为0,任意r+1阶子式(若还有)必全为0。

显然rA≤min(m,n) 易得:

若A中至少有一个r阶子式不等于零,且在r<min(m,n)时,A中所有的r+1阶子式全为零,则A的秩为r。

由定义直接可得n阶可逆矩阵的秩为n,通常又将可逆矩阵称为满秩矩阵, det(A)≠0;不满秩矩阵就是奇异矩阵,det(A)=0。

由行列式的性质知,矩阵A的转置AT的秩与A的秩是一样的,即rank(A)=rank(AT)。

MATLAB求解矩阵的秩:

>> A=[1 2 3;4 5 6;7 8 9]

A =

     1     2     3
     4     5     6
     7     8     9

>> rank(A)

ans =

     2

矩阵A与B的和与差

相加和相减。相同维数的矩阵可以相加或相减。对如下矩阵:

>> 	A=[2 3;4 5;6 7]

A =

     2     3
     4     5
     6     7

>> B = [1 0;2 3;0 4]

B =

     1     0
     2     3
     0     4

>> A+B

ans =

     3     3
     6     8
     6    11

>> A-B

ans =

     1     3
     2     2
     6     3

矩阵的数乘

>> A=[2	3;4	5;6	7]

A =

     2     3
     4     5
     6     7

>> 5*A

ans =

    10    15
    20    25
    30    35

矩阵A与B的乘积

进行矩阵的乘积运算,第一个矩阵中的列数与第二个矩阵中的行数必须相等。

注意:矩阵相乘不满足交换定理。

>> A=[2	3;4	5;6	7];
>> B=[1 0 2;3 0 4];
>> A*B

ans =

    11     0    16
    19     0    28
    27     0    40

如果第一个矩阵中的列数与第二个矩阵中的行数不相等相等,那么矩阵A与B相乘会报错。

>> A=[2    3;4    5;6    7];
>> B = [1 0;2 3;0 4];
>> A*B
错误使用  * 
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。

MATLAB给出点乘的提示。矩阵的点乘满足交换律。

 矩阵的点乘则必须满足:矩阵A点.*矩阵B,矩阵A和矩阵B的行数和列数必须相等(就是说矩阵A的行数等于矩阵B的行数,矩阵A的列数等于矩阵B的列数),方法是对应每个元素相乘,相乘得到的最终结果为和矩阵A和矩阵B相同维度的矩阵。

>> A=[2	3;4	5;6	7];
>> B = [1 0;2 3;0 4];
>> A.*B  %即2=2*1,0=3*0,8=4*2

ans =  

     2     0
     8    15
     0    28

叉乘和点乘是两种不同的运算。

点乘,也叫数量积。结果是一个向量在另一个向量方向上投影的长度,是一个标量。

叉乘,也叫向量积。结果是一个和已有两个向量都垂直的向量。

(4 条消息) 点乘和叉乘的区别是什么? - 知乎 (zhihu.com)(4 条消息) 点乘和叉乘的区别是什么? - 知乎 (zhihu.com)

转置矩阵

A =

     1     2     3
     4     5     6
     7     8     9

>> B=A'

B =

     1     4     7
     2     5     8
     3     6     9

伴随矩阵

运用adjoint()函数,意为伴随。

 A=[1 2;3 4]

A =

     1     2
     3     4

>> adjoint(A)

ans =

    4.0000   -2.0000
   -3.0000    1.0000

>> A=[1 2 3;4 5 6;7 8 9]

A =

     1     2     3
     4     5     6
     7     8     9

>> adjoint(A)

ans =

   -3.0000    6.0000   -3.0000
    6.0000  -12.0000    6.0000
   -3.0000    6.0000   -3.0000

对于可逆矩阵或非奇异矩阵,可采用下面这种方法:

>> A=[1 3;1 2];
>> inv(A)*det(A)

ans =

     2    -3
    -1     1

可逆矩阵:

根据线性代数矩阵的一些重要性质:

 那么可逆矩阵指的都是n阶方阵且行列式不等于0

>> A=[1 3;1 2];
>> inv(A)

ans =

    -2     3
     1    -1

>> A*ans

ans =

     1     0
     0     1

或者采用这种方法:

>> A=[1 3;1 2]

A =

     1     3
     1     2

>> A^-1

ans =

    -2     3
     1    -1

某些情况下会出现行列式为零,竟然可以求解逆矩阵?的情况,原因一般是inv()函数算法精度不够的问题;亦或者是行列式结果看起来为零未必真为零,可能只是很小的数值,比如在command window里默认只显示了几位小数,看起来结果是0.0000(MATLAB默认显示四位小数),但实际上并不一定为0。

inv是数值计算,会受到精度影响,尤其是比较大的矩阵
另外,matlab更推荐使用左除和右除来避免使用inv函数

 

>> a = [1,2;3 4];
b = [3,4;5,6];
>> a*inv(b)

ans =

    2.0000   -1.0000
    1.0000    0.0000

>> a/b  %实际工程应用中一般选择这种方式,运算结果更加准确

ans =

    2.0000   -1.0000
    1.0000   -0.0000

简化行阶梯(行最简)矩阵

A =

     1     2     3
     4     5     6
     7     8     9

>> B=rref(A)

B =

     1     0    -1
     0     1     2
     0     0     0

对于非方阵也可以用rref()命令简化行阶梯矩阵;

>> A = magic(3);
A(:,4) = [1; 1; 1]

A =

     8     1     6     1
     3     5     7     1
     4     9     2     1

>> R = rref(A)

R =

    1.0000         0         0    0.0667
         0    1.0000         0    0.0667
         0         0    1.0000    0.0667

矩阵A的n次方

>> A=[0 0 0;2 0 0;1 3 0]

A =

     0     0     0
     2     0     0
     1     3     0

>> A^2

ans =

     0     0     0
     0     0     0
     6     0     0

>> A^3

ans =

     0     0     0
     0     0     0
     0     0     0

 我是小韩每天进步一点点,一名研0的研究生,刚开始写博客。希望和大家多多交流,一起进步!

求朋友点赞、收藏、关注哈,鼓励一下新人博主,或者提出建议!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值