第三章MATLAB线性方程组_第1页
第三章MATLAB线性方程组_第2页
第三章MATLAB线性方程组_第3页
第三章MATLAB线性方程组_第4页
第三章MATLAB线性方程组_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章第三章 线性代数方程组及矩阵特征值线性代数方程组及矩阵特征值3.0 3.0 预备知识预备知识3.1 3.1 直接法直接法3.2 3.2 迭代法迭代法3.3 3.3 不可解问题不可解问题3.4 3.4 病态问题病态问题一、对角阵与三角阵一、对角阵与三角阵1、对角阵:、对角阵: udiag(a) 提取提取mn的矩阵的矩阵a 的主对角线上元素,生的主对角线上元素,生 成一个具有成一个具有min(m,n)个元素的列向量个元素的列向量 diag(a,k) 提取第提取第k条对角线的元素条对角线的元素udiag(v) 设设v为具有为具有m个元素的向量,将产生一个以个元素的向量,将产生一个以向量向量v的

2、元素为主对角线元素的的元素为主对角线元素的mm对角矩阵对角矩阵diag(v,k) 产生一个以向量产生一个以向量v的元素为第的元素为第k k条对角线的条对角线的元素的元素的nn(n=m+k)对角阵对角阵 2 2、 矩阵的三角阵矩阵的三角阵u 下三角矩阵下三角矩阵 tril(a) 提取矩阵提取矩阵a的下三角阵的下三角阵 tril(a,k) 提取矩阵提取矩阵a的第的第k条对角线以下的元素条对角线以下的元素u上三角矩阵上三角矩阵 triu(a) 提取矩阵提取矩阵a的上三角矩阵的上三角矩阵 triu(a,k) 提取矩阵提取矩阵a的第的第k条对角线以下的元素条对角线以下的元素二、二、 用于专门学科中的矩阵

3、用于专门学科中的矩阵(1) (1) 魔方矩阵魔方矩阵 魔方矩阵是每行、每列及两条对角线上魔方矩阵是每行、每列及两条对角线上的元素和都相等的矩阵。对于的元素和都相等的矩阵。对于n阶魔方阵,阶魔方阵,其元素由其元素由1,2,3,n2共共n2 个整数组成个整数组成. magic(n) 生成一个生成一个n阶魔方阵阶魔方阵,各行各列各行各列及两条及两条 对角线和为对角线和为(1+2+3+.+n2 )/n 例例 magic(5) ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9例:将例:将101125等等25个数

4、填入一个个数填入一个5行行5列的表格中,使列的表格中,使其每行每列及对角线的和均为其每行每列及对角线的和均为565。命令如下:。命令如下: m=100+magic(5)(2) (2) 范得蒙矩阵范得蒙矩阵 范得蒙范得蒙(vandermonde)矩阵最后一列全为矩阵最后一列全为1,倒,倒数第二列为一个指定的向量,其他各列是其后列与数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。倒数第二列的点乘积。 vander(v) 生成以向量生成以向量v为基础向量的范得蒙矩阵。为基础向量的范得蒙矩阵。 例例 a=vander(1;2;3;5) a = 1 1 1 1 8 4 2 1 27 9

5、3 1 125 25 5 1 (3) 希尔伯特矩阵(希尔伯特矩阵(hilbert) hilbert矩阵的每个元素矩阵的每个元素hij=1/(i+j-1) hilb(n) 生成生成n阶希尔伯特矩阵阶希尔伯特矩阵 invhilb(n) 专求专求n阶的希尔伯特矩阵的逆矩阵阶的希尔伯特矩阵的逆矩阵 注意注意1:高阶:高阶hilbert矩阵一般为病态矩阵,所以直矩阵一般为病态矩阵,所以直接求逆可能出现错误结论,故应该采用接求逆可能出现错误结论,故应该采用invhilb(n) 注意注意2:由于:由于hilbert矩阵本身接近奇异,所以建矩阵本身接近奇异,所以建议处理该矩阵时建议尽量采用符号运算工具箱,若议

6、处理该矩阵时建议尽量采用符号运算工具箱,若采用数值解时应该验证结果的正确性采用数值解时应该验证结果的正确性 (4) 托普利兹矩阵托普利兹矩阵 (toeplitz) toeplitz矩阵除第一行第一列外,其他每个元素都与矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。左上角的元素相同。 toeplitz(x,y) 生成一个以生成一个以x为第一列,为第一列,y为第一行的为第一行的托普利兹矩阵。这里托普利兹矩阵。这里x, y均为向量,两者不必等长。均为向量,两者不必等长。toeplitz(x)用向量用向量x生成一个对称的托普利兹矩阵。生成一个对称的托普利兹矩阵。 例例 t=toeplitz(

7、1:5,1:7) t = 1 2 3 4 5 6 7 2 1 2 3 4 5 6 3 2 1 2 3 4 5 4 3 2 1 2 3 4 5 4 3 2 1 2 3 (5) 帕斯卡矩阵帕斯卡矩阵 二次项二次项(x+y)n展开后的系数随展开后的系数随n的增大组成一的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡组成的矩阵称为帕斯卡(pascal)矩阵。矩阵。 pascal(n) 生成一个生成一个n阶帕斯卡矩阵。阶帕斯卡矩阵。pascal(6)ans = 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21

8、 1 4 10 20 35 5656 1 5 15 35 70 126 1 6 21 56 126 252例例 求求(x+y)5的展开式。的展开式。pascal(6)次对角线上的元素次对角线上的元素1,5,10,10,5,1即为即为展开式的系数。展开式的系数。三、三、向量和矩阵的范数向量和矩阵的范数u norm(v)或或norm(v,2) 求向量求向量v(或矩阵(或矩阵v )的的2范数范数u norm(v,1) 求向量求向量v(或矩阵(或矩阵v)的)的1范数范数u norm(v,inf) 求向量求向量v(或矩阵(或矩阵v)的的范数范数 例例 已知已知v,求,求v的的3种范数。种范数。 命令如下

9、:命令如下: v=-1,1/2,1; v1=norm(v,1) %求求v的的1范数范数 v2=norm(v) %求求v的的2范数范数 vinf=norm(v,inf) %求求v的的范数范数nniixxxxx 2111),(maxmax211ninixxxxx常用的向量范数常用的向量范数: :22221122|nniixxxxx 范数意义下的单位向量范数意义下的单位向量: x=x1, x2t1-11|x|1 = 111-1-1|x|2 = 1-111-1-1|x| = 11111/2maxmax211maxmaxnijj nitniji njaaaa aaa (b)表示矩阵b的最大特征值常用的矩

10、阵范数常用的矩阵范数: :例例 求矩阵求矩阵a的三种范数的三种范数命令如下:命令如下:a=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19; a1=norm(a,1) %求求a的的1范数范数 a2=norm(a) %求求a的的2范数范数 ainf=norm(a,inf) %求求a的的范数范数四、四、 矩阵的逆与伪逆矩阵的逆与伪逆1、 矩阵的逆(后面研究完矩阵的逆(后面研究完gauss消去法后还将给出消去法后还将给出求逆的方法)求逆的方法) 求方阵求方阵a的逆可用的逆可用 inv(a)注意:该函数也适用于符号变量构成

11、的矩阵的求逆注意:该函数也适用于符号变量构成的矩阵的求逆例例 用求逆矩阵的方法解线性方程组。用求逆矩阵的方法解线性方程组。 命令如下:命令如下: a=1,2,3;1,4,9;1,8,27; b=5,2,6; x=inv(a)*b 一般情况下,用左除一般情况下,用左除x=ab比求矩阵的逆的方法更比求矩阵的逆的方法更有效有效(因为因为a奇异或接近奇异时,用奇异或接近奇异时,用inv(a)可能出错可能出错)例:例:hilbert矩阵(非常有名的病态矩阵):矩阵(非常有名的病态矩阵):验证从验证从55到到1414的的hilbert矩阵病态特征矩阵病态特征clearformat long;for n=5

12、:14 h=hilb(n);norm1=norm(h*inv(h)-eye(size(h); h1=invhilb(n);norm2=norm(h*h1-eye(size(h);fprintf( n=%3.0f norm1=%e norm2=%en, n,norm1,norm2)end n= 5 norm1=1.409442e-011 norm2=3.637979e-012 n= 6 norm1=2.534893e-009 norm2=1.455203e-011 n= 7 norm1=9.810538e-008 norm2=5.208793e-010 n= 8 norm1=3.123671e-

13、006 norm2=4.822187e-008 n= 9 norm1=8.116595e-005 norm2=2.479206e-007 n= 10 norm1=2.645008e-003 norm2=1.612897e-005 n= 11 norm1=7.200720e-002 norm2=1.305122e-003warning: matrix is close to singular or badly scaled. results may be inaccurate. rcond = 2.632766e-017. n= 12 norm1=1.176913e+001 norm2=5.57

14、6679e-002warning: matrix is close to singular or badly scaled. results may be inaccurate. rcond = 2.339949e-018. n= 13 norm1=5.323696e+001 norm2=1.137063e+001warning: matrix is close to singular or badly scaled. results may be inaccurate. rcond = 1.708191e-019. n= 14 norm1=1.224232e+004 norm2=2.8362

15、98e+002说明说明1:对于对于hilbert求逆时,不建议用求逆时,不建议用inv,可用可用 invhilb直接产生逆矩阵直接产生逆矩阵说明说明2:符号工具箱中也对符号矩阵定义了符号工具箱中也对符号矩阵定义了inv( )函数函数,即使对更高阶的奇异矩阵也可以精确的求解出逆矩阵即使对更高阶的奇异矩阵也可以精确的求解出逆矩阵例:例:h=sym(hilb(30);norm(double(h*inv(h)-eye(size(h) 结果为结果为ans = 0说明说明3:对于奇异对于奇异矩阵用数值方法的矩阵用数值方法的inv( )函数,会给出函数,会给出错误的结果,但符号工具箱中的错误的结果,但符号工

16、具箱中的inv( )会给出正确的结论会给出正确的结论例例 a=16,2,3,13;5,11,10,8; 9,7,6,12;4,14,15,1; det(a) b=inv(a)结果:结果:ans = 0warning: matrix is close to singular or badly scaled. results may be inaccurate. rcond = 1.306145e-017.b = 1.0e+014 * 0.93824992236885 2.81474976710656 -2.81474976710656 -0.93824992236885 2.8147497671

17、0656 8.44424930131968 -8.44424930131968 -2.81474976710656 -2.81474976710656 -8.44424930131968 8.44424930131968 2.81474976710656 -0.93824992236885 -2.81474976710656 2.81474976710656 0.93824992236885但用符号工具箱的但用符号工具箱的inv:a=16,2,3,13; 5,11,10,8; 9,7,6,12; 4,14,15,1;a=sym(a)inv(a)结果:结果:? error using = sym

18、.inverror, (in inverse) singular matrix2、 矩阵的伪逆矩阵的伪逆 pinv(a)若若a不是一个方阵,或不是一个方阵,或a是一个非满秩的方阵时,矩阵是一个非满秩的方阵时,矩阵a没有逆矩阵,但可以找到一个与没有逆矩阵,但可以找到一个与a的转置矩阵的转置矩阵a同型的矩阵同型的矩阵b,使得:,使得: aba=a, bab=b此时称矩阵此时称矩阵b为矩阵为矩阵a的伪逆。的伪逆。例例 求求a的伪逆,并将结果送的伪逆,并将结果送ba=3,1,1,1;1,3,1,1;1,1,3,1; b=pinv(a)例例 求矩阵求矩阵a的伪逆的伪逆 a=0,0,0;0,1,0;0,0

19、,1; pinv(a)五、五、 求方阵求方阵a的行列式的行列式: det(a)例例 用克莱姆用克莱姆(cramer)方法求解线性方程组方法求解线性方程组(不建议使用)不建议使用)程序如下:程序如下:d=2,2,-1,1;4,3,-1,2;8,5,-3,4;3,3,-2,2; %定义系数矩阵定义系数矩阵b=4;6;12;6; %定义常数项向量定义常数项向量d1=b,d(:,2:4); %用方程组的右端向量置换用方程组的右端向量置换d的第的第1列列 d2=d(:,1),b,d(:,3:4); %用方程组的右端向量置换用方程组的右端向量置换d的第的第2列列d3=d(:,1:2),b,d(:,4:4)

20、;%用方程组的右端向量置换用方程组的右端向量置换d的的第第3列列d4=d(:,1:3),b;%用方程组的右端向量置换用方程组的右端向量置换d的第的第4列列dd=det(d); x1=det(d1)/dd; x2=det(d2)/dd; x3=det(d3)/dd; x4=det(d4)/dd; x1,x2,x3,x4六、六、 求矩阵求矩阵a的秩的秩 rank(a)七、七、 求矩阵求矩阵a的迹的迹 trace(a)例:例:d=2,2,-1,1;4,3,-1,2;8,5,-3,4;3,3,-2,2; r=rank(d) t=trace(a)结果:结果:r = 4 t= 6九、求矩阵特征多项式、特征

21、值、特征向量九、求矩阵特征多项式、特征值、特征向量设设a是一个是一个 nn 矩阵,矩阵,( )det()fia为为a的特征多项式。的特征多项式。特征多项式的根称为矩阵特征多项式的根称为矩阵a的特征值。的特征值。c=poly(a) 求矩阵求矩阵a的特征多项式的系数的特征多项式的系数roots(c) 求多项式求多项式c的根的根八八、 求矩阵求矩阵a的共轭矩阵的共轭矩阵 conj(a) eig(a) 求矩阵求矩阵a的特征值的特征值 常用的调用格式有常用的调用格式有 :ue=eig(a) 求矩阵求矩阵a的全部特征值,构成向量的全部特征值,构成向量e。uv,d=eig(a) 求矩阵求矩阵a的全部特征值,

22、构成对角阵的全部特征值,构成对角阵d,并求并求a的特征向量构成的特征向量构成v的列向量。的列向量。uv,d=eig(a,nobalance) 与第与第2种格式类似,但第种格式类似,但第2种种格式中先对格式中先对a作相似变换后求矩阵作相似变换后求矩阵a的特征值和特征的特征值和特征向量,而格式向量,而格式3直接求矩阵直接求矩阵a的特征值和特征向量,即的特征值和特征向量,即a中某项非常小,这样求出的特征值及特征向量更精中某项非常小,这样求出的特征值及特征向量更精确。确。uv,d=eig(a,b) 计算广义特征值和特征向量,使计算广义特征值和特征向量,使 av=bvd。例:设矩阵例:设矩阵342311

23、205aa=3 4 -2;3 -1 1;2 0 5;e=eig(a)v,d=eig(a)v,d=eig(a,nobalance)现求解线性方程组现求解线性方程组 axb11 11221121 1222221 122mnnnnmmmnna xa xa xba xa xa xba xaxaxbl l l l l l l l l l l l l l l l llll情形1:m=n(恰定方程组)(恰定方程组) 在matlab中的求解命令有:123211113,2;1,-1;-1,1;0.2000-0.8000 xxabxa bx如:求解设: 则: 得: 情形情形2 2:mn(超定方程),多用于曲线拟合

24、(超定方程),多用于曲线拟合。 ( )* (-1)* / *()xa bxinv abxabxb axbinv a解线性方程组的一般函数文件如下:解线性方程组的一般函数文件如下:function x,y=line_solution(a,b)m,n=size(a);y=; if norm(b)0 % b非零,非零,非齐次方程组非齐次方程组 if rank(a)=rank(a,b) %方程组相容方程组相容 (有解有解) if rank(a)=n %有有唯一解唯一解 x=ab; else %方程组有方程组有无穷多个解无穷多个解,基础解系基础解系 disp(原方程组有有无穷个解,其齐次方程组的基础原方

25、程组有有无穷个解,其齐次方程组的基础 解系为解系为y,特解为,特解为x); y=null(a,r); x=ab; end else %方程组不相容方程组不相容(无解)(无解) ,给出最小二乘解,给出最小二乘解 disp(方程组的最小二乘法解是:方程组的最小二乘法解是:); x=ab; endelse %齐次方程组齐次方程组 if rank(a)=n %列满秩列满秩 x=zero(n,1) %0解解 else %非非0解,无穷多个解解,无穷多个解 disp(方程组有无穷个解,基础解系为方程组有无穷个解,基础解系为x); x=null(a,r); end endreturn如在如在matlab命令

26、窗口,输入命令命令窗口,输入命令 a=2,2,-1,1;4,3,-1,2;8,5,-3,4;3,3,-2,2;b=4,6,12,6; x,y=line_solution(a,b) 及:及: a=2,7,3,1;3,5,2,2;9,4,1,7;b=6,4,2; x,y=line_solution(a,b)分别显示其求解结果。分别显示其求解结果。x直接法:理论,无舍入误差,有限步,精确解迭代法:格式,无穷序列解向量求解线性方程组(m=n) 用克莱姆法则,理论上可行,但实际运算时工作量大,耗时。下面研究、 一、一、gaussgauss简单简单消元法(消元法(m=n)m=n)设设 有有用线性代数中的克

27、莱姆法则用线性代数中的克莱姆法则求解时,求解时,工作量非常大,工作量非常大, 工作量小的方法是工作量小的方法是 gaussgauss消元法。消元法。3.1 3.1 解线性方程组的直接法解线性方程组的直接法1 111 2211 ,12 112 2222 ,11122,11122,1nnnnnniii ninnnnn nnn naxaxaxaaxaxaxaaxaxaxaaxaxaxallllllllllllllllllllllllllllllllllllllllll消消 元:元: 222222(3,) iiaainaia然后用将化为零;把第2行,加到第行。11 11211,1222222,1 22

28、,1 22,1 nnnnnniinni nnnnnn na xa xa xaa xa xaa xa xaa xa xal l l l l l l l l l l l l l l ll l l l l l l l l l l l l l l lllll111111(2, )1 iiaainaia用将化为零;把第 行,加到第行。l00 ?iiiiaa问题:或以此类推,最后方程组化为:回回 代:代: ,1,111(1,2,.,1n nnnnnkk nkjjj kkkaxaxaa xaknn 11 112211,122222,1 ,1 nnnnnnnnnn na xa xa xaa xa xaa xa

29、l l l l l l l l l l lll失效,故应选主元失效,故应选主元 二、列主元素消去法二、列主元素消去法-计算结果可靠计算结果可靠1111111111(1)max112(j1,2,n1)3jjrii njjrjjrraaracaaca 找行号使,对调行:11111111110 :1,2,3,1,2,1iiiijjijaaaiijaaaaainjna 消元:用消为第 行加到第 行 第 行第 个元素成为(;)到此原方程组化为到此原方程组化为11 11211,1222222,1 22,1 22,1 nnnnnniinni nnnnnn na xa xa xaa xa xaa xa xaa

30、 xa xal l l l l l l l l l l l l l l ll l l l l l l l l l l l l l l lllll到此原方程组化为到此原方程组化为222222(2)m ax2.irinraar 找, 使, 对 调行22222222220 (3,4, ) :2 3,4,2,3,1iiiijjijaainaiaaaaainjna 消元:用把消为第 行第 行,则(,;,)11 11221331,1122223322,1 333,133 3 nnnnnnnnnna xa xa xa xaa xa xa xaa xa xaal l l l l l l l l l l l l

31、 l llll,13nnnn nxa xal( (上三角方程组上三角方程组) ) (3.2)3.2)( (n-1) ) 原方程组化为原方程组化为以上为消元过程。以上为消元过程。l l l l l11 112 211, 122 222, 1 , 1 n nnn nnnn nnna xa xa xaa xa xaa xal l l l l l l l l l lll( (n) ) 回代求解公式回代求解公式 ,1,111(1,2,.,1n nnnnnkk nkjjj kkkaxaxaa xaknn (3.3) 3.3) 是回代过程。是回代过程。 (3.3)3.3)例例1:在:在matlab上,用上,

32、用gauss列主元消去法求解方程组:列主元消去法求解方程组:1230.040.040.1230.561.560.3210.241.240.280 xxx cleara = -0.04 0.04 0.12 3; 0.56 -1.56 0.32 1; -0.24 1.24 -0.28 0 %先定义增广矩阵先定义增广矩阵x = 0,0,0; %先将解设为零向量,后面重新赋值先将解设为零向量,后面重新赋值tempo = a(2,:); a(2,:) = a(1,:); a(1,:)=tempo; a %第一第一次选主元(第一行与第二行交换)次选主元(第一行与第二行交换)a(2,:) = a(2,:)

33、- a(1,:)*a(2,1)/a(1,1); %将第一个对角元将第一个对角元下面的数字消为下面的数字消为0a(3,:) = a(3,:) - a(1,:)*a(3,1)/a(1,1); aa = 0.5600 -1.5600 0.3200 1.0000 0 -0.0714 0.1429 3.0714 0.0000 0.5714 -0.1429 0.4286tempo = a(3,:); a(3,:) = a(2,:); a(2,:)=tempo;a %第二第二次选主元次选主元a(3,:) = a(3,:) - a(2,:)*a(3,2)/a(2,2); a %第二次将第第二次将第二个对角元下

34、的数字消为二个对角元下的数字消为0 x(3) = a(3,4)/a(3,3); %消去完成,现在开始回代消去完成,现在开始回代x(2) = (a(2,4) - a(2,3)*x(3)/a(2,2);x(1) = (a(1,4) - a(1,2:3)*x(2:3)/a(1,1); x运行得方程组的解为:运行得方程组的解为:a = 0.5600 -1.5600 0.3200 1.0000 0.0000 0.5714 -0.1429 0.4286 0.0000 0 0.1250 3.1250 x = 7.0000 7.0000 25.0000也可直接用也可直接用 x=ab说明:说明:(1)也可采用无

35、回代的列主元消去法也可采用无回代的列主元消去法(叫叫gauss-jordan消去法消去法),该法同时消去对角元上下的元素,该法同时消去对角元上下的元素,且仍旧需要选主元,但比有回代的列主元消去法且仍旧需要选主元,但比有回代的列主元消去法的乘除运算次数多。的乘除运算次数多。gaussjordan消去法的优点消去法的优点之一是用它来算逆矩阵的算法非常容易解释。之一是用它来算逆矩阵的算法非常容易解释。(2)有回代的列主元消去法所进行的乘除运算次数有回代的列主元消去法所进行的乘除运算次数为为 ,计算量很小。,计算量很小。321133nnn例例2:用:用gaussjordan消去法求解上例中的矩阵消去法

36、求解上例中的矩阵 的逆矩阵。的逆矩阵。cleara = -0.04 0.04 0.12 ; 0.56 -1.56 0.32 ; -0.24 1.24 -0.28a=a,eye(3);atempo = a(2,:); a(2,:) = a(1,:); a(1,:)=tempo; a%第一第一次选主元,并交换第一行和第二行次选主元,并交换第一行和第二行a(1,:) = a(1,:)/a(1,1) %将主元标准化将主元标准化for i=2:3; a(i,:)=a(i,:) - a(i,1)*a(1,:); end; %将主元下的元素消为零将主元下的元素消为零a1().()a ee atempo =

37、a(3,:); a(3,:) = a(2,:); a(2,:)=tempo; a %第二第二次选主元,交换第二行和第三行次选主元,交换第二行和第三行a(2,:)=a(2,:)/a(2,2); a % 第二个主元标准化第二个主元标准化a = 0.5600 -1.5600 0.3200 1.0000 0 -0.0714 0.1429 3.0714 0.0000 0.5714 -0.1429 0.4286for i=1:3 if i=2, a(i,:)=a(i,:)-a(i,2)*a(2,:); endend % a(2,2)的上下元素消为的上下元素消为0aa = 1.0000 0 -0.1250

38、0 3.8750 4.8750 0 1.0000 -0.2500 0 0.7500 1.7500 0 0 0.1250 1.0000 0.1250 0.1250a(3,:)=a(3,:)/a(3,3)for i=1:3; if i=3, a(i,:)=a(i,:)-a(i,3)*a(3,:); end;end;aa_inv = a(:,4:6)a*a_inv结果为:结果为:a_inv = 1.0000 4.0000 5.0000 2.0000 1.0000 2.0000 8.0000 1.0000 1.0000也可用也可用rref命令来求命令来求三、三、 gauss gauss 全主元消去法:

39、全主元消去法: 优点优点-计算结果更可靠;计算结果更可靠; 缺点缺点-挑主元花时间更多,挑主元花时间更多, 次序有变动,程序复杂。次序有变动,程序复杂。1,nxxl四、四、gauss消元法的应用消元法的应用 1、求行列式:、求行列式:det(a)111111111.( 1).( 1).nnmmnnnnnnnaabbbbaab 1().()a ee a2、求逆矩阵:、求逆矩阵:inv(a)或)或 a(-1)rref(a,eye(size(a) 将将(a,e)化为行最简形,其化为行最简形,其实就是实就是gauss-jordon消去法消去法 (3)求解方程组)求解方程组ax=b u求逆矩阵的思想求逆

40、矩阵的思想: x=inv(a)*b或或x=a(-1)*bu左除法(原理上是运用高斯消元法求解左除法(原理上是运用高斯消元法求解, ,但但matlabmatlab在在实际执行过程中是通过实际执行过程中是通过lulu分解法进行的)分解法进行的):x=abu符号矩阵法(此法最接近精确值,但运算速度慢)符号矩阵法(此法最接近精确值,但运算速度慢)x=sym(a)sym(b)u化为行最简形:化为行最简形:c=a,b rref(c)例例1:在:在matlab上,用上,用gauss列主元消去法求解方程组:列主元消去法求解方程组:1230.040.040.1230.561.560.3210.241.240.2

41、80 xxx a= -0.04 0.04 0.12; 0.56 -1.56 0.32; -0.24 1.24 -0.28; b=3;1;0;x11=inv(a)*b %法法1:求逆思想:求逆思想x12=a(-1)*b %法法1:求逆思想:求逆思想x3=ab %法法2:左除法:左除法x4=sym(a)sym(b) %法法3:符号矩阵法:符号矩阵法c=a,b;rref(c) %法法4:化为行最简形:化为行最简形定义定义3.13.1 alu 叫叫a的三角(因子)分解,其中的三角(因子)分解,其中 是是l是上三角。是上三角。下三角下三角, , 若若l为单位下三角阵(对角元全为为单位下三角阵(对角元全为

42、1 1),),u为上为上三角阵,则称三角阵,则称 a=lu 为为doolittle分解分解; ;u若若 l 是是下三角,下三角,u是单位上三角,则称是单位上三角,则称a=lu为为crout分解分解。定理定理3.1 3.1 n 阶阵阶阵(2)a n 有唯一有唯一doolittle分解分解( (croutcrout)a 的所有的所有顺序主子式不为顺序主子式不为0.三角分解不唯一三角分解不唯一, ,为此引入为此引入定义定义3.2 3.2 五利用矩阵三角分解法求解方程组五利用矩阵三角分解法求解方程组 为什么要讨论三角分解?若在消元法进行前能实为什么要讨论三角分解?若在消元法进行前能实现三角分解现三角分

43、解alu , 则则 ()axblu xb ( (lybuxy下三角方程组)上三角方程组)容易回代求解容易回代求解 在在gauss消去法中,选主元改变了行的次序,消去法中,选主元改变了行的次序,尽管对于尽管对于gauss消去法来说,这种次序的变换无法消去法来说,这种次序的变换无法事先知道,但是这个变化的影响却可以用一个算事先知道,但是这个变化的影响却可以用一个算子子p表示,其中表示,其中p是一个置换矩阵。用是一个置换矩阵。用p左乘原始左乘原始矩阵矩阵a得到:得到: pax=py 或或 对对 做做gauss消去法不需要选主元,所以对消去法不需要选主元,所以对 做做lu分解,同样不需要选主元。分解,

44、同样不需要选主元。 实际上,将选主元实际上,将选主元gauss消去法里的行交换同消去法里的行交换同样作用于单位矩阵,所得矩阵即为样作用于单位矩阵,所得矩阵即为p。axyaa在在matlab中,中,lu分解的命令是分解的命令是lu,有两种格式:,有两种格式:u l,u,p=lu(a) 其中其中a是待分解矩阵;是待分解矩阵;l,u,p分别代表分别代表l(主对角线元素主对角线元素为为1的下三角矩阵)、的下三角矩阵)、u(上三角矩阵)和由单位阵变上三角矩阵)和由单位阵变换出的置换矩阵换出的置换矩阵p 满足:满足:pa=lu,即,即 a=p-1luu l,u=lu(a) 其中其中l= p-1l,所以,所

45、以a=lu=p-1lu 用此格式求出来的用此格式求出来的 l 并不一定是真正的下三角矩阵,并不一定是真正的下三角矩阵, 需要换行后才能是真正的下三角矩阵需要换行后才能是真正的下三角矩阵u实现实现lu分解后,分解后, 若采用若采用l,u=lu(a) ,则,则ax=b的解为的解为 x=u (l b) 若采用若采用l,u,p=lu(a),则,则ax=b的解为的解为 x=u( l ( p*b) 例例 利用利用lulu分解法求解方程组分解法求解方程组12342426949615232691822615184047xxxxa=2 4 2 6;4 9 6 15;2 6 9 18;6 15 18 40%先录入

46、系数矩阵先录入系数矩阵b=9 23 22 47l,u=lu(a) %对对a矩阵做矩阵做lu分解分解y=lb %求解方程组求解方程组ly=bx=uy %求解方程组求解方程组ux=y得到方程组的最终解得到方程组的最终解故方程组的最终解为故方程组的最终解为: x =(0.5000,2.0000,3.0000,-1.0000)或或a=2 4 2 6;4 9 6 15;2 6 9 18;6 15 18 40%先录入系数矩阵先录入系数矩阵b=9 23 22 47l,u,p=lu(a) %对对a矩阵做矩阵做lu分解分解y=lp*b %求解方程组求解方程组ly=pbx=uy %求解方程组求解方程组ux=y得到

47、方程组的最终解得到方程组的最终解lx=qr:x为方阵,为方阵,q为正交矩阵,为正交矩阵, r为上三角矩阵为上三角矩阵 六、利用矩阵六、利用矩阵qr分解法求解方程组分解法求解方程组lq,r=qr(x):产生一个一个正交矩阵:产生一个一个正交矩阵q和一个上和一个上三角矩阵三角矩阵r,满足,满足x=qrlq,r,e=qr(x):产生一个一个正交矩阵:产生一个一个正交矩阵q、一个、一个上三角矩阵上三角矩阵r、置换矩阵、置换矩阵e,满足,满足xe=qrl实现实现qr分解后,分解后, 若采用若采用q,r=qr(x) ,则,则ax=b的解为的解为 x=r(qb) 若采用若采用q,r,e=qr(x),则,则a

48、x=b的解为的解为 x=e(r(qb) 例:例:用用qr分解求解线性方程组。分解求解线性方程组。 a=3,1,-4,1;1,-3,0,2;0,2,1,-1; 1,6,- 1,-3; b=12,-6,4,0; q,r=qr(a); x=r(qb) 或采用或采用qr分解的第分解的第2种格式,命令如下:种格式,命令如下: q,r,e=qr(a); x=e*(r(qb) 两种得到结果都是两种得到结果都是 x = -16.4444 20.6667 -1.1111 36.2222七、利用矩阵七、利用矩阵cholesky分解法求解方程组分解法求解方程组l若矩阵若矩阵x是对称正定的,是对称正定的, x=rr,

49、 r为上三角矩阵为上三角矩阵lr=chol(x):产生一个上三角阵:产生一个上三角阵r,使,使rr=x 若若x为非对称正定,则输出一个出错信息为非对称正定,则输出一个出错信息lr,p=chol(x):这个命令格式将不输出出错信息。:这个命令格式将不输出出错信息。当当x为对称正定的,则为对称正定的,则p=0,r与上述格式得到的结与上述格式得到的结果相同;否则果相同;否则p为一个正整数。为一个正整数。 如果如果x为满秩矩阵,则为满秩矩阵,则r为一个阶数为为一个阶数为q=p-1的上三的上三角阵,且满足角阵,且满足 rr=x(1:q,1:q)l实现实现cholesky分解后,线性方程组分解后,线性方程

50、组ax=b变成变成rrx=b,所以所以x=r(rb)。【例】用【例】用cholesky分解求解线性方程组。分解求解线性方程组。 a=3,1,-4,1;1,-3,0,2;0,2,1,-1;1,6,-1,-3; b=12,-6,4,0;r=chol(a)l结果:结果: ? error using = chol matrix must be positive definitel命令执行时,出现错误信息,说明命令执行时,出现错误信息,说明a为非正为非正定矩阵。定矩阵。八、解三对角方程组八、解三对角方程组追赶法追赶法11112222211111 nnnnnnnnndbcxdabcxdabcxdabx m

51、ooom给定方程组给定方程组112,1iinnibcbacbainl,()按行严格对角占优按行严格对角占优(三对角方程组)(三对角方程组)其求解算法是其求解算法是gauss消去法的一种变形,称为三对角消去法的一种变形,称为三对角法(追赶法)。解法如下:法(追赶法)。解法如下:1、由第一个方程、由第一个方程1 1121b xc xd11211dc xxb 令令1111,dd bb11211dc xxb 2、将其代入第二个方程、将其代入第二个方程 ,得:,得:2 122232a xb xc xd22123122211addc xbxabcb 21,arb 22322dc xxb 再令再令221,d

52、dr d221bbrc 3、将其代入第三个方程、将其代入第三个方程3233343a xb xc xd33234233322addc xbxabcb 得得32,arb 33433dc xxb 再令再令332,ddr d332bbrc 以此类推,以此类推,令令1,iiarb 1iiiiidc xxb 1iiibbrc 1,iiiddr d (2,3,1)in(1,2,3,1)in将将1nx 代入最后一个方程代入最后一个方程1nnnnna xb xd 令令nnndxb 1,nnnddr d 1,nnarb 以上过程称为以上过程称为 “追追”;1nnnbbrc 总结总结“追追”的算法:的算法:step

53、1:(初始化变量):(初始化变量)1,iiarb 1iiibbrc 1,iiiddr d (2,3, )in 1111,dd bbstep2:123()nxxxx下面开始下面开始“赶赶”:step3:先求:先求(1,2,1,)instep4:再求其他的:再求其他的:nxnnndxb 1iiiiidc xxb 1,1,nxx 三对角方程组的求解程序三对角方程组的求解程序 tri_diag.m 如下:如下:% tri_diag(a,b,c,d,n) solves a tridiagonal equation.function x = tri_diag(a,b,c,d,n)for i=2:n r=a

54、(i)/b(i-1); d(i)=d(i)-r*d(i-1); b(i)=b(i)-r*c(i-1); endd(n)=d(n)/b(n);for i=n-1:-1:1 d(i)=(d(i)-c(i)*d(i+1)/b(i);endx=d; 迭代法适用于解大型稀疏方程组迭代法适用于解大型稀疏方程组( (万阶以上的方万阶以上的方程组程组, ,系数矩阵中零元素占很大比例系数矩阵中零元素占很大比例, ,而非零元按某种而非零元按某种模式分布模式分布) )背景背景: 电路分析、边值问题的数值解和数学物理方程电路分析、边值问题的数值解和数学物理方程问题问题: (1)如何构造迭代格式?如何构造迭代格式? (

55、2)迭代格式是否收敛?迭代格式是否收敛? (3)收敛速度如何?收敛速度如何? (4)如何进行误差估计?如何进行误差估计? 3.2 3.2 解线性方程组的迭代法解线性方程组的迭代法一、稀疏矩阵存储方式的产生与转化一、稀疏矩阵存储方式的产生与转化 1、由由完全存储完全存储方式方式 转为转为 稀疏存储稀疏存储方式命令:方式命令:b=sparse(a) 将矩阵将矩阵a a转化为稀疏存储方式的矩阵转化为稀疏存储方式的矩阵b b sparse(m,n) 生成一个生成一个m mn n的所有元素都是的所有元素都是0 0的稀疏的稀疏 矩阵矩阵sparse(u,v,s) u,v,s是是3 3个等长的向量。个等长的

56、向量。 s是要建立的稀疏矩阵的非是要建立的稀疏矩阵的非0 0元素;元素; u(i)、v(i)分别是分别是s(i)的行标和列标;的行标和列标; 该函数生成一个该函数生成一个max(u)行、行、max(v)列并以列并以s为稀疏元为稀疏元素的稀疏矩阵素的稀疏矩阵 u=1,1,4; v=1,2,1; s=1,3,7; sparse(u,v,s)结果结果:ans = (1,1) 1 (4,1) 7 (1,2) 3u,v,s=find(a) 返回矩阵返回矩阵a中非中非0 0元素的下标和元素,元素的下标和元素,这里产生的这里产生的u、v、s可作可作sparse(u,v,s)的参数的参数full(a) 返回稀

57、疏存储矩阵返回稀疏存储矩阵a a对应的对应的完全存储方式完全存储方式矩阵矩阵相关操作的函数:相关操作的函数:2 2、 产生一个稀疏矩阵产生一个稀疏矩阵 把要建立的稀疏矩阵的非把要建立的稀疏矩阵的非0元素及其所在行和列的元素及其所在行和列的位置表示出来后由位置表示出来后由matlab自己产生其稀疏存储方式,自己产生其稀疏存储方式,这需要使用这需要使用spconvert函数。调用格式为:函数。调用格式为: b=spconvert(a)其中其中a为一个为一个m3或或m4的矩阵,每行表示一个非的矩阵,每行表示一个非0元素,元素,m是非是非0元素的个数,元素的个数,a每个元素的意义是:每个元素的意义是:

58、(i,1) 第第i个非个非0元素所在的行。元素所在的行。(i,2) 第第i个非个非0元素所在的列。元素所在的列。(i,3) 第第i个非个非0元素值的实部。元素值的实部。(i,4) 第第i个非个非0元素值的虚部,若矩阵的全部元素都是元素值的虚部,若矩阵的全部元素都是实数,则无须第四列。实数,则无须第四列。 a=1,1,4; 1,2,1; 1,3,7; spconvert(a)结果:结果: ans = (1,1) 4 (1,2) 1 (1,3) 7 3 3、单位稀疏矩阵的产生、单位稀疏矩阵的产生 eye 产生一个完全存储方式的单位矩阵产生一个完全存储方式的单位矩阵 speye(m,n) 产生产生一

59、个一个mn的的稀疏存储单位稀疏存储单位矩阵矩阵 speye(2,3) ans = (1,1) 1 (2,2) 1二、简单迭代法二、简单迭代法 1.1.迭代法建立迭代法建立. . 考虑考虑 ax= =baxbxbxg ( (矩阵矩阵b不唯一不唯一) )对应写出对应写出 (1)( )(0) (0,1,2,) (1)kkxbxgkx取定初始向量产生向量序列产生向量序列(1)(2)()(1),kkxxxx若收敛若收敛, ,记记(1)limkkxx则于则于(1)(1)两端取极限有:两端取极限有: ,xbxg上式说明:上式说明: 是解向量是解向量 ,从而当从而当k充分大时充分大时(1)kx注意注意: :

60、迭代阵迭代阵b不唯一不唯一,b的选取的选取影响收敛性。影响收敛性。 解向量解向量(1)(1)叫简单迭代法叫简单迭代法, ,b叫迭代矩阵。叫迭代矩阵。 2.2.收敛性收敛性. . 定义定义 称称1( )max |( ) |ii nbb 为矩阵为矩阵b b的谱半径。的谱半径。 xxx(0):1bx注意( )时不能说“对任意都不收敛”。(1)( )11111(0) (0,1,2,),|max|1 |max|1 kknnijijj ni nijxbxgkbbbbx 对迭代法若或则其对任意收敛。 定理 定理定理 对于简单迭代法,若迭代矩阵对于简单迭代法,若迭代矩阵(1)( )(0) 1 kkxbxgxb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论