第三章 解线性方程组的直接方法的matlab程序_高等教育-微积分.pdf
《第三章 解线性方程组的直接方法的matlab程序_高等教育-微积分.pdf》由会员分享,可在线阅读,更多相关《第三章 解线性方程组的直接方法的matlab程序_高等教育-微积分.pdf(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 在科技、工程、医学和经济等各个领域中,经常遇到求解包含n个未知数、由m个方程构成的线性方程组 mnmnmmnnnnbxaxaxabxaxaxabxaxaxa22112222212111212111 (3.1)的问题.线性方程组(3.1)的解法一般有直接法和迭代法.迭代法是求解大型稀疏矩阵方程组,尤其是由微分方程离散后得到的大型方程组的重要方法.在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法.3.1 方程组的逆矩阵解法及其 MATLAB 程序 3.1.1 逆矩阵、行列式及其MATLAB命令 当矩阵A为方阵时,A的行列式通常表示为)det(A或A.当0)det(A
2、时,A可逆,且可以用表 3-1中的 MATLAB 命令求A的逆矩阵和行列式.表 3-1 命 令 功 能 NA=inv(A)输入矩阵A,运行后输出A的逆矩阵1A;HA=det(A)输入矩阵A,运行后输出A的行列式)det(A的值.3.1.2 方程组的逆矩阵解法及其MATLAB程序 在 MATLAB 中引进了矩阵除法的概念,它包括左除和右除.设两矩阵BA,为n阶方阵,且A,B皆可逆,则矩阵方程CAX,DYB,FAZB 的解都可以用表 3-2中的命令求出.表 3-2 命 令 相同功能的命令 功 能 X=AC X=inv(A)*C 输入矩阵A和C,运行后输出矩阵方程CAX 的解CAX1 Y=D/B Y
3、=D*inv(B)输入矩阵B和D,运行后输出矩阵方程DYB 的解1DBY Z=A F/B Z=inv(A)*F*inv(B)输入矩阵A,B和F,运行后输出矩阵方程FAZB 的解11FBAZ 3.1.3 线性方程组有解的判定条件及其 MATLAB 程序 解非齐次线性方程组,将其增广矩阵化成行阶梯形矩阵,便可判断其是否有解若有解,化成行最简形矩阵,便可写出其通解.判定线性方程组AnmbX 是否有解的 MATLAB 程序 第三章 解线性方程组的直接方法 输入的量:系数矩阵A和常数向量b;输出的量:RA和 RB 分别是系数矩阵A和增广矩阵B的秩,n 是方程组中未知量的个数,另外还输出有关方程组解的信息
4、.说明:(1)求矩阵A的秩用 MATLAB 命令:RA=rank(A).(2)如果有唯一解,则用表 3-2方法求解;如果有无穷多解,则将其增广矩阵化成行最简形矩阵,便可写出其通解.根据线性方程组有解的判定条件,现提供判定线性方程组是否有解的 MATLAB 程序 function RA,RB,n=jiepb(A,b)B=A b;n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica0,disp(请注意:因为RA=RB,所以此方程组无解.)return end if RA=RB if RA=n disp(请注意:因为RA=RB=n,所以此方程组
5、有唯一解.)else disp(请注意:因为RA=RB A=2 3-1 5;3 1 2-7;4 1-3 6;1-2 4-7;b=0;0;0;0;RA,RB,n=jiepb(A,b)运行后输出结果为 请注意:因为 RA=RB=n,所以此方程组有唯一解.RA=4,RB=4,n=4 在 MATLAB 工作窗口输入 X=Ab,运行后输出结果为 X=(0 0 0 0).(2)在 MATLAB 工作窗口输入程序 A=3 4-5 7;2-3 3-2;4 11-13 16;7-2 1 3;b=0;0;0;0;RA,RB,n=jiepb(A,b)运行后输出结果 请注意:因为 RA=RB A=4 2-1;3-1
6、2;11 3 0;b=2;10;8;RA,RB,n=jiepb(A,B)运行后输出结果 请注意:因为 RA=RB,所以此方程组无解.RA=2,RB=3,n=3(4)在 MATLAB 工作窗口输入程序 线性方程组的问题线性方程组的解法一般有直接法和迭代法迭代法是求解大型稀疏矩阵方程组尤其是由微分方程离散后得到的大型方程组的重要方法在这章中我们要学习线性方程组的直接法特别是适合用数学软件在计算机上求解的命令求的逆矩阵和行列式或当时可表命令功能输入矩阵运行后输出的逆矩阵输入矩阵运行后输出的行列式的值方程组的逆矩阵解法及其程序在中引进了矩阵除法的概念它包括左除和右除设矩阵为阶方阵且皆可逆则矩阵方程的解
7、都可方程的解输入矩阵和运行后输出矩阵方程的解线性方程组有解的判定条件及其程序解非齐次线性方程组将其增广矩阵化成行阶梯形矩阵便可判断其是否有解若有解化成行最简形矩阵便可写出其通解判定线性方程组是否有解的程序输 A=2 1-1 1;4 2-2 1;2 1-1-1;b=1;2;1;RA,RB,n=jiepb(A,b)运行后输出结果 请注意:因为 RA=RB0,disp(请注意:因为RA=RB,所以此方程组无解.)return end if RA=RB if RA=n disp(请注意:因为RA=RB=n,所以此方程组有唯一解.)X=zeros(n,1);X(n)=b(n)/A(n,n);for k=
8、n-1:-1:1 X(k)=(b(k)-sum(A(k,k+1:n)*X(k+1:n)/A(k,k);end else disp(请注意:因为RA=RBA=5-1 2 3;0-2 7-4;0 0 6 5;0 0 0 3;b=20;-7;4;6;RA,RB,n,X=shangsan(A,b)运行后输出结果 请注意:因为 RA=RB=n,所以此方程组有唯一解.RA=RB=4,4,n=4,X=2.4 -4.0 -1.0 2.0 3.3 高斯(Gauss)消元法和列主元消元法及其 MATLAB 程序 线性方程组的问题线性方程组的解法一般有直接法和迭代法迭代法是求解大型稀疏矩阵方程组尤其是由微分方程离散
9、后得到的大型方程组的重要方法在这章中我们要学习线性方程组的直接法特别是适合用数学软件在计算机上求解的命令求的逆矩阵和行列式或当时可表命令功能输入矩阵运行后输出的逆矩阵输入矩阵运行后输出的行列式的值方程组的逆矩阵解法及其程序在中引进了矩阵除法的概念它包括左除和右除设矩阵为阶方阵且皆可逆则矩阵方程的解都可方程的解输入矩阵和运行后输出矩阵方程的解线性方程组有解的判定条件及其程序解非齐次线性方程组将其增广矩阵化成行阶梯形矩阵便可判断其是否有解若有解化成行最简形矩阵便可写出其通解判定线性方程组是否有解的程序输 3.3.1 高斯消元法及其 MATLAB 程序 现提供的 MATLAB 程序是利用高斯消元法解
10、线性方程组bAX 的 MATLAB 程序.用高斯消元法解线性方程组bAX 的 MATLAB 程序 输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA,RB,方程组中未知量的个数n和有关方程组解X及其解的信息.function RA,RB,n,X=gaus(A,b)B=A b;n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica0,disp(请注意:因为RA=RB,所以此方程组无解.)return end if RA=RB if RA=n disp(请注意:因为RA=RB=n,所以此方程组有唯一解.)X=zeros
11、(n,1);C=zeros(1,n+1);for p=1:n-1 for k=p+1:n m=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);end end b=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)/A(q,q);end else disp(请注意:因为RA=RB A=1-1 1-3;0-1-1 1;2-2-4 6;1-2-4 1;b=1;0;-1;-1;RA,RB,n,X=gaus(A,b)运行后输出
12、结果 请注意:因为 RA=RB=n,所以此方程组有唯一解.RA=4 RB=4 n=4 3.3.2 列主元消元法及其 MATLAB 程序 X=0 -0.5000 0.5000 0 线性方程组的问题线性方程组的解法一般有直接法和迭代法迭代法是求解大型稀疏矩阵方程组尤其是由微分方程离散后得到的大型方程组的重要方法在这章中我们要学习线性方程组的直接法特别是适合用数学软件在计算机上求解的命令求的逆矩阵和行列式或当时可表命令功能输入矩阵运行后输出的逆矩阵输入矩阵运行后输出的行列式的值方程组的逆矩阵解法及其程序在中引进了矩阵除法的概念它包括左除和右除设矩阵为阶方阵且皆可逆则矩阵方程的解都可方程的解输入矩阵和
13、运行后输出矩阵方程的解线性方程组有解的判定条件及其程序解非齐次线性方程组将其增广矩阵化成行阶梯形矩阵便可判断其是否有解若有解化成行最简形矩阵便可写出其通解判定线性方程组是否有解的程序输 现提供的 MATLAB程序是利用回代法解上三角形线性方程组.关于解下三角形线性方程组的程序与之类似.用列主元消元法解线性方程组bAX 的 MATLAB 程序 输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA,RB,方程组中未知量的个数n和有关方程组解X及其解的信息.function RA,RB,n,X=liezhu(A,b)B=A b;n=length(b);RA=rank(A);R
14、B=rank(B);zhica=RB-RA;if zhica0,disp(请注意:因为RA=RB,所以此方程组无解.)return end if RA=RB if RA=n disp(请注意:因为RA=RB=n,所以此方程组有唯一解.)X=zeros(n,1);C=zeros(1,n+1);for p=1:n-1 Y,j=max(abs(B(p:n,p);C=B(p,:);B(p,:)=B(j+p-1,:);B(j+p-1,:)=C;for k=p+1:n m=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);end end b=B(1:n,n+
15、1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)/A(q,q);end else disp(请注意:因为RA=RB A=0-1-1 1;1-1 1-3;2-2-4 6;1-2-4 1;b=0;1;-1;-1;RA,RB,n,X=liezhu(A,b)运行后输出结果 请注意:因为 RA=RB=n,所以此方程组有唯一解.RA=4,RB=4,n=4,X=0-0.5 0.5 0 3.4 LU分解法及其 MATLAB 程序 3.4.1 判断矩阵 LU 分解的充要条件及其 MATLAB 程序
16、 根据定理 3.5 和(3.16)式,现提供 MATLAB 程序如下:判断矩阵A能否进行 LU 分解的 MATLAB 程序 输入的量:系数矩阵A;运行后输出的量:矩阵A的秩 RA和各阶顺序主子式Adet(r)),2,1(nr的值 hl及其相关信息,A能否进行 LU 分解的信息.function hl=pdLUfj(A)n n=size(A);RA=rank(A);if RA=n 线性方程组的问题线性方程组的解法一般有直接法和迭代法迭代法是求解大型稀疏矩阵方程组尤其是由微分方程离散后得到的大型方程组的重要方法在这章中我们要学习线性方程组的直接法特别是适合用数学软件在计算机上求解的命令求的逆矩阵和
17、行列式或当时可表命令功能输入矩阵运行后输出的逆矩阵输入矩阵运行后输出的行列式的值方程组的逆矩阵解法及其程序在中引进了矩阵除法的概念它包括左除和右除设矩阵为阶方阵且皆可逆则矩阵方程的解都可方程的解输入矩阵和运行后输出矩阵方程的解线性方程组有解的判定条件及其程序解非齐次线性方程组将其增广矩阵化成行阶梯形矩阵便可判断其是否有解若有解化成行最简形矩阵便可写出其通解判定线性方程组是否有解的程序输disp(请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下:),RA,hl=det(A);return end if RA=n for p=1:n,h(p)=det(A(1:p,1:p
18、);,end hl=h(1:n);for i=1:n if h(1,i)=0 disp(请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:),hl;RA,return end end if h(1,i)=0 disp(请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:)hl;RA end end 例3.4.1 判断下列矩阵能否进行LU分解,并求矩阵的秩.(1)6547121321;(2)654721321;(3)654321321.解 (1)在MATLAB工作窗口输入程序 A=1 2 3;1
19、12 7;4 5 6;hl=pdLUfj(A)运行后输出结果为 请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:RA=3,hl=1 10 -48(2)在MATLAB工作窗口输入程序 A=1 2 3;1 2 7;4 5 6;hl=pdLUfj(A)运行后输出结果为 请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:RA=3,hl=1 0 12(3)在MATLAB工作窗口输入程序 A=1 2 3;1 2 3;4 5 6;hl=pdLUfj(A)运行后输出结果为 请注意:因为A的n阶行列式hl等于
20、零,所以A不能进行LU分解.A的秩RA如下 RA=2,hl=0 3.4.2 直接 LU分解法及其 MATLAB 程序 根据定理 3.5 和(3.16)式,现提供 MATLAB 程序如下:将矩阵A进行直接 LU 分解的 MATLAB 程序 输入的量:系数矩阵A;输出的量:矩阵A的秩 RA和各阶顺序主子式Adet(r)),2,1(nr的值 hl及其相关信息,A能否进行 LU 分解的信息.如果A能进行 LU 分解,则输出L和U.function hl=zhjLU(A)n n=size(A);RA=rank(A);if RA=n disp(请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.
21、A的秩RA如下),RA,hl=det(A);return 线性方程组的问题线性方程组的解法一般有直接法和迭代法迭代法是求解大型稀疏矩阵方程组尤其是由微分方程离散后得到的大型方程组的重要方法在这章中我们要学习线性方程组的直接法特别是适合用数学软件在计算机上求解的命令求的逆矩阵和行列式或当时可表命令功能输入矩阵运行后输出的逆矩阵输入矩阵运行后输出的行列式的值方程组的逆矩阵解法及其程序在中引进了矩阵除法的概念它包括左除和右除设矩阵为阶方阵且皆可逆则矩阵方程的解都可方程的解输入矩阵和运行后输出矩阵方程的解线性方程组有解的判定条件及其程序解非齐次线性方程组将其增广矩阵化成行阶梯形矩阵便可判断其是否有解若
22、有解化成行最简形矩阵便可写出其通解判定线性方程组是否有解的程序输end if RA=n for p=1:n h(p)=det(A(1:p,1:p);end hl=h(1:n);for i=1:n if h(1,i)=0 disp(请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:),hl;RA return end end if h(1,i)=0 disp(请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:)for j=1:n U(1,j)=A(1,j);end for k=2:n for i
23、=2:n for j=2:n L(1,1)=1;L(i,i)=1;if ij L(1,1)=1;L(2,1)=A(2,1)/U(1,1);L(i,1)=A(i,1)/U(1,1);L(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k)/U(k,k);else U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);end end end end hl;RA,U,L end end 例 3.4.3 用矩阵进行直接 LU 分解的 MATLAB 程序分解矩阵A3010342110100201.解 在MATLAB工作窗口输入程序 A=1 0 2 0;0 1 0 1;1
24、 2 4 3;0 1 0 3;hl=zhjLU(A)运行后输出结果 请注意:因为 A 的各阶主子式都不等于零,所以 A 能进行 LU 分解.A 的秩 RA和各阶顺序主子式值 hl 依次如下:RA=4 U=1 0 2 0 0 1 0 1 0 0 2 1 0 0 0 2 由此可见,例 3.4.3 和例 3.4.2中A的 LU分解式相同.3.4.3 含交换矩阵的 LU分解法及其 MATLAB 程序 含交换矩阵的 LU分解法的 MATLAB 程序是使用列主元消元法进行的,其命令和功能如下:L=1 0 0 0 0 1 0 0 1 2 1 0 0 1 0 1 hl=1 1 2 4 线性方程组的问题线性方程
25、组的解法一般有直接法和迭代法迭代法是求解大型稀疏矩阵方程组尤其是由微分方程离散后得到的大型方程组的重要方法在这章中我们要学习线性方程组的直接法特别是适合用数学软件在计算机上求解的命令求的逆矩阵和行列式或当时可表命令功能输入矩阵运行后输出的逆矩阵输入矩阵运行后输出的行列式的值方程组的逆矩阵解法及其程序在中引进了矩阵除法的概念它包括左除和右除设矩阵为阶方阵且皆可逆则矩阵方程的解都可方程的解输入矩阵和运行后输出矩阵方程的解线性方程组有解的判定条件及其程序解非齐次线性方程组将其增广矩阵化成行阶梯形矩阵便可判断其是否有解若有解化成行最简形矩阵便可写出其通解判定线性方程组是否有解的程序输MATLAB 命令
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 解线性方程组的直接方法的matlab程序_高等教育-微积分 第三 线性方程组 直接 方法 matlab 程序 高等教育 微积分
限制150内