260 likes | 662 Views
第五章 矩阵与行列式. §5.6 用 MATLAB 计算 矩阵与行列式. 用 MATLAB 计算矩阵与行列式. 行列式的求值. 在 MATLAB 中我们只需借助函数 det 就可以求出行列式的值,其格式为. det (A). 其中 A 为 n 阶方阵.. 练习 5.14 求矩阵 的行列式的值.. 程序设计: >> clear >> A=[1 0 2 1;-1 2 2 3; 2 3 3 1;0 1 2 1]; >> det (A). 运行结果: ans= 14.
E N D
第五章 矩阵与行列式 §5.6用MATLAB计算 矩阵与行列式
用MATLAB计算矩阵与行列式 • 行列式的求值 在MATLAB中我们只需借助函数det就可以求出行列式的值,其格式为 det (A) 其中A为n阶方阵.
练习5.14求矩阵 的行列式的值. 程序设计: >> clear >> A=[1 0 2 1;-1 2 2 3; 2 3 3 1;0 1 2 1]; >> det (A) 运行结果: ans= 14 程序说明: 1.Clear的作用是清除内存中的变量. 2.矩阵的输入可以有两种格式,除程序中的输入方式外,还可以如下输入: A=[1,0,2,1;-1,2,2,3;2,3,3,1;0,1,2,1]
练习5.15计算行列式 程序设计: >> clear >> syms a b c d >> A=[a 1 0 0;-1 b 1 0;0 –1 c 1;0 0 –1 d]; >> DA=det (A) 声明变量 生成符号矩阵 运行结果: DA= 程序说明:函数det也可以用于计算含有变量的行列式.
矩阵的基本运算 • 矩阵的加、减 (1) 维数相同,即行数和列数都分别相等. (2) 矩阵相应位置的元素相加、减. • 练习5.14求矩阵 与矩阵 的和与差. 解 程序设计: >> clear >> A=[1 2 3;2 1 2;3 3 1]; >> B=[3 2 4;2 5 3;2 3 1]; >> C=A+B; >> D=A-B; >> C,D
运行结果: C= 4 4 7 4 6 5 5 6 2 D= -2 0 -1 0 -4 -1 1 0 0 例题分析: 1.进行加、减运算的矩阵必须是同型的. 2.在进行矩阵相加的运算时,A+B和B+A的值相同,满足加法交换律.
数与矩阵相乘,是数与矩阵中的每个元素相乘.数与矩阵相乘,是数与矩阵中的每个元素相乘. • 数与矩阵相乘 练习5.17求矩阵 与5的乘积 程序设计: >> clear >> A=[1 0 1;2 1 1;1 2 1]; >> B=5*A >> C=A*5
运行结果: B= 5 0 5 10 5 5 5 10 5 C= 5 0 5 10 5 5 5 10 5 程序说明:5*A与A*5的值相同.
两矩阵相乘时,第一个矩阵(左矩阵)的列数必须等于第二个矩阵(右矩阵)的行数.两矩阵相乘时,第一个矩阵(左矩阵)的列数必须等于第二个矩阵(右矩阵)的行数. • 矩阵与矩阵相乘 练习5.18 求 与 的乘积. 程序设计: >> clear >> A=[1 2 3;2 1 2;3 3 1]; >> B=[3 2 4;2 5 3;2 3 1]; >> C=A*B , D=B*A
运行结果: C= 13 21 13 12 15 13 17 24 22 D= 19 20 17 21 18 19 11 10 13 例题分析: 比较C和D,可以看出A*B和B*A的结果完全不同.
如果矩阵A是方阵且是非奇异的(可逆),可以用函数inv (A)求得A的逆矩阵. • 求矩阵的逆 练习5.19求矩阵 的逆矩阵. 程序设计: >> clear >> A=[1 –1 2;0 1 –1;2 1 0]; >> C= inv (A)
运行结果: C= -1 -2 1 2 4 -1 2 3 -1 程序说明: 如果矩阵不可逆,则运行结果会给出警告信息.
练习5.20利用矩阵的初等行变换求上例矩阵的逆.练习5.20利用矩阵的初等行变换求上例矩阵的逆. 程序设计: >> clear >> B=[1 –1 2 1 0 0;0 1 –1 0 1 0;2 1 0 0 0 1]; >> format rat >> C=rref (B) 矩阵A的增广矩阵 以有理格式输出 给出矩阵B的行最简形 C= 1 0 0 -1 -2 1 0 1 0 2 4 -1 0 0 1 2 3 -1
>> D=C(:,4:6) D= -1 -2 1 2 4 -1 2 3 -1 取矩阵C的4到6列, D即为矩阵A的逆矩阵 例题说明: 由线性代数的知识可知,矩阵A和其同型的单位矩阵E组成增广矩阵B,对B进行初等行变换,当矩阵A变为单位阵时,单位矩阵E变为矩阵A的逆.
在MATLAB中,矩阵相除可以利用运算符“\”(左除)和“/”(右除),而在线性代数中并没有定义矩阵的除法.在MATLAB中,矩阵相除可以利用运算符“\”(左除)和“/”(右除),而在线性代数中并没有定义矩阵的除法. • 矩阵相除 练习5.19 求矩阵 和 相除. 程序设计: >> clear >> A=[1 2 3;4 2 1;2 1 3]; >> B=[2 1 2;1 2 1;3 2 1]; >> C=A\B 矩阵左除,相当于inv(A)*B,inv(A)为矩阵A的逆
C= 0.3333 0.6000 -0.2000 -0.6667 -0.4000 0.8000 1.0000 0.40000 0.2000 >> D=A/B D= 1.3333 1.3333 -1.0000 0 -0.5000 1.5000 1.6667 0.1667 -0.50000 矩阵右除,相当于A*inv (B) 说明: 1.矩阵的左除和右除概念完全不同,要注意区分. 2.可以利用矩阵的左除求解线性方程组AX=b,其中 X=A\b. 3.可以利用矩阵的右除求解线性方程组XA=b,其中 X=b/A.
矩阵的秩 练习5.19求矩阵 的秩. 解:>>clear; >>A=[2 1 1 2;1 2 2 1;1 2 1 2;2 2 1 1]; >>rank(A) ans= 4 矩阵A的行向量 或列向量线性无关. rank(A)=4
求解线性方程组 • 齐次线性方程组 通过求系数矩阵 的秩来判断解的情况: (1) 如果系数矩阵的秩为n(方程组中未知数的个数),则方程组只有零解. (2) 如果系数矩阵的秩小于n,则方程组有无穷多解.
2.非齐次线性方程组AX=b 根据系数矩阵A的秩和增广矩阵B=[A b]的秩和未知数个数n的关系,判断方程组AX=b的解的情况: (1) 如果系数矩阵的秩等于增广矩阵的秩等于n,则方程组有唯一解. (2) 如果系数矩阵的秩等于增广矩阵的秩小于n,则方程组有无穷多解. (3) 如果系数矩阵的秩小于增广矩阵的秩,则方程组无解.
练习5.20求解方程组 解: >>clear >>A=[-1 –2 4;2 1 1;1 1 –1]; >>rank(A) ans= 2 >>rref(A) ans = 1 0 2 0 1 –3 0 0 0 说明方程有无穷多解,并且解为
练习5.21求解方程组 , 解 >> clear >> A=[2 1 2;2 1 4;3 2 1]; >> b=[3 1 7]’; >> X=A\b X= 2 1 -1
练习5.22求解方程组 >>clear >>A=[1 –1 1 –1;-1 1 1 –1;2 –2 –1 1]; >>b=[1 1 –1]’; >>C=[rank(A) rank([A b])] 解 C= 2 2 表示秩(a)=2,秩([a b])=2 小于未知数的个数4
再输入 >> rref([A b]) ans= 由表示行最简形矩阵,得通解 ( 为自由未知数)
习 题 • 习题1已知 求: (1) 的秩 (2) (3) (4)
习题2求解方程组 解: Matlab编程: >>A=[-1 1 -6;2 -1 2;1 3 -2]; >> b=[3 7 5]'; >> C=rank(A) >> rref([A b]) >> X=A\b
运行结果: C = 3 ans = 1.0000 0 0 4.5000 0 1.0000 0 -0.7500 0 0 1.0000 -1.3750 X = 4.5000 -0.7500 -1.3750