应用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的研究生,刚开始写博客。希望和大家多多交流,一起进步!

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

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整全套资源下载地址:https://download.csdn.net/download/qq_27595745/61020977 【完整课程列表】 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 01 计算机数学语言描述(共24页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 02 MATLAB语言程序设计基础(共57页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 03 微积分问题的计算机求解(共111页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 04 线性代数问题的计算机求解(共155页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 05 积分变换域复变函数问题的计算机求解(共90页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 06 代数方程与最优化问题的计算机求解(共67页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 07 微分方程问题的计算机求解(共130页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 08 数据插值 函数逼近问题的计算机求解(共100页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 09 概率论与数理统计问题的计算机求解(共104页).ppt 精品推荐教程 清华大学出品 高等应用数学问题的MATLAB求解 10 数学问题的非传统解法(共148页).ppt 00readme.ppt

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值