迭代法实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验五线性方程组的迭代法实验一.实验目的(1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭代过程的收敛性,以及解决某些实际的线性方程组求解问题。(2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题。二.实验要求建立Jacobi迭代公式、Gauss-Seidel迭代公式和超松弛迭代公式,用Matlab软件实现线性方程组求解的Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法,并用实例在计算机上计算。三.实验内容1.实验题目(1)分别利用Jacobi迭代和Gauss-Seidel迭代求解下列线性方程组,取x0={0,0,0,0,0-,o}t(2)分别取w=1、1.05、1.1、1.25和1.8,用超松弛法求解上面的方程组,要求精度为。2.设计思想1.Jacobi迭代:Jacobi迭代的设计思想是将所给线性方程组逐步对角化,将一般形式的线性方程组的求解归结为对角方程组求解过程的重复。2.Gauss-Seidel迭代:Gauss-Seidel迭代的设计思想是将一般形式的线性方程组的求解过程归结为下三角方程组求解过程的重复。3.超松弛迭代:基于Gauss-Seidel迭代,对i=1,2,…反复执行计算迭代公式,即为超松弛迭代。3.对应程序1.Jacobi迭代:function[x,k]=Jacobimethod(A,b,x0,N,emg)%A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值%N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解n=length(A);x1=zeros(n,1);x2=zeros(n,1);x1=x0;k=0;r=max(abs(b-A*x1));whileremgfori=1:nsum=0;forj=1:nifi~=jsum=sum+A(i,j)*x1(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs(x2-x1));x1=x2;k=k+1;ifkNdisp('迭代失败,返回');return;endendx=x1;2.Gauss-Seidel迭代:function[x,k]=Gaussmethod(A,b,x0,N,emg)%A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值%N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解n=length(A);x1=zeros(n,1);x2=zeros(n,1);x1=x0;r=max(abs(b-A*x1));k=0;whileremgfori=1:nsum=0;forj=1:nifjisum=sum+A(i,j)*x1(j);elseifjisum=sum+A(i,j)*x2(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs(x2-x1));x1=x2;k=k+1;ifkNdisp('迭代失败,返回');return;endendx=x1;3.超松弛(SOR)迭代:function[x,k]=SORmethod(A,b,x0,N,emg,w)%A是线性方程组的左端矩阵,b是右端向量,x0是迭代初始值%N表示迭代次数上限,emg表示控制精度,k表示迭代次数,x是解%w表示松弛因子n=length(A);x1=zeros(n,1);x2=zeros(n,1);x1=x0;r=max(abs(b-A*x1));k=0;whileremgfori=1:nsum=0;forj=1:nifj=isum=sum+A(i,j)*x1(j);elseifjisum=sum+A(i,j)*x2(j);endendx2(i)=x1(i)+w*(b(i)-sum)/A(i,i);endr=max(abs(x2-x1));x1=x2;k=k+1;ifkNdisp('迭代失败,返回');return;endendx=x1;四.实验体会在同等精度下,Gauss-Seidel迭代法比Jacobi迭代法收敛速度快。一般来说,Gauss-Seidel迭代法比Jacobi迭代法收敛要快,但有时反而比Jacobi迭代法要慢,而且Jacobi迭代法更易于优化。因此,两种方法各有优缺点,使用时要根据所需适当选取。当松弛因子为1时,超松弛迭代方法等同于Gauss-Seidel迭代法,这和理论推导完全相同。另外,超松弛迭代法的收敛速度完全取决于松弛因子的选取,一个适当的因子能大大提高收敛速度。实验四线方程组的直接解法一、问题提出给出下列几个不同类型的线性方程组,请用适当算法计算其解。1、设线性方程组123456789104231210000865365010042213210310215131194426167332386857172635021342530116101191734212246271392012400183248631xxxxxxxxxx5123234613381921(1,1,0,1,2,0,3,1,1,2)Tx2、设对称正定阵系数阵线方程组12345678424024000221213206411418356200216143323218122410394334411142202531011421500633421945xxxxxxxx(1,1,0,2,1,1,0,2)Tx三对角形线性方程组123456789104100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014xxxxxxxxxx7513261214455*(2,1,3,0,1,2,3,0,1,1)Tx二、要求1、对上述三个方程组分别利用Gauss顺序消去法与Gauss列主元消去法;平方根法与改进平方根法;追赶法求解(选择其一);2、应用结构程序设计编出通用程序;3、比较计算结果,分析数值解误差的原因;4、尽可能利用相应模块输出系数矩阵的三角分解式。三、目的和意义1、通过该课题的实验,体会模块化结构程序设计方法的优点;2、运用所学的计算方法,解决各类线性方程组的直接算法;3、提高分析和解决问题的能力,做到学以致用;3、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。四、实验学时:2学时五、实验步骤:1.进入C或matlab开发环境;2.根据实验内容和要求编写程序;3.调试程序;4.运行程序;5.撰写报告,讨论分析实验结果.实验五解线性方程组的迭代法一、问题提出对实验四所列目的和意义的线性方程组,试分别选用Jacobi迭代法,Gauss-Seidel迭代法和SOR方法计算其解。二、要求1、体会迭代法求解线性方程组,并能与消去法做以比较;2、分别对不同精度要求,如34510,10,10由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。三、目的和意义1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤(1)kkxx或k(给予的迭代次数),对迭代法敛散性的意义;4、体会初始解0x,松弛因子的选取,对计算结果的影响。四、实验学时:2学时五、实验步骤:1.进入C或matlab开发环境;2.根据实验内容和要求编写程序;3.调试程序;4.运行程序;5.撰写报告,讨论分析实验结果.例3例3用平方根法分解对称正定矩阵5375217522541114....A解5021241121211111.lalal5021113131.lal22502542212222..lal51250507522221313232....lllal1252250532322313333...llal于是TLLA,其中151500050002...L由于A为对称矩阵,因此,在电算时只要存储A的下三角部分,其需要存储121nn个元素,可用一维数组存放,即nnnna,...a,a,...,a,annA212111121矩阵元素ija存放在121nnA的第jii121个位置,L的元素存放在A的相应位置上.另外,平方根法的运算量是开平方n次;乘除法nnn31236123次;加减法nnn676123次.当n比较大时,平方根法的运算量和存贮量约为高斯消元法的二分之一,因此它是求解对称正定矩阵比较好的方法.为了避免开方运算,我们可以采用下面的分解式24TLDLA其中L是单位下三角阵,D是对角阵,由矩阵乘法,可得L与D的计算公式.对于n,...,,i21,有2512111i,...,,kd)ldla(lkjkkjjijikik26112,dladjijijiii为了避免重复计算,我们引入27jijijdlt于是上述公式可改写成对于n,...,,i21,有2812111i,...,,k,ltatkjkjijikik2921n,...,,k,dtlkikik3011,ltadijijijiii计算出LDT的第i行元素121i,...,k,tik后,存放在A的第i行相应位置,然后再计算L的第i行元素ikl仍然存放在A的第i行,即用ikt冲掉ika,再用ikl冲掉ikt,D的对角线元素存放在A的相应位置上.对称正定矩阵A按TLDL的分解和按TLL分解其计算量差不多,但TLDL分解不需要开方计算,它称为改进的平方根法.四追赶法在计算样条函数,解常微分方程边值问题,解热传导方程等都会要求解系数矩阵呈三对角线形的线性方程组,这时nnnnnnnnnnaaaaaaaaaaA1111212322211211的LU分解中,矩阵L和U分别取下二对角线和上二对角线形式,设nnnnlllllL1222111,111112nnuuU由LUA得计算公式1111lan,...,,i,laiiii3211n,...,,i,lula,iiiiiiii3211121111n,...,,i,ulaiiiii即1111al111212lau11iiiialiiiiiiiiulal11iiiiiilau11n,...,,i32此时,求解bAx等价于解两个二对角线方程组31yUxbLy自上而下解方程组bLy形象地称为“追”.1111lby323211n,...,i,lylbyiiiiiii自下而上解方程组yUx

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功