ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:179.38KB ,
资源ID:25188305      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25188305.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MATLAB解线性方程组的直接方法.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MATLAB解线性方程组的直接方法.docx

1、MATLAB解线性方程组的直接方法在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法.3.1 方程组的逆矩阵解法及其MATLAB程序3.1.3 线性方程组有解的判定条件及其MATLAB程序判定线性方程组是否有解的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,所以此方程组无解.)returnendif RA=RB if RA=ndisp(请注意:因为RA=RB=n,所以此方程组有唯一解

2、.) 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=R

3、B A=4 2 -1;3 -1 2;11 3 0; b=2;10;8; RA,RB,n=jiepb(A,B)运行后输出结果请注意:因为RA=RB,所以此方程组无解.RA =2,RB =3,n =3(4)在MATLAB工作窗口输入程序 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,所以此方程组无解.)returnendif RA=RB if RA=ndisp(请注意:因为RA=RB=n,所以此方程组有唯一解.) X=zeros(n,1); X(n)=

4、b(n)/A(n,n);for k=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.03.3 高斯(Gauss)消元法和列主元消元法及其MATLAB程序3.3.1 高斯消元法及其MATLAB程序用高斯消

5、元法解线性方程组的MATLAB程序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,所以此方程组无解.)returnendif RA=RB if RA=ndisp(请注意:因为RA=RB=n,所以此方程组有唯一解.) X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1for 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

6、+1);endend 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); endelse 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)运行后输出结果请注意:因为RA=RB=n,所以此方程组有唯一解.X = 0 -0.5000 0.5000 0RA = 4RB = 4n = 43.3.2 列主元消元

7、法及其MATLAB程序用列主元消元法解线性方程组的MATLAB程序function RA,RB,n,X=liezhu(A,b)B=A b; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA;if zhica0,disp(请注意:因为RA=RB,所以此方程组无解.)returnendif RA=RB if RA=ndisp(请注意:因为RA=RB=n,所以此方程组有唯一解.) X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1Y,j=max(abs(B(p:n,p); C=B(p,:);B(p,:)= B(j+p-1

8、,:); 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);endend 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); endelse 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)运行

9、后输出结果请注意:因为RA=RB=n,所以此方程组有唯一解.RA = 4,RB = 4,n = 4,X =0 -0.5 0.5 03.4 LU分解法及其MATLAB程序3.4.1判断矩阵LU分解的充要条件及其MATLAB程序判断矩阵能否进行LU分解的MATLAB程序function hl=pdLUfj(A)n n =size(A); RA=rank(A); if RA=ndisp(请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下:), RA,hl=det(A); returnendif RA=n for p=1:n,h(p)=det(A(1:p, 1:p);, en

10、dhl=h(1:n);for i=1:nif h(1,i)=0disp(请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:),hl;RA,returnendend if h(1,i)=0 disp(请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:)hl;RAendend例3.4.1 判断下列矩阵能否进行LU分解,并求矩阵的秩.(1);(2);(3).解 (1)在MATLAB工作窗口输入程序 A=1 2 3;1 12 7;4 5 6;hl=pdLUfj(A)运行后输出结果为请注意:因为A的各阶

11、主子式都不等于零,所以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等于零,所以A不能进行LU分解.A的秩RA如下RA = 2, hl = 0

12、3.4.2 直接LU分解法及其MATLAB程序将矩阵进行直接LU分解的MATLAB程序function hl=zhjLU(A)n n =size(A); RA=rank(A); if RA=ndisp(请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下:), RA,hl=det(A);returnendif RA=n for p=1:nh(p)=det(A(1:p, 1:p);endhl=h(1:n);for i=1:nif h(1,i)=0disp(请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:), hl;RAr

13、eturnendend if h(1,i)=0 disp(请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:)for j=1:nU(1,j)=A(1,j);endfor k=2:nfor i=2:n for j=2:n L(1,1)=1;L(i,i)=1; if ijL(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);elseU(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);end

14、endendendhl;RA,U,Lendend例3.4.3 用矩阵进行直接LU分解的MATLAB程序分解矩阵.解 在MATLAB工作窗口输入程序 A=1 0 2 0;0 1 0 1;1 2 4 3;0 1 0 3; hl=zhjLU(A)运行后输出结果L = 1 0 0 0 0 1 0 0 1 2 1 0 0 1 0 1 hl = 1 1 2 4 请注意:因为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.4 判断正定对称矩阵的方法及其MATLAB程序判断矩

15、阵是否是正定对称矩阵的MATLAB程序function hl=zddc(A)n n =size(A);for p=1:nh(p)=det(A(1:p, 1:p);endhl=h(1:n);zA=A;for i=1:n if h(1,i)0disp(请注意:因为A的各阶顺序主子式hl都大于零,所以A是正定的.A的转置矩阵zA和各阶顺序主子式值hl依次如下:) hl;zAend例3.4.5 判断下列矩阵是否是正定对称矩阵:(1);(2); (3);(4).解 (1)在MATLAB工作窗口输入程序 A=0.1 2 3 4;-1 2 -3 4;11 21 13 41;5 7 8 9;hl=zddc(A

16、)运行后输出结果请注意: A不是对称矩阵请注意:因为A的各阶顺序主子式hl不全大于零,所以A不是正定的.A的转置矩阵zA和各阶顺序主子式值hl依次如下:zA = 1/10 -1 11 5 2 2 21 7 3 -3 13 8 4 4 41 9 hl = 1/10 11/5 -1601/10 3696/5 因此,即不是正定矩阵,也不是对称矩阵.(2)在MATLAB工作窗口输入程序 A=1 -1 2 1;-1 3 0 -3;2 0 9 -6;1 -3 -6 19,hl=zddc(A)运行后输出结果A = 1 -1 2 1 -1 3 0 -3 2 0 9 -6 1 -3 -6 19 请注意: A是对

17、称矩阵请注意:因为A的各阶顺序主子式hl都大于零,所以A是正定的.A的转置矩阵zA和各阶顺序主子式值hl依次如下:zA = 1 -1 2 1 -1 3 0 -3 2 0 9 -6 1 -3 -6 19 hl = 1 2 6 24 (3)在MATLAB工作窗口输入程序 A=1/sqrt(2) -1/sqrt(2) 0 0; -1/sqrt(2) 1/sqrt(2) 0 0; 0 0 1/sqrt(2) -1/sqrt(2); 0 0 -1/sqrt(2) 1/sqrt(2), hl=zddc(A)运行后输出结果A= 985/1393 -985/1393 0 0 -985/1393 985/139

18、3 0 0 0 0 985/1393 -985/1393 0 0 -985/1393 985/1393 请注意: A是对称矩阵请注意:因为A的各阶顺序主子式hl不全大于零,所以A不是正定的.A的转置矩阵zA和各阶顺序主子式值hl依次如下:zA = 985/1393 -985/1393 0 0 -985/1393 985/1393 0 0 0 0 985/1393 -985/1393 0 0 -985/1393 985/1393 hl = 985/1393 0 0 0 可见,不是正定矩阵,是半正定矩阵;因为= T 因此,是对称矩阵.(4)在MATLAB工作窗口输入程序 A=-2 1 1;1 -6

19、 0;1 0 -4;hl=zddc(A)运行后输出结果 A = -2 1 1 1 -6 0 1 0 -4请注意: A是对称矩阵请注意:因为A的各阶顺序主子式hl不全大于零,所以A不是正定的.A的转置矩阵zA和各阶顺序主子式值hl依次如下:zA = -2 1 1 hl = -2 11 -38 1 -6 0 1 0 -4可见不是正定矩阵,是负定矩阵;因为= T 因此,是对称矩阵.3.5 求解线性方程组的LU方法及其MATLAB程序3.5.1 解线性方程组的楚列斯基(Cholesky)分解法及其MATLAB程序例3.5.1 先将矩阵进行楚列斯基分解,然后解矩阵方程,并用其他方法验证.解 在工作窗口输

20、入A=1 -1 2 1;-1 3 0 -3; 2 0 9 -6;1 -3 -6 19;b1=1:2:7; b=b1; R=chol(A);C=A-R*R,R1=inv(R);R2=R1; x=R1*R2*b,Rx=Ab-x运行后输出方程组的解和验证结果x = Rx = 1.0e-014 * C = 1.0e-015 * -8.0000 -0.7105 0 0 0 0 0.3333 -0.0833 0 -0.4441 0 0 3.6667 0.2220 0 0 0 0 2.0000 0.1332 0 0 0 0 3.5.2 解线性方程组的直接LU分解法及其MATLAB程序例3.5.2 首先将矩阵

21、直接进行LU分解,然后解矩阵方程,.解 (1) 首先将矩阵直接进行LU分解.在MATLAB工作窗口输入程序 A=1 0 2 0;0 1 0 1;1 2 4 3;0 1 0 3;b=1;2;-1;5; hl=zhjLU(A),A-L*U运行后输出LU分解请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:L = 1 0 0 0 0 1 0 0 1 2 1 00 1 0 1hl = 1 1 2 4RA = 4U = 1 0 2 0 0 1 0 1 0 0 2 1 0 0 0 2分解为一个单位下三角形矩阵和一个上三角形矩阵的积.(2)在工作窗口输入

22、U=1 0 2 0;0 1 0 1;0 0 2 1;0 0 0 2; L=1 0 0 0;0 1 0 0;1 2 1 0;0 1 0 1;b=1;2;-1;5;U1=inv(U); L1=inv(L); X=U1*L1*b,x=Ab运行后输出方程组的解X = 8.50000000000000 0.50000000000000 -3.75000000000000 1.500000000000003.5.3 解线性方程组的选主元的LU方法及其MATLAB程序例3.5.3 先将矩阵进行LU分解,然后解矩阵方程其中,.解 方法1 根据(3.28)式编写MATLAB程序,然后在工作窗口输入 A=0.1

23、2 3 4;-1 2 -3 4;11 21 13 41;5 7 8 9; b=1;2;-1;5; L U P=LU(A), U1=inv(U); L1=inv(L); X=U1* L1*P*bP = 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1X =-1.2013 3.3677 0.0536 -1.4440运行后输出结果L = 1.0000 0 0 0 -0.0909 1.0000 0 0 0.0091 0.4628 1.0000 0 0.4545 -0.6512 0.2436 1.0000U =11.0000 21.0000 13.0000 41.0000 0 3.9091

24、 -1.8182 7.7273 0 0 3.7233 0.05120 0 0 -4.6171方法2 根据(3.29)式编写MATLAB程序,然后在工作窗口输入 A=0.1 2 3 4;-1 2 -3 4;11 21 13 41;5 7 8 9;b=1;2;-1;5; F U=LU(A), U1=inv(U); F1=inv(F); X=U1*F1*bU=11.0000 21.0000 13.0000 41.0000 0 3.9091 -1.8182 7.7273 0 0 3.7233 0.0512 0 0 0 -4.6171运行后输出结果F=0.0091 0.4628 1.0000 0 -0.

25、0909 1.0000 0 0 1.0000 0 0 0 0.4545 -0.6512 0.2436 1.0000X =-1.2013 3.3677 0.0536 -1.4440用LU分解法解线性方程组的MATLAB程序function RA,RB,n,X,Y=LUjfcz(A,b)n n =size(A);B=A b; RA=rank(A); RB=rank(B); for p=1:nh(p)=det(A(1:p, 1:p);endhl=h(1:n);for i=1:nif h(1,i)=0disp(请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依

26、次如下:) hl;RAreturnendendif h(1,i)=0 disp(请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:)X=zeros(n,1); Y=zeros(n,1); C=zeros(1,n);r=1:1;for p=1:n-1max1,j=max(abs(A(p:n,p); C=A(p,:); A(p,:)= A(j+P1,:); C= A(j+P1,:);g=r(p); r(p)= r(j+P1); r(j+P1)=g;for k=p+1:nH= A(k,p)/A(p,p); A(k,p) = H; A(k,p+1:n)=A(k,p+1:n)- H* A(p,p+1:n);endendY(1)=B(r(1);for k=2:nY(k)= B(r(k)- A(k,1:k-1)* Y(1:k-1); endX(n)= Y(n)/ A(n,n);for i=n-1:-1:1 X(i)= (Y(i)- A(i, i+1:n) * X (i+1:n)/ A(i,i);endendRA,RB,n,X,Y;3.6 误差分析及其两种MATLAB程序3.6.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1