【基于线性方程AX=b的迭代解法探讨8500字(论文)】_第1页
【基于线性方程AX=b的迭代解法探讨8500字(论文)】_第2页
【基于线性方程AX=b的迭代解法探讨8500字(论文)】_第3页
【基于线性方程AX=b的迭代解法探讨8500字(论文)】_第4页
【基于线性方程AX=b的迭代解法探讨8500字(论文)】_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于线性方程AX=b的迭代解法探讨摘要本文主要研究了线性方程AX=b、鞍点问题、线性互补问题(LCP)的迭代算法及相关的误差估计和预处理技术,主要内容和创新点包括:研究了求解线性方程组的USAOR迭代法的误差界。针对鞍点问题的结构特点,我们给出了MAOR型迭代算法并证明该方法的收敛性。我们研究了鞍点线性系统的迭代法,给出了鞍点线性系统MPSD迭代解法,并证明了MPSD型迭代法的收敛性。对线性方程组求解,给出了预条件AOR迭代算法,我们的结果显示在系数矩阵为L一矩阵等条件下,预条件AOR迭代算法比经典AOR迭代算法的收敛速度快。建立了线性方程组的一类预条件SAOR迭代算法,并证明了在系数矩阵为不可约对角占优Z一矩阵的条件下该方法收敛。关键词:H一矩阵,迭代法,预处理,鞍点问题目录引言 2一迭代解法 2二迭代法分类和举例 32.1迭代算法分类 32.2举例 4三具体使用迭代法求根时应注意的情况 93.1问题1 93.2问题2 103.3问题3 11四线性方程组的预条件迭代法 18五结论 21参考文献 23引言随着计算机技术的发展,线性方程组的迭代法求解在科学与工程计算中起着越来越重要的作用。在线性方程组AX=b的系数矩阵对称正定及具有((1,1)相容秩序的条件下,我们得到了USAOR迭代法的误差的上界估计。由于许多实际问题如偏微分方程的求解最后常转化为解大型稀疏线性方程组,因而该结果具有实际应用价值。数值结果表明估值有效。在系数矩阵对称正定及具有((1,l)相容秩序的条件下,我们获得了预条件同时置换迭代法的误差上界。将线性互补问题将其转化为等价方程组,应用矩阵分裂和迭代算法的思想,我们给出了求解该问题的预条件同步置换迭代算法。并在H一矩阵的条件下,建立了该数值迭代算法的收敛理论。一迭代解法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值,迭代法又分为精确迭代和近似迭代。比较典型的迭代法如“二分法”和"牛顿迭代法”属于近似迭代法。[1]

迭代是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或者方程组)的过程,为实现这一过程所使用的方法统称为迭代法(IterativeMethod)。一般可以做如下定义:对于给定的线性方程组:X=Bx+f(这里的x、B、f同为矩阵,任意线性方程组都可以变换成此形式),用公式XK+1=Bxk+f(XK代表迭代k次得到的x,初始时k=0)逐步带入求近似解的方法称为迭代法(或称一阶定常迭代法)。如果limk→∞存在,记为x*,称此迭代法收敛。显然x*就是此方程组的解,否则称为迭代法发散。跟迭代法相对应的是直接法(或者称为一次解法),即一次性的快速解决问题,例如通过开方解决方程x+3=4。一般如果可能,直接解法总是优先考虑的。但当遇到复杂问题时,特别是在未知量很多,方程为非线性时,我们无法找到直接解法(例如五次以及更高次的代数方程没有解析解,参见阿贝耳定理),这时候或许可以通过迭代法寻求方程(组)的近似解。二迭代法分类和举例2.1迭代算法分类最常见的迭代法是牛顿法。其他还包括最速下降法、共轭迭代法、变尺度迭代法、最小二乘法、线性规划、非线性规划、单纯型法、惩罚函数法、斜率投影法、遗传算法、模拟退火等等。利用迭代算法解决问题,需要做好以下三个方面的工作:确定迭代变量:在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。建立迭代关系式:所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以顺推或倒推的方法来完成。对迭代过程进行控制:在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。2.2举例例1:一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,问到第12个月时,该饲养场共有兔子多少只?分析:这是一个典型的递推问题。我们不妨假设第1个月时兔子的只数为u1,第2个月时兔子的只数为u2,第3个月时兔子的只数为u3,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有u1=1,u2=u1+u1×1=2,u3=u2+u2×1=4,……根据这个规律,可以归纳出下面的递推公式:un=u(n-1)×2(n≥2)对应un和u(n-1),定义两个迭代变量y和x,可将上面的递推公式转换成如下迭代关系:y=x*2x=y让计算机对这个迭代关系重复执行11次,就可以算出第12个月时的兔子数。参考程序如下:clsx=1fori=2to12y=x*2x=ynextiprintyend例2:阿米巴用简单分裂的方式繁殖,它每分裂一次要用3分钟。将若干个阿米巴放在一个盛满营养参液的容器内,45分钟后容器内充满了阿米巴。已知容器最多可以装阿米巴220,220个。试问,开始的时候往容器内放了多少个阿米巴?请编程序算出。分析:根据题意,阿米巴每3分钟分裂一次,那么从开始的时候将阿米巴放入容器里面,到45分钟后充满容器,需要分裂45/3=15次。而“容器最多可以装阿米巴2^20个”,即阿米巴分裂15次以后得到的个数是2^20。题目要求我们计算分裂之前的阿米巴数,不妨使用倒推的方法,从第15次分裂之后的2^20个,倒推出第15次分裂之前(即第14次分裂之后)的个数,再进一步倒推出第13次分裂之后、第12次分裂之后、……第1次分裂之前的个数。设第1次分裂之前的个数为x0、第1次分裂之后的个数为x1、第2次分裂之后的个数为x2、……第15次分裂之后的个数为x15,则有x14=x15/2、x13=x14/2、……xn-1=xn/2(n≥1)因为第15次分裂之后的个数x15是已知的,如果定义迭代变量为x,则可以将上面的倒推公式转换成如下的迭代公式:x=x/2(x的初值为第15次分裂之后的个数2^20)让这个迭代公式重复执行15次,就可以倒推出第1次分裂之前的阿米巴个数。因为所需的迭代次数是个确定的值,我们可以使用一个固定次数的循环来实现对迭代过程的控制。参考程序如下:clsx=2^20fori=1to15x=x/2nextiprintxendps:java中幂的算法是Math.pow(2,20);返回double,稍微注意一下例3:验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数n,若n为偶数,则将其除以2;若n为奇数,则将其乘以3,然后再加1。如此经过有限次运算后,总可以得到自然数1。人们把谷角静夫的这一发现叫做“谷角猜想”。要求:编写一个程序,由键盘输入一个自然数n,把n经过有限次运算后,最终变成自然数1的全过程打印出来。分析:定义迭代变量为n,按照谷角猜想的内容,可以得到两种情况下的迭代关系式:当n为偶数时,n=n/2;当n为奇数时,n=n*3+1。用QBASIC语言把它描述出来就是:ifn为偶数thenn=n/2elsen=n*3+1endif这就是需要计算机重复执行的迭代过程。这个迭代过程需要重复执行多少次,才能使迭代变量n最终变成自然数1,这是我们无法计算出来的。因此,还需进一步确定用来结束迭代过程的条件。仔细分析题目要求,不难看出,对任意给定的一个自然数n,只要经过有限次运算后,能够得到自然数1,就已经完成了验证工作。因此,用来结束迭代过程的条件可以定义为:n=1。参考程序如下:clsinput"Pleaseinputn=";ndountiln=1ifnmod2=0thenrem如果n为偶数,则调用迭代公式n=n/2n=n/2print"—";n;elsen=n*3+1print"—";n;endifloopend迭代法开平方:#include<stdio.h>#include<math.h>voidmain(){doublea,x0,x1;printf("Inputa:\n");scanf("%lf",&a);//因为a是double型数据,所以要用%lf,而不是%fif(a<0)printf("Error!\n");else{x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-6);}printf("Result:\n");printf("sqrt(%g)=%g\n",a,x1);}求平方根的迭代公式:x1=1/2*(x0+a/x0)。算法:1.先自定一个初值x0,作为a的平方根值,在我们的程序中取a/2作为x0的初值;利用迭代公式求出一个x1。此值与真正的a的平方根值相比,误差很大。⒉把新求得的x1代入x0中,准备用此新的x0再去求出一个新的x1.⒊利用迭代公式再求出一个新的x1的值,也就是用新的x0又求出一个新的平方根值x1,此值将更趋近于真正的平方根值。⒋比较前后两次求得的平方根值x0和x1,如果它们的差值小于我们指定的值,即达到我们要求的精度,则认为x1就是a的平方根值,去执行步骤5;否则执行步骤2,即循环进行迭代。迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:⑴选一个方程的近似根,赋给变量x0;⑵将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;⑶当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤⑵的计算。若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。上述算法用C程序的形式表示为:【算法】迭代法求方程的根:{x0=初始近似根;do{x1=x0;x0=g(x1);/*按特定的方程计算新的近似根*/}while(fabs(x0-x1)>Epsilon);printf(“方程的近似根是%f\n”,x0);}迭代算法也常用于求方程组的根,令X=(x0,x1,…,xn-1)设方程组为:xi=gi(X)(I=0,1,…,n-1)则求方程组根的迭代算法可描述如下:【算法】迭代法求方程组的根{for(i=0;ix=初始近似根;do{for(i=0;iy=x;for(i=0;ix=gi(X);for(delta=0.0,i=0;iif(fabs(y-x)>delta)delta=fabs(y-x);}while(delta>Epsilon);for(i=0;iprintf(“变量x[%d]的近似根是%f”,I,x);printf(“\n”);}三具体使用迭代法求根时应注意的情况3.1问题1编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)。斐波那契数列为:0、1、1、2、3、……,即:fib(0)=0;fib⑴=1;fib(n)=fib(n-1)+fib(n-2)(当n>1时)。写成递归函数有:intfib(intn){if(n==0)return0;if(n==1)return1;if(n>1)returnfib(n-1)+fib(n-2);}递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib⑴和fib(0),分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函数fib中,当n为1和0的情况。在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib⑴和fib(0)后,返回得到fib⑵的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。在编写递归函数时要注意,函数中的局部变量和参数知识局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。3.2问题2问题描述:找出从自然数1、2、……、n中任取r个数的所有组合。例如n=5,r=3的所有组合为:⑴5、4、3⑵5、4、2⑶5、4、1⑷5、3、2⑸5、3、1⑹5、2、1⑺4、3、2⑻4、3、1⑼4、2、1⑽3、2、1分析所列的10个组合,可以采用这样的递归思想来考虑求组合函数的算法。设函数为voidcomb(intm,intk)为找出从自然数1、2、……、m中任取k个数的所有组合。当组合的第一个数字选定时,其后的数字是从余下的m-1个数中取k-1数的组合。这就将求m个数中取k个数的组合问题转化成求m-1个数中取k-1个数的组合问题。设函数引入工作数组a[]存放求出的组合的数字,约定函数将确定的k个数字组合的第一个数字放在a[k]中,当一个组合求出后,才将a[]中的一个组合输出。第一个数可以是m、m-1、……、k,函数将确定组合的第一个数字放入数组后,有两种可能的选择,因还未去顶组合的其余元素,继续递归去确定;或因已确定了组合的全部元素,输出这个组合。细节见以下程序中的函数comb。【程序】:#include#defineMAXN100inta[MAXN];voidcomb(intm,intk){inti,j;for(i=m;i>=k;i--){a[k]=i;if(k>1)comb(i-1,k-1);else{for(j=a[0];j>0;j--)printf(“%4d”,a[j]);printf(“\n”);}}}voidmain(){a[0]=3;comb(5,3);}3.3问题3问题描述:有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的选择方案,使选中物品的总重量不超过指定的限制重量,但选中物品的价值之和最大。设n件物品的重量分别为w0、w1、…、wn-1,物品的价值分别为v0、v1、…、vn-1。采用递归寻找物品的选择方案。设前面已有了多种选择的方案,并保留了其中总价值最大的方案于数组option[],该方案的总价值存于变量maxv。当前正在考察新方案,其物品选择情况保存于数组cop[]。假定当前方案已考虑了前i-1件物品,现在要考虑第i件物品;当前方案已包含的物品的重量之和为tw;至此,若其余物品都选择是可能的话,本方案能达到的总价值的期望值为tv。算法引入tv是当一旦当前方案的总价值的期望值也小于前面方案的总价值maxv时,继续考察当前方案变成无意义的工作,应终止当前方案,立即去考察下一个方案。因为当方案的总价值不比maxv大时,该方案不会被再考察,这同时保证函数后找到的方案一定会比前面的方案更好。对于第i件物品的选择考虑有两种可能:⑴考虑物品i被选择,这种可能性仅当包含它不会超过方案总重量限制时才是可行的。选中后,继续递归去考虑其余物品的选择。⑵考虑物品i不被选择,这种可能性仅当不包含物品i也有可能会找到价值更大的方案的情况。按以上思想写出递归算法如下:try(物品i,当前选择已达到的重量和,本方案可能达到的总价值tv){/*考虑物品i包含在当前方案中的可能性*/if(包含物品i是可以接受的){将物品i包含在当前方案中;if(itry(i+1,tw+物品i的重量,tv);else/*又一个完整方案,因为它比前面的方案好,以它作为最佳方案*/以当前方案作为临时最佳方案保存;恢复物品i不包含状态;}/*考虑物品i不包含在当前方案中的可能性*/if(不包含物品i仅是可男考虑的)if(itry(i+1,tw,tv-物品i的价值);else/*又一个完整方案,因它比前面的方案好,以它作为最佳方案*/以当前方案作为临时最佳方案保存;}为了理解上述算法,特举以下实例。设有4件物品,它们的重量和价值见表:物品0123重量5321价值4431并设限制重量为7。则按以上算法,下图表示找解过程。由图知,一旦找到一个解,算法就进一步找更好的佳。如能判定某个查找分支不会找到更好的解,算法不会在该分支继续查找,而是立即终止该分支,并去考察下一个分支。按上述算法编写函数和程序如下:【程序】:#include#defineN100doublelimitW,totV,maxV;intoption[N],cop[N];struct{doubleweight;doublevalue;}a[N];intn;voidfind(inti,doubletw,doubletv){intk;/*考虑物品i包含在当前方案中的可能性*/if(tw+a.weight<=limitW){cop=1;if(ielse{for(k=0;koption[k]=cop[k];maxv=tv;}cop=0;}/*考虑物品i不包含在当前方案中的可能性*/if(tv-a.value>maxV)if(ielse{for(k=0;koption[k]=cop[k];maxv=tv-a.value;}}voidmain(){intk;doublew,v;printf(“输入物品种数\n”);scanf((“%d”,&n);printf(“输入各物品的重量和价值\n”);for(totv=0.0,k=0;k{scanf(“%1f%1f”,&w,&v);a[k].weight=w;a[k].value=v;totV+=V;}printf(“输入限制重量\n”);scanf(“%1f”,&limitV);maxv=0.0;for(k=0;kfind(0,0.0,totV);for(k=0;kif(option[k])printf(“%4d”,k+1);printf(“\n总价值为%.2f\n”,maxv);}作为对比,下面以同样的解题思想,考虑非递归的程序解。为了提高找解速度,程序不是简单地逐一生成所有候选解,而是从每个物品对候选解的影响来形成值得进一步考虑的候选解,一个候选解是通过依次考察每个物品形成的。对物品i的考察有这样几种情况:当该物品被包含在候选解中依旧满足解的总重量的限制,该物品被包含在候选解中是应该继续考虑的;反之,该物品不应该包括在当前正在形成的候选解中。同样地,仅当物品不被包括在候选解中,还是有可能找到比目前临时最佳解更好的候选解时,才去考虑该物品不被包括在候选解中;反之,该物品不包括在当前候选解中的方案也不应继续考虑。对于任一值得继续考虑的方案,程序就去进一步考虑下一个物品。【程序】:#include#defineN100doublelimitW;intcop[N];structele{doubleweight;doublevalue;}a[N];intk,n;struct{int;doubletw;doubletv;}twv[N];voidnext(inti,doubletw,doubletv){twv.=1;twvtw=tw;twvtv=tv;}doublefind(structele*a,intn){inti,k,f;doublemaxv,tw,tv,totv;maxv=0;for(totv=0.0,k=0;ktotv+=a[k].value;next(0,0.0,totv);i=0;While(i>=0){f=twv.;tw=twvtw;tv=twvtv;switch(f){case1:twv.++;if(tw+a.weight<=limitW)if(i{next(i+1,tw+a.weight,tv);i++;}else{maxv=tv;for(k=0;kcop[k]=twv[k].!=0;}break;case0:i--;break;default:twv.=0;if(tv-a.value>maxv)if(i{next(i+1,tw,tv-a.value);i++;}else{maxv=tv-a.value;for(k=0;kcop[k]=twv[k].!=0;}break;}}returnmaxv;}voidmain(){doublemaxv;printf(“输入物品种数\n”);scanf((“%d”,&n);printf(“输入限制重量\n”);scanf(“%1f”,&limitW);printf(“输入各物品的重量和价值\n”);for(k=0;kscanf(“%1f%1f”,&a[k].weight,&a[k].value);maxv=find(a,n);printf(“\n选中的物品为\n”);for(k=0;kif(option[k])printf(“%4d”,k+1);printf(“\n总价值为%.2f\n”,maxv);}程序调用自身的编程技巧称为递归(recursion)。注意:⑴递归就是在过程或函数里调用自身;⑵在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。四线性方程组的预条件迭代法对于线性方程组Ak=b,将系数矩阵A进行分裂A=M一N(M非奇异),则有求近似解的迭代格式:XK+1=M-1NXK+M-1bK=0,1,2…..若取非奇异矩阵P左乘该线性方程组两端,即PAx=Pb,再做分裂PA=MPNp(MP非奇异),由此构成的迭代格式:XK+1=Mp-1NpXK+Mp-1bK=0,1,2…..被称为预条件迭代法,对迭代法进行预处理的目的是为了改善求解线性方程组的迭代法的收敛速度,或者使得原来不收敛的变得收敛对迭代法进行预处理的关键是在于如何选取预条件矩阵一般来说,预条件矩阵尸的选取要么能降低矩阵尸的条件数,要么使得预处理后的迭代矩阵的谱半径变小文提出了对对角占优的一矩阵做预处理的两种方法,随后又通过引入参数对该方法进行了推广由于在实际讨论中,均对一矩阵附加条件使之变成一矩阵所以,实际上是对这种特殊一矩阵的预处理迭代进行讨论。文用I+U对矩阵A做预处理,其中I为。阶单位矩阵,-U为A的严格上三角矩阵,并证明了:对于严格占优的Z一矩阵,就Gauss-Seidel迭代而言,经预处理后迭代的收敛速度比预处理前迭代的收敛速度快.文[71〕用I+口U对矩阵A做预处理,证明了对严格占优的Z一矩阵,在0≤β≤1的条件下,(I+βu)(I-L-U),明仍然是一个严格占优的Z一矩阵,同时也证明了一些收敛性问题,Milaszewicz在文献用矩阵Pc(见1-1)作为预条件子对矩阵A=I一L一U进行预处理.则:AC=(I+C)A=I-L-U+C-CU=MC-NC其中:MC=(I-DC)-(L-C+EC)NC=U+FC而,和分别为矩阵的对角、严格下三角和严格上三角部分从而建立预条件Gauss-Seidel一迭代算法:MC-1NC=[(I-DC)-(l-c+EC)]-1(U+FC)10………..0-a211…0pc=(I+C)=….….…..-an10………11991年,A.D.Gunawardena等人提出了修改的Gauss-Seidel方法(MGS方法).取矩阵P=I+S,其中0-a12S=0-a23…….0-an-1,n则:AS=(I+S)A=I-L-U+S-SL-SU=MS-NS其中:MC=(I-DS)-(L+Es),NS=u-s+su而Ds,Es分别为矩阵SL的对角和严格下三角部分.则PAx=Pb的Gauss-Seidel迭代格式为:XK+1=MS-1NSXK+bk=0,1,2…其中,MS-1NS=[(I-DS)-(L+ES)]-1(U-S+SU),b=[(I-DS)-(L+ES)]-1PbA.D.Gunawardena证明了该方法的收敛性并指出MGS方法优于Gauss-Seidel方法和Jacobi方法,为了进一步研究修改的Gauss-Seidel方法及改善收敛速度,1997年,Kohn。等人提出用I+Sa对矩阵A做预处理,并采用迭代格式:XK+1=TXK+bk=0,1,2…其中,T=(I-Sal-l)-1(U-Sa+Sau),b=(I-Sal-l)-1pb0-a1a12S=0-a2a23…….0-an-1an-1,n0将A.D.Gunawardena的相关结果进行了推广,给出了当A是某类对角占优Z一矩阵时的一个收敛定理,并从数值上说明所给出的方法优于SOR方法.2000年,W.Li,W.W.Sun及2004年,H.Niko等研究者进一步给出了当系数矩阵A为Z一矩阵时更一般的情形,并讨论预条件Gauss-Seidel迭代法和经典Gauss-Seidel迭代法的比较定理.2001年,D.J.Evans等人提出了预条件AOR迭代法.分别取了预条件矩阵P=I+S,其中0,0…….000,0……00S=………………..00…..00-an1000和预条件矩阵P=I+S,其中00…0000…00S=00…0000…00-an10..00对于预条件方程:(I+S)A=(I+s)b设:A=I-L-UA=(I+s)A=(I+S-L-SU)-U=D-L-U其中,Ddiag(1,1,…,1-a1nan-1)则预条件迭代格式为:XK+1=TXK+bk=0,1,2….其中:T=(D)-rL)-1[(1-w)D+(W-r)]L+wu类似地,对预条件方程组(I+SI)Ax=(I+SI)b应用迭代法,也相应地得到其对应的预条件迭代格式。五结论一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论