MATLAB解线性方程组的直接方法.docx
- 文档编号:2313159
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:23
- 大小:205.58KB
MATLAB解线性方程组的直接方法.docx
《MATLAB解线性方程组的直接方法.docx》由会员分享,可在线阅读,更多相关《MATLAB解线性方程组的直接方法.docx(23页珍藏版)》请在冰豆网上搜索。
MATLAB解线性方程组的直接方法
在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法•
3.1方程组的逆矩阵解法及其MATLA程序
3.1.3线性方程组有解的判定条件及其MATLAB?
序
判定线性方程组AmnX二b是否有解的MATLA醉序
end
function[RA,RB,n]=jiepb(A,b)B=[Ab];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;
if
zhica>0,
disp('请注意:
因为RA~=RB,所以此方程组无解.')
return
end
if
RA==RB
ifRA==n
disp('请注意:
因为RA=RB=n,所以此方程组有唯一解.')
else
disp('请注意:
因为RA=RB end 解在MATLABT作窗口输入程序 >>A=[23-15;312-7;41-36;1-24-7]; b=[0;0;0;0];[RA,RB,n]=jiepb(A,b) 运行后输出结果为 请注意: 因为RA=RB=n,所以此方程组有唯一解 RA=4,RB=4,n=4 在MATLABT作窗口输入 >>X=A\b, 运行后输出结果为X=(0000)'. (2)在MATLABT作窗口输入程序 >>A=[34-57;2-33-2;411-1316;7-213];b=[0;0;0;0]; [RA,RB,n]=jiepb(A,b) 运行后输出结果 请注意: 因为RA=RB RA=2,RB=2,n=4 (3)在MATLABT作窗口输入程序 >>A=[42-1;3-12;1130];b=[2;10;8];[RA,RB,n]=jiepb(A,B) 运行后输出结果 请注意: 因为RA~=RB,所以此方程组无解• RA=2,RB=3,n=3 (4)在MATLABT作窗口输入程序 >>A=[21-11;42-21;21-1-1]; b=[1;2;1];[RA,RB,n]=jiepb(A,b) 运行后输出结果 请注意: 因为RA=RB RA=2,RB=2,n=3 3.2三角形方程组的解法及其MATLA程序 3.2.2解三角形方程组的MATLAB? 序 解上三角形线性方程组AX二b的MATLAB^序 function[RA,RB,n,X]=shangsan(A,b) B=[Ab];n=length(b);RA=rank(A); RB=rank(B);zhica=RB-RA; ifzhica>0, disp('请注意: 因为RA~=RB,所以此方程组无解.')return end ifRA==RB ifRA==n disp('请注意: 因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);X(n)=b(n)/A(n,n); fork=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=RB end end 例3.2.2用解上三角形线性方程组的MATLAB程序解方程组 馭-x2+2x3+3x4=20, *-2X2+7X3-4X4=-7, |6x3+5X4=4, J3X4=6. 解在MATLABT作窗口输入程序 >>A=[5-123;0-27-4;0065;0003]; b=[20;-7;4;6]; [RA,RB,n,X]=shangsan(A,b) 运行后输出结果 请注意: 因为RA=RB=n,所以此方程组有唯一解. RA=RB= 4,4, 3.3高斯(GausS消元法和列主元消元法及其MATLA程序 3.3.1高斯消元法及其MATLAB? 序 用高斯消元法解线性方程组AX二b的MATLA龍序 function[RA,RB,n,X]=gaus(A,b) B=[Ab];n=length(b);RA=rank(A); RB=rank(B);zhica=RB-RA; ifzhica>0, disp('请注意: 因为RA~=RB,所以此方程组无解.')return end ifRA==RB ifRA==n disp('请注意: 因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);C=zeros(1,n+1); forp=1: n-1 fork=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); forq=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 end end 例3.3.2用高斯消元法和MATLAB^序求解下面的非齐次线性方程组,并且用逆矩 阵解方程组的方法验证. 乙一x2x3—3x4=1, -X2-X3+X4=0,2X1-2x? -4X3'6X4=—1, Ix1-2x2-4x3x4--1.解在MATLABT作窗口输入程序 >>A=[1-11-3;0-1-11;2-2-46;1-2-41]; b=[1;0;-1;-1];[RA,RB,n,X]=gaus(A,b) 运行后输出结果 RA= RB= 4 n= 请注意: 因为RA=RB=n,所以此方程组有唯一解. X= 0-0.50000.5000 3.3.2列主元消元法及其MATLAB? 序 用列主元消元法解线性方程组AX二b的MATLAB^序 function[RA,RB,n,X]=liezhu(A,b) B=[Ab];n=length(b);RA=rank(A); RB=rank(B);zhica=RB-RA;ifzhica>0, disp('请注意: 因为RA~=RB,所以此方程组无解.')return end ifRA==RB ifRA==n disp('请注意: 因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);C=zeros(1,n+1); forp=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; fork=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); forq=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 end end 例333用列主元消元法解线性方程组的MATLAB程序解方程组 —X2—X3+X4=0, X1-X2+X3-3X4=1, _2x2_4x36x4=-1, x1_2x2_4x3x4=_1. 解在MATLABT作窗口输入程序 >>A=[0-1-11;1-11-3;2-2-46;1-2-41]; b=[0;1;-1;-1];[RA,RB,n,X]=liezhu(A,b) 运行后输出结果 请注意: 因为RA=RB=n,所以此方程组有唯一解• RA=4,RB=4,n=4,X=[0-0.50.50]' 3.4LU分解法及其MATLA程序 3.4.1判断矩阵LU分解的充要条件及其MATLAB? 序 判断矩阵A能否进行LU分解的MATLAB^序 functionhl=pdLUfj(A) [nn]=size(A);RA=rank(A);ifRA~=n disp('请注意: 因为A的n阶行列式hl等于零,所以A不能进行LU分解.A 的秩RA如下: '),RA,hl=det(A);return endifRA==n forp=1: n,h(p)=det(A(1: p,1: p));,end hl=h(1: n); fori=1: n ifh(1,i)==0 disp('请注意: 因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下: '),hl;RA,return end end ifh(1,i)~=0 disp('请注意: 因为A的各阶主子式都不等于零,所以A能进行LU分 解.A的秩RA和各阶顺序主子式值hl依次如下: ') hl;RA end 例341 end 1 2 3、 1 2 3' q 2 3、 1 12 7 ; (2) 1 2 7 ;(3) 1 2 3 I4 5 6」 I4 5 6> 1 <4 5 6」 判断下列矩阵能否进行 LU分解,并求矩阵的秩 (1) 解 (1)在MATLA工作窗口输入程序 >>A=[123;1127;456];hl=pdLUfj(A) 运行后输出结果为 A能进行LU分解.A的秩RA和 请注意: 因为A的各阶主子式都不等于零,所以各阶顺序主子式值hl依次如下: RA=3,hl=110-48 (2)在MATLA工作窗口输入程序 >>A=[123;127;456];hl=pdLUfj(A) 运行后输出结果为 请注意: 因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下: RA=3,hl=1012 (3)在MATLA工作窗口输入程序 >>A=[123;123;456];hl=pdLUfj(A)运行后输出结果为 请注意: 因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下 RA=2,hl=0 3.4.2直接LU分解法及其MATLA程序 将矩阵A进行直接LU分解的MATLAB^序 functionhl=zhjLU(A) [nn]=size(A);RA=rank(A);ifRA~=n disp('请注意: 因为A的n阶行列式hl等于零,所以A不能进行LU分解.A 的秩RA如下: ’),RA,hl=det(A); return endifRA==nforp=1: n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 线性方程组 直接 方法