版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、实验目的及题目实验目的:学会用高斯列主元消去法,LU分解法,JacobiGauss-Seidel方程组。Matlab编写各种方法求解线性方程组的程序。实验题目:用列主元消去法解方程组:xx3x41 2 42xxxx11 2 3 42xxx3x321 2 3 4x1
2x2
3xx43 4LUAxb其中48 24 0 12 424 24 12 A
4,b 0 6 20 2
26 6 2
2 JacobiGauss-Seidel迭代法求解方程组:10xx2x
111 2 3xx3x1122 3 4xx1
10x63x1
3x2
x11x3
25二、实验原理、程序框图、程序代码等实验原理高斯列主元消去法的原理bxgbxgbxg1nn 12nn 2bxbx11
122bx222
bxgnnn n这个过程就是消元,然后再回代就好了。具体过程如下:对于k1,2,
n1,若a(k)0,依次计算kk南昌航空大学数学与信息科学学院实验报告南昌航空大学数学与信息科学学院实验报告第PAGE10第10页ma(k)/a(k)ik ik kka(k1)a(k)m
a(k),nij ij ik,nb(k1)b(k)m
b(k),i,jk1,然后将其回代得到:
i ixb(n)/a(n)
ikk,1n n nn,1nx(b(k) a(k)x)/a(k),kn1,n2,n以上是高斯消去。
k k kj j kkjk1但是高斯消去法在消元的过程中有可能会出现a(k)0的情况,这时消元就无法进行了,kk即使主元数a(k)0,但是很小时,其做除数,也会导致其他元素数量级的严重增长和舍入误差kk的扩散。因此,为了减少误差,每次消元选取系数矩阵的某列中绝对值最大的元素作为主元素。然后换行使之变到主元位置上,再进行销元计算。即高斯列主元消去法。直接三角分解法(LU)的原理AALU直接利用矩阵乘法,得到矩阵的三角分解计算公式为:,n2, ,nu,n2, ,nla/u
,ii1
11,nk,nukj
akj
m1
lukmmj
,,jk,k1,
n,k2,3,nl(ak1lu )/u,ik1,kik ik immk kkm1
,n且kn由上面的式子得到矩阵A的LU分解后,求解Ux=y的计算公式为yb1 1nybi1ln
y,i2,3,iiiixy
ijjj1/un n nn,1iix(ynux)/,1ii
,in1,n2,LU。
ijj iiji1JacobiGauss-SeidelJcaobiAxb (1)11A11
,a,...,a22
均不为零,令A
Ddiaga,a11 22
,...,a nn从而(1)可写成
AADDDxDAxb
(2)令xBxf1 1其中BID1,fDb. (3)1 11以B为迭代矩阵的迭代法(公式)1xk1Bxkf1 1称为雅可比(Jacobi)迭代法,其分量形式为
(4)1 n x(k1) i aii
bai ij1ji
x(k)j i
k(5) 1 2 其中x0x0,x0,...x 1 2 Gauss-Seidel由雅可比迭代公式可知,在迭代的每一步计算过程中是用xk的全部分量来计算xk1的ix1x1,...,x
k1没有被利i用。把矩阵A分解成
1 i1ADLU (6)Ddiag11,a22,...,annLUA的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成DLxUxb即xB2其中
xf2BDL1U,22以B为迭代矩阵构成的迭代法(公式)2
fDL1b2 (7)xk1Bxkf2 2
(8)称为高斯—塞德尔迭代法,用分量表示的形式为1 i1 n x(k1) i a
bai
x(k1)aj
x(kjii
jji1 in, k程序代码高斯列主元的代码functionGauss(A,b) %A为系数矩阵,b为右端项矩阵[m,n]=size(A);n=length(b);fork=1:n-1[pt,p]=max(abs(A(k:n,k))); %找出列中绝对值最大的数p=p+k-1;ifp>kt=A(k,:);A(k,:)=A(p,:);A(p,:)=t; %t=b(k);b(k)=b(p);b(p)=t;endm=A(k+1:n,k)/A(k,k); %开始消元A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n);b(k+1:n)=b(k+1:n)-m*b(k);A(k+1:n,k)=zeros(n-k,1);ifflag~=0endend
Ab=[A,b];x=zeros(n,1); %x(n)=b(n)/A(n,n);fork=n-1:-1:1x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);endforfprintf('x[%d]=%f\n',k,x(k));endLU分解法的程序functionLU(A,b) %A为系数矩阵,b为右端项矩[m,n]=size(A); %初始化矩阵A,b,L和Un=length(b);L=eye(n,n);U=zeros(n,n);U(1,1:n)=A(1,1:n); %LU分解L(2:n,1)=A(2:n,1)/U(1,1);fork=2:nU(k,k:n)=A(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);L(k+1:n,k)=(A(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k))/U(k,k);endL %L矩阵U %U矩阵y=zeros(n,1); %y(1)=b(1);fork=2:ny(k)=b(k)-L(k,1:k-1)*y(1:k-1);endx=zeros(n,1);x(n)=y(n)/U(n,n);fork=n-1:-1:1x(k)=(y(k)-U(k,k+1:n)*x(k+1:n))/U(k,k);endfork=1:nfprintf('x[%d]=%f\n',k,x(k));endJacobifunctionJacobi(A,b,eps) %A为系数矩阵,b为后端项矩阵,epe为精度[m,n]=size(A);D=diag(diag(A)); %求矩阵L=D-tril(A); %求矩阵LU=D-triu(A); %temp=1;x=zeros(m,1);k=0;whileabs(max(x)-temp)>epstemp=max(abs(x));k=k+1; %记录循环次数x=inv(D)*(L+U)*x+inv(D)*b; %雅克比迭代公endfork=1:nfprintf('x[%d]=%f\n',k,x(k));endGauss-SeidelfunctionGauss_Seidel(A,b,eps) %A为系数矩阵,b为后端项矩阵,epe为精度[m,n]=size(A);D=diag(diag(A)); %求矩阵L=D-tril(A); %求矩阵LU=D-triu(A); %temp=1;x=zeros(m,1);k=0;whileabs(max(x)-temp)>epstemp=max(abs(x));k=k+1; %记录循环次数x=inv(D-L)*U*x+inv(D-L)*b; %Gauss_Seidel的迭代公式endfork=1:nfprintf('x[%d]=%f\n',k,x(k));end三、实验过程中需要记录的实验数据表格第一题(高斯列主元消去)的数据>>A=[1103;21-11;3-1-13;-123-1];>>b=[4;1;-3;4];>>Gauss(A,b)x[1]=-1.333333x[2]=2.333333x[3]=-0.333333x[4]=1.000000第二题(LU分解法)数据>>A=[48-240-12;-24241212;06202;-66216];>>b=[4;4;-2;-2];>>LU(A,b)L=1.0000000-0.50001.00000000.50001.00000-0.12500.2500-0.07141.0000U=48.0000-24.00000-12.0000012.000012.00006.00000014.0000-1.000000012.9286x[1]=0.521179x[2]=1.005525x[3]=-0.375691x[4]=-0.259669Jacobi>>A=[10-120;08-13;2-1100;-13-111];b=[-11;-11;6;25];Jacobi(A,b,0.00005)x[1]=-1.467396x[2]=-2.358678x[3]=0.657604x[4]=2.842397Gauss_Seidel迭代的数据>>A=[10-120;08-13;2-1100;-13-111];>>b=[-11;-11;6;25];>>Gauss_Seidel(A,b,0.00005)x[1]=-1.467357x[2]=-2.358740x[3]=0.657597x[4]=2.842405四、实验中存在的问题及解决方案存在的问题第一题中在matlab中输入>>数据省略得到m=4 n=4 Undefinedfunctionorvariable"Ab".Errorin==>Gaussat8[ap,p]=max(abs(Ab(k:n,k)));没有得到想要的果。(2)第二题中在 matlab中输入>>y=LU(A,b)得到y=4.0000 6.0000 -5.0000-3.3571不是方程组的解。(3)第三题中在用高斯赛德尔方法时在matlab中输入>>Gauss-Seidel(A,b,eps)结果程序错Errorusing==>Gauss Toomanyoutput得不到想要的结果。解决方案mn8行中将Ab改为A问题就解决了。由于程序后面出现了矩阵yy的值,但是我们要的事xyxy去掉就解决了问题。function文件中命名不能出现“”应该将其改为下划线“_M“Gauss-Seidel(A,b,eps)”改成“Gauss_Seidel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年特定区域独家销售代表合同版B版
- 城市物流园区停车场施工合同
- 隧道建设三方施工合同
- 临时文化展览馆租赁合同
- 自行车店防火门安装协议
- 农村自建房屋协议
- 限时优惠促销二手房买卖合同
- 旅游景区供水井施工合同
- 城市公交站设施安全合同样本
- 快递公司配送司机劳动合同
- 2025蛇年春节春联对联带横批(276副)
- 2025年中学德育工作计划
- 2024年专业会务服务供应与采购协议版B版
- 中国上市公司ESG行动报告
- 早产临床防治指南(2024版)解读
- 《电子烟知识培训》课件
- GB/T 30661.10-2024轮椅车座椅第10部分:体位支撑装置的阻燃性要求和试验方法
- 马克思主义中国化进程与青年学生使命担当Ⅱ学习通超星期末考试答案章节答案2024年
- 自动化生产线设备调试方案
- 2024-2030年中国医药冷链物流行业竞争格局及投资模式研究报告
- 大数据+治理智慧树知到期末考试答案章节答案2024年广州大学
评论
0/150
提交评论