




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌航空大学数学与信息科学学院实验报告一、实验目的及题目1.1 实验目的:(1)学会用高斯列主元消去法,LU分解法,Jacobi迭代法和Gauss-Seidel迭代法解线性方程组。(2)学会用Matlab编写各种方法求解线性方程组的程序。1.2 实验题目:1. 用列主元消去法解方程组: 2. 用LU分解法解方程组其中 ,3. 分别用Jacobi迭代法和Gauss-Seidel迭代法求解方程组: 二、实验原理、程序框图、程序代码等2.1实验原理2.1.1高斯列主元消去法的原理Gauss消去法的基本思想是一次用前面的方程消去后面的未知数,从而将方程组化为等价形式:这个过程就是消元,然后再回代就好了。具体过程如下:对于,若依次计算然后将其回代得到:以上是高斯消去。但是高斯消去法在消元的过程中有可能会出现的情况,这时消元就无法进行了,即使主元数但是很小时,其做除数,也会导致其他元素数量级的严重增长和舍入误差的扩散。因此,为了减少误差,每次消元选取系数矩阵的某列中绝对值最大的元素作为主元素。然后换行使之变到主元位置上,再进行销元计算。即高斯列主元消去法。2.1.2直接三角分解法(LU分解)的原理 先将矩阵A直接分解为则求解方程组的问题就等价于求解两个三角形方程组。直接利用矩阵乘法,得到矩阵的三角分解计算公式为:由上面的式子得到矩阵A的LU分解后,求解Ux=y的计算公式为以上为LU分解法。2.1.3Jacobi迭代法和Gauss-Seidel迭代法的原理(1)Jcaobi迭代设线性方程组 (1)的系数矩阵A可逆且主对角元素均不为零,令 并将A分解成 (2)从而(1)可写成 令 其中. (3)以为迭代矩阵的迭代法(公式) (4)称为雅可比(Jacobi)迭代法,其分量形式为 (5)其中为初始向量.(2)Gauss-Seidel迭代由雅可比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i个分量时,已经计算出的最新分量没有被利用。把矩阵A分解成 (6) 其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 即其中 (7)以为迭代矩阵构成的迭代法(公式) (8)称为高斯塞德尔迭代法,用分量表示的形式为2.2程序代码2.2.1高斯列主元的代码function Gauss(A,b) %A为系数矩阵,b为右端项矩阵m,n=size(A);n=length(b);for k=1:n-1 pt,p=max(abs(A(k:n,k); %找出列中绝对值最大的数 p=p+k-1; if pk t=A(k,:);A(k,:)=A(p,:);A(p,:)=t; %交换行使之变到主元位置上 t=b(k);b(k)=b(p);b(p)=t; end m=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); if flag=0 Ab=A,b; endend x=zeros(n,1); %开始回代 x(n)=b(n)/A(n,n); for k=n-1:-1:1 x(k)=(b(k)-A(k,k+1:n)*x(k+1:n)/A(k,k); end for k=1:n fprintf(x%d=%fn,k,x(k); end2.2.2 LU分解法的程序function LU(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);for k=2:n U(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); %开始解方程组Ux=y y(1)=b(1);for k=2:n y(k)=b(k)-L(k,1:k-1)*y(1:k-1);endx=zeros(n,1);x(n)=y(n)/U(n,n);for k=n-1:-1:1 x(k)=(y(k)-U(k,k+1:n)*x(k+1:n)/U(k,k);endfor k=1:n fprintf(x%d=%fn,k,x(k);end2.2.3 Jacobi迭代法的程序function Jacobi(A,b,eps) %A为系数矩阵,b为后端项矩阵,epe为精度m,n=size(A);D=diag(diag(A); %求矩阵DL=tril(A)-D; %求矩阵LU=triu(A)-D; %求矩阵Utemp=1;x=zeros(m,1);k=0;while abs(max(x)-temp)eps temp=max(abs(x); k=k+1; %记录循环次数 x=-inv(D)*(L+U)*x+inv(D)*b; %雅克比迭代公式end for k=1:n fprintf(x%d=%fn,k,x(k);end2.2.4 Gauss-Seidel迭代程序function Gauss_Seidel(A,b,eps) %A为系数矩阵,b为后端项矩阵,epe为精度m,n=size(A);D=diag(diag(A); %求矩阵DL=D-tril(A); %求矩阵LU=D-triu(A); %求矩阵Utemp=1;x=zeros(m,1);k=0;while abs(max(x)-temp)eps temp=max(abs(x); k=k+1; %记录循环次数 x=inv(D-L)*U*x+inv(D-L)*b; %Gauss_Seidel的迭代公式end for k=1:n fprintf(x%d=%fn,k,x(k);end三、实验过程中需要记录的实验数据表格3.1第一题(高斯列主元消去)的数据 A=1 1 0 3;2 1 -1 1; 3 -1 -1 3;-1 2 3 -1; b=4;1;-3;4; Gauss(A,b)x1=-1.333333x2=2.333333x3=-0.333333x4=1.0000003.2 第二题(LU分解法)数据 A=48 -24 0 -12;-24 24 12 12;0 6 20 2;-6 6 2 16; b=4; 4;-2;-2; LU(A,b)L = 1.0000 0 0 0 -0.5000 1.0000 0 0 0 0.5000 1.0000 0 -0.1250 0.2500 -0.0714 1.0000U = 48.0000 -24.0000 0 -12.0000 0 12.0000 12.0000 6.0000 0 0 14.0000 -1.0000 0 0 0 12.9286x1=0.521179x2=1.005525x3=-0.375691x4=-0.2596693.3第三题Jacobi迭代法的数据 A=10 -1 2 0;0 8 -1 3;2 -1 10 0;-1 3 -1 11;b=-11;-11;6;25;Jacobi(A,b,0.00005)x1=-1.467396x2=-2.358678x3=0.657604x4=2.8423973.4第三题用Gauss_Seidel迭代的数据 A=10 -1 2 0;0 8 -1 3;2 -1 10 0;-1 3 -1 11; b=-11;-11;6;25; Gauss_Seidel(A,b,0.00005)x1=-1.467357x2=-2.358740x3=0.657597x4=2.842405四、实验中存在的问题及解决方案4.1存在的问题 (1)第一题中在matlab中输入 Gauss(A,b)(数据省略)得到m =4 n =4 ? Undefined function or variable Ab.Error in = Gauss at 8ap,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)结果程序报错? Error using = Gauss Too many output arguments.得不到想要的结果。4.2解决方案(1)针对第一题中由于程序的第二行漏了一个分号导致输出了m和n的值,第8行中将Ab改为A问题就解决了。(2)由于程序后面出现了矩阵y故输出的事矩阵y的值,但是我们要的事x的值,故只需要将y改成x,或者直接把y去掉就解决了问题。(3)在function文件中命名不能出现“-”应该将其改为下划线“_”,所以将M文件名“Gauss-Seidel(A,b,eps)”改成“Gauss_Seidel(A,b,eps)”就解决问题了。五、心得体会本次试验涉及到了用高斯列主元消去法,LU分解法,Jacobi迭代法以及Gaus
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论