概述
《MATLAB课件第八章线性代数基础》由会员分享,可在线阅读,更多相关《MATLAB课件第八章线性代数基础(15页珍藏版)》请在人人文库网上搜索。
1、第八章 线性代数基础1.矩阵的重要运算1.1方阵的行列式方阵的行列式的值由det函数计算得出;【例1】 计算矩阵A=1 2 2;2 3 5;4 5 7的行列式的值。 A=1 2 2;2 3 5;4 5 7;det(A)ans =4【例2】 计算矩阵A=a b;c d的行列式的值。 syms a b c d;A=a b;c d,det(A)A = a, b c, dans =a*d-b*c1.2矩阵的秩矩阵的秩由rank函数来计算。【例3】 计算矩阵A=1 2 2;2 3 5;4 5 7的秩。 rank(A)ans =31.3矩阵的维数和长度size() % 求矩阵的维数 (columns & 。
2、rows)。length() % 求矩阵的长度,矩阵的长度用向量(或columns)数定义。表示的是矩阵的列数和行数中的最大数。【例4】 a=10,20,42;34,20,4;198,34,6;10 20 30; size(a) ans =4 3 length(a) ans =4注意size(a)与length(a)两者之间的区别。1.4矩阵的迹矩阵的迹定义为该矩阵对角线上的各元素之和,也等于该矩阵的特征值之和。Matlab调用格式为:trace();【例5】求矩阵A=1 2 30;2 20 3;3 2 11的迹 A=1 2 30;2 20 3;3 2 11;trace(A)ans =321.。
3、5 转置运算在MATLAB中,矩阵转置运算的表达式和线性代数一样,即对于矩阵,其转置矩阵的MATLAB表达式为A或transpose(A)。但应该注意,在MATLAB中,有几种类似于转置运算的矩阵元素变换运算是线性代数中没有的,他们是:fliplr(A) 将A左右翻转;flipud(A) 将A上下翻转;rot90(A) 将A逆时针方向旋转90。【例6】求矩阵A=1 2 30;2 20 3;3 2 11的转置矩阵 A=1 2 30;2 20 3;3 2 11,B=AA =1 2 302 20 33 2 11B =1 2 32 20 230 3 11 transpose(A)ans =1 2 32。
4、 20 230 3 11 rot90(A)ans =30 3 112 20 21 2 31.6 逆矩阵运算矩阵的逆运算是矩阵运算中很重要的一种运算。它在线性代数及计算方法中都有很多的论述,而在MATLAB中,众多的复杂理论只变成了一个简单的命令inv()。【例7】 求矩阵A=1 2; 3 4的逆矩阵。 A=1 2;3 4,invA=inv(A),A*invAA =1 23 4invA =-2.0000 1.00001.5000 -0.5000ans =1.0000 00.0000 1.0000从ans变量的结果可以看出,A的逆矩阵没有求错。在线性代数教材中,通常采用初等行变换的方式来求解矩阵的。
5、逆。这样的方法可以用以下方法可以实现: A=1 2;3 4,n=size(A);A1=A,eye(n);A2=rref(A1);invA=A2(:,1+n(1):end)A =1 23 4invA =-2.0000 1.00001.5000 -0.5000【例8】求矩阵A=a b;c d的逆矩阵。 syms a b c d;A=a b;c d;invA=inv(A)invA = d/(a*d-b*c), -b/(a*d-b*c) -c/(a*d-b*c), a/(a*d-b*c)1.7 广义逆矩阵由线代知识知道,如果矩阵奇异,则逆矩阵不存在,另外,长方形的矩阵有时也会涉及到求逆的问题,这样就需。
6、要定义一种新的“逆矩阵”。对于矩阵A,如果存在一个矩阵N,满足ANA=A,则N矩阵称为A的广义逆矩阵,记作,如果A是一个nm的长方形矩阵,则N为mn阶的矩阵。满足这样的广义逆矩阵有无穷多个。可以证明,对于一个给定的矩阵A,存在一个唯一的矩阵M使得下面的3个条件同时成立:1) AMA=A 2) MAM=M 3)AM与MA均为对称矩阵这样的矩阵称为矩阵的oore-Penrose广义逆矩阵,记作。MATLAB提供了求取矩阵oore-Penrose广义逆矩阵的函数pinv(),其格式为:M=pinv(A) %按默认精度求取oore-Penrose广义逆矩阵M=pinv(A,e) %按指定精度e求取oo。
7、re-Penrose广义逆矩阵其中,e为判0用误差限,如果省略此参数,则判0用误差限选用机器的精度eps.如果A是非奇异方阵,则该函数得出的结果就是矩阵的逆矩阵,但这样求解的速度将明显慢于函数inv().【例9】求奇异矩阵A=1 2;3 6的广义逆矩阵 pinv(A);M=pinv(A),A*M*A,M*A*M,A*M,M*AM =0.0200 0.06000.0400 0.1200ans =1.0000 2.00003.0000 6.0000ans =0.0200 0.06000.0400 0.1200ans =0.1000 0.30000.3000 0.9000ans =0.2000 0.。
8、40000.4000 0.8000从结果可以看出,所求的广义逆矩阵满足以上的三个条件。【例10】 求矩阵A=1 2; 3 4的广义逆矩阵。 A=1 2; 3 4;invA=pinv(A)invA =-2.0000 1.00001.5000 -0.50001.8伴随矩阵Matlab中没有直接求矩阵的伴随矩阵的函数,引入伴随矩阵的概念,实际上是为了求逆阵,一般数学软件都有求逆阵的函数。如果A可逆,则A*=|A|A(-1),伴随矩阵是容易求得的;【例11】求矩阵A=1 0 1;2 1 2;0 4 6的伴随矩阵。 A=1 0 1;2 1 2;0 4 6,bsjz=det(A)*inv(A)A =1 0。
9、 12 1 20 4 6bsjz =-2 4 -1-12 6 08 -4 1下面是自编的函数bansui(),可以直接求得伴随矩阵,但注意一定要将该函数保存在搜索路径之下。function B = bansui(A)ce = poly(eig(A);cesize = max(size(ce);p = 0 ce(1:(cesize-1);s = (-1)(max(size(A)+1);B = s*polyvalm(p,A);【例12】求矩阵A=1 0 1;2 1 2;0 4 6的伴随矩阵 A=1 0 1;2 1 2;0 4 6;bsjz=bansui(A)bsjz =-2.0000 4.0000。
10、 -1.0000-12.0000 6.0000 08.0000 -4.0000 1.0000 det(A)ans =6 A*bsjzans =6.0000 0 0.00000.0000 6.0000 0.00000 0.0000 6.0000从上面结果可以看出,A*bsjz=det(A)*E【例13】求奇异矩阵A=1 2;3 6的伴随矩阵 A=1 2;3 6;bsjz=bansui(A)bsjz =6 -2-3 12.线性方程组求解我们将线性方程的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。可以通过系数矩阵的秩来判断:若系数矩阵的秩和增广矩阵的秩相等且等于n(n为。
11、方程组中未知变量的个数),则有唯一解;若系数矩阵的秩和增广矩阵的秩相等且rA=5 6 0 0 01 5 6 0 00 1 5 6 0 0 0 1 5 60 0 0 1 5; B=1 0 0 0 1;R_A=rank(A) %求秩X=AB %求解 或 X=inv(A)*B运行后结果如下R_A =5X =2.2662-1.72181.0571-0.59400.3188这就是方程组的解。解法2.用函数rref求解: C=A,B %由系数矩阵和常数列构成增广矩阵C R=rref(C) %将C化成行最简行R =1.0000 0 0 0 0 2.26620 1.0000 0 0 0 -1.72180 0 。
12、1.0000 0 0 1.05710 0 0 1.0000 0 -0.59400 0 0 0 1.0000 0.3188则R的最后一列元素就是所求之解。【例15】 求方程组的一个特解。解:A=1 1 -3 -1;3 -1 -3 4;1 5 -9 -8;B=1 4 0;X=AB %由于系数矩阵不满秩,该解法可能存在误差。X = 0 0 -0.5333 0.6000(一个特解近似值)。此时,不能采用如下命令:x=inv(A)*B,因为inv要求矩阵为方阵。而用命令:x=pinv(A)*B x = 0.3504 -0.0916 -0.3881 0.4232,可用A*x验算注:如果矩阵A不是一个方阵,。
13、或者A是一个非满秩的方阵时,A没有逆矩阵,但可以找到一个与A的转置同型的矩阵B,使得 A*B*A=A,B*A*B=B,此时称B为A的伪逆,也称广义逆矩阵。使用:pinv(A)若用rref求解,则比较精确: A=1 1 -3 -1;3 -1 -3 4;1 5 -9 -8;B=1 4 0; C=A,B; %构成增广矩阵 R=rref(C)R =1.0000 0 -1.5000 0.7500 1.25000 1.0000 -1.5000 -1.7500 -0.25000 0 0 0 0由此得解向量X=1.2500 0.2500 0 0(一个特解)。2.2 求线性齐次方程组的通解在Matlab中,函数。
14、nullnl 用来求解零空间,即满足AX=0的解空间,实际上是求出解空间的一组基(基础解系)。对齐次线性方程组Ax=0;格式 z = null(A) % z的列向量为方程组的正交规范基,满足。z=null(A,r) % z的列向量是方程AX=0的有理基如果A为数值矩阵,调用null(A,r);或 调用null(A)如果A为符号矩阵,只能调用null(A)【例16】 求解方程组的通解: 解:A=1 1 1 -1;1 -1 1 -3;1 3 1 1;format rat %指定有理式格式输出B=null(A,r) %求解空间的有理基运行后显示结果如下:B =-1 2 0 -1 1 0 0 1即方程。
15、组的通解为:若调用:c=null(A),则应: format short c=null(A)得:c =-0.5000 0.7071-0.1667 -0.47140.8333 0.23570.1667 0.4714或通过行最简型得到基: B=rref(A)B =1 0 1 -20 1 0 10 0 0 02.3 求非齐次线性方程组的通解非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。因此,步骤为:第一步:判断AX=b是否有解,若有解则进行第二步第二步:求AX=b的一个特解第三步:求AX=0的通解第四步:AX=b的通解= AX=0的通解+AX=b的一个特解。【例17】 求方程组的解解。
16、:A=1 0 1 -1;0 1 1 3;0 2 1 1;1 4 -7 6; B=1 -2 -8 0;R_A=rank(A) %求秩X=AB %求解 或 X=inv(A)*B回车可得:R_A =4X =3.0000-4.0000-1.00001.0000或采用简化行阶梯形方法: C=A,B;R=rref(C)R =1 0 0 0 30 1 0 0 -40 0 1 0 -10 0 0 1 1则R的最后一列元素就是所求之解。【例18】 求解方程组的通解:解法一:在Matlab编辑器中建立M文件如下:A=1 1 -3 -1;3 -1 -3 4;1 5 -9 -8;b=1 4 0;B=A b;n=4;R。
17、_A=rank(A)R_B=rank(B)format ratif R_A=R_B&R_A=nX=Abelseif R_A=R_B&R_A In D:Matlabpujunlx0723.m at line 11X =0 0 -8/15 3/5 C =3/2 -3/4 3/2 7/4 1 0 0 1 所以原方程组的通解为X=k1+k2+解法二:用rref求解A=1 1 -3 -1;3 -1 -3 4;1 5 -9 -8;b=1 4 0;B=A b;C=rref(B) %求增广矩阵的行最简形,可得最简同解方程组。运行后结果显示为:C =1 0 -3/2 3/4 5/4 0 1 -3/2 -7/4 。
18、-1/40 0 0 0 0 对应齐次方程组的基础解系为:, 非齐次方程组的特解为:所以,原方程组的通解为:X=k1+k2+。【例19】:编写程序求解AX=b,要求由人机交互模式输入矩阵A,b,并根据判定定理给出各种情况的求解答案。解:编写程序如下:A=input(Please input matrix A:);b=input(Please input matrix b:);B=A,b;n=size(A);R_A=rank(A);R_B=rank(B);format ratif R_A=R_B&R_A=n(2) X=Abelseif R_A=R_B&R_A mmPlease input matrix A:1 2;3 4Please input matrix b:1;2X = %方程组有唯一解的情况0 1/2 mmPlease input matrix A:1 2;2 4Please input matrix b:1;2X = %方程组有无穷多解的情况1/5 2/5 C =-2 1 mmPlease input matrix A:1 2;2 4Please input matrix b:1;3X = %方程组无解的情况equition no solve。
最后
以上就是高兴马里奥为你收集整理的matlab第八章答案,MATLAB课件第八章线性代数基础的全部内容,希望文章能够帮你解决matlab第八章答案,MATLAB课件第八章线性代数基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复