研究生数值分析(12)---高斯-赛德尔(Gauss-Seidel)迭代法
高斯-赛德尔迭代法的算法及程序设计

高斯-赛德尔迭代法的算法及程序设计设方程组Ax b=的系数矩阵的对角线元素(1,2,,)=,M为迭代次数容许的最大i n值,ε为容许误差。
1 取初始向量令k=0.2 对i=1,2,…,n计算3 如果则输出结束;否则执行44 如果则不收敛,终止程序;否则,转2源程序:#include <stdio.h>#include <math.h>#define N 600void main(){int i;double x[4];double c[4][5]={10,-1,2,0,-11,0,8,-1,3,-11,2,-1,10,0,6,-1,3,-1,11,25}; void GaussSeidel(double *,int,double[]);GaussSeidel(c[0],4,x);for(i=0;i<=3;i++)printf("x[%d]=%f\n",i,x[i]);}void GaussSeidel(double *a,int n,double x[]){int i,j,k=1;double d,dx,eps;for(i=0;i<=3;i++)while(1){eps=0;for(i=0;i<=3;i++){d=0;for(j=0;j<=4;j++){if(j==i)continue;d+=*(a+i*(n+1)+j)*x[j];}dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));eps+=fabs(dx-x[i]);x[i]=dx;}if(eps<1e-6){printf("迭代次数是:%d\n",k);return;}if(k>N){printf("迭代发散n\n");return;}}}输出结果结果分析:从输出结果可以看出此方程组的迭代次数为1,此时能得到精确结果是x[0]=-1.467391,x [1]=-2.358696,x[2] =0.657609,x[3] =2.842391从结果和原有知识可以知道其系数矩阵是严格对角占优的。
Guass-Seidel迭代法

1、高斯-塞德尔迭代法:实验B 、用Guass-Seidel 迭代法求解12310127.111028.3115 4.2x x x --⎛⎫⎛⎫⎛⎫ ⎪⎪ ⎪--= ⎪⎪ ⎪ ⎪⎪ ⎪--⎝⎭⎝⎭⎝⎭这里要求当()(1)61.010k k x x --∞-<⨯时迭代终止。
高斯-塞德尔迭代法程序代码:GaussSeidel.mfunction [ x ] = GaussSeidel( A, b, x0, epsilon, N ) % GaussSeidel 迭代法求解线性方程组的解 % A 方程组系数矩阵,方阵,% b 方程组右端项,% x0 迭代初始值,列向量% epsilon 精度要求,% N 最大迭代次数% x 迭代结果,方程组的近似解,列向量x=x0; %给x 赋一个值[mA,nA]=size(A);mb=length(b);if mA~=nA || mA~=mbdisp('A ,b 输入不正确!');return;endD=diag(diag(A)); %取出A 的对角矩阵DL=-tril(A,-1); %取出A 的严格下三角矩阵,加负号 U=-triu(A,1); %取出A 的严格上三角矩阵,加负号 B=(D-L)\U; %右除,即inv(D-L)*U;f=(D-L)\b;n=1;while n<=N %迭代x=B*x0+f %将迭代的中间步骤显示在命令窗口 if norm(x-x0,inf)<epsilonn %输出满足精度的迭代次数return;endn=n+1;x0=x;endif n>Ndisp('超出最大迭代次数N ,x 尚未达到精度。
'); endendshi.mA=[10,-1,-2;-1,10,-2;-1,-1,5];b=[7.1;8.3;4.2];x0=[0;0;0];epsilon=10^-6;N=30;[ x ] = GaussSeidel( A, b, x0, epsilon, N );。
高斯赛德尔法

的系数矩阵A可逆且主对角元素都不为零,令
)
并将A分解成
A = (A D) + D
Dx = (D A)x + b 从而方程可以写成 x = B1 x + f1 令 B = I D A, f = D b 其中
1 1 1 1
以 B 为迭代矩阵的迭代法 称为雅克比迭代法。
1
x ( k +1) = B1 x ( k ) + f1
(k ) 由雅可比迭代公式可知,在迭代的每一步计算过程中是用x 的全部分量 ( k +1 ) ( k+1) x i 时,已经算出最新的 来计算 x 的 所有分量 , 显然在计算第i个分量 分量,但没被利用。因此,将最新算出来的第k+1次近似加以利用,就 得到了高斯赛德尔迭代法。 A = D L U 将矩阵A分解成 其中 D = diag ( a11 ,a 22 ,..., a nn ) , L ,U 是A的主对角除外的下三角 和上三角部分,于是有 (D L )x = Ux + b
ρ 是迭代矩阵的谱半径(B0中绝对值最大的特征值的绝对值)
首先取 α =1.5,迭代若干次后,有 式中: 为第k 次迭代的节点电压与该节 点前次迭代值的差值的绝对值 U ( m ) U ( m 1) 为所有节点中差值绝对值最大的 ∞ Bso为加速迭代矩阵 再有
U ( m ) U ( m 1)
将上式带入最佳加速因子公式得到近似最佳加 速因子 α 。
x = B2 x + f 2 即 B = (D L ) U , f = (D L ) 其中 以 B2 为迭代矩阵的迭代法 x ( k +1) = B2 x ( k ) + f 2 称为高斯-赛德尔迭代法。
Gauss-Seidel迭代法

G a u s s-S e i d e l迭代法-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN数值分析课程论文姓名:学号:Gauss-Seidel迭代法求解线性方程组摘要线性方程组的求解在许多的工程技术中是一个极为常见的问题,对于线性方程组的求解无论从理论上还是实践应用上都已经成熟.对于一般线性方程组的求解有Gauss消元法为基础的直接法,也有迭代法.其中Gauss-Seidel是一个重要的组成部分.鉴于此,本论文细致地研究了用Gauss-Seidel迭代法求解线性方程组.论文的第一部分先介绍了迭代法求解线性方程组的一般模式,并给出这种迭代法的收敛性条件,Gauss-Seidel迭代法求解线性方程组的基本原理.这一部分是Gauss-Seidel迭代法的理论基础.论文的第二部分给出了Gauss-Seidel迭代法的具体操作步骤,以伪代码的形式细致的描绘如何使用Gauss-Seidel迭代法的求解方程组.同时,为了验证算法的有效性,在这一部分,还引入一个简单的算例,用于MATLAB编程发现计算结果完全正确.论文的第三部分给出了关于Gauss-Seidel迭代法的MATLAB程序,用于计算线性方程组.关键词:Gauss-Seidel迭代法,基本原理,算例,MATLAB程序目录1 Gauss-Seidel迭代法的基本理论 (1)1.1线性方程组的迭代法求解 (1)1.2Gauss-Seidel迭代法的原理 (2)2.具体的算例和操作步骤 (3)2.1. Gauss-Seidel迭代法的伪代码 (3)2.2.具体的算例验证算法的有效性 (3)3.MATLAB程序 (4)参考文献 (6)Gauss-Seidel 迭代法求解线性方程组一. Gauss-Seidel 迭代法的基本理论1.1线性方程组的迭代法求解在考虑求解线性方程组Ax=b 时,其中A 为非奇异矩阵.尽管Guass 消元法通过有限次运算可以求解此问题,其对应的计算复杂度为3O(n ).但是对于工程技术中和某些偏微分方程过程中出现的大型稀疏型矩阵利用迭代法可以更快的收敛,找到解.另外一方面,由于迭代法占用的计算机内存少,且便于计算.这两方面的优势促成了迭代法求解线性方程组的研究.关于迭代法的收敛的几个判定条件 1(迭代法基本原理)设有方程组f Bx x +=,对于任意初始向量()0x 及任意f ,解此方程组的迭代法(即()()f Bx x k k +=+1)收敛的充要条件是()1<B ρ.2(迭代法收敛的充分条件)如果方程组f Bx x +=的迭代公式为()()f Bx x k k +=+1(()0x 为任意初始向量),且迭代矩阵的某一种范数1<=q B v ,则:︒1迭代法收敛;︒2()()()v k k vk x x q qx x 11-*--≤-;︒3()()()v kvk x x q q xx 011--≤-*.定理3 如果mn RA ⨯∈为严格对角占优阵或为不可约弱对角占优阵,则对于任意的()0x ,解方程组b Ax =的Jacobi 迭代法,Gauss-Seidel 迭代法均收敛.定理4如果A 为对称正定矩阵,且20<<ω,则解式b Ax =的SOR 方法收敛.1.2Gauss-Seidel 迭代法的原理由Jacobi方法迭代公式()()()()010k k xx B x f +⎧⎪⎨=+⎪⎩初始向量,可知,迭代的每一步计算过程,都是用()k x 的全部分量来计算()1+k x 的所有分量,显然在计算第i 个分量()1+k ix时,已经计算出的最新分量()11+k x ,()12+k x ,…,()11+-k i x 没有被利用.从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第1+k 次近似()1+k x 的分量()1+k jx 加以利用,就得到所谓解方程组的Gauss-Seidel 迭代法(简称G-S 方法):()()()()()T=002010n x x x x ,,, (初始向量),()()()()n i k x a x a b a x i j n i j k j ij k j ij i iik i,,2,1;,2,1,0111111 ==⎪⎪⎭⎫ ⎝⎛--=∑∑-=+=++或写为()()()()()⎪⎩⎪⎨⎧⎪⎪⎭⎫ ⎝⎛--=∆==∆+=∑∑-==++.1,,,2,1;,2,1,01111i j ni j k j ij k iij i ii i i k i k i x a x a b a x n i k x x x上面第2个式子利用了最新计算出的分量()11+k x ,第i 个式子利用了计算出的最新分量()()1,,2,11-=+i j x k j .还可写成矩阵形式()()()()()()k k k k k Ux b x L D Ux Lx b Dx+=-++=+++111,,若设()1--L D 存在,则()()()()b L D Ux L D x k k 111--+-+-=, 于是Gauss-Seidel 迭代公式的矩阵形式为()()f Gx x k k +=+1,()6.2.8 其中 ()U L D G 1--=,()b L D f 1--=.由此可以看出,应用Gauss-Seidel 迭代法解式b Ax =,就是对方程组f Gx x +=应用迭代法.G 称为解式的Gauss-Seidel 迭代法的迭代矩阵.Gauss-Seidel 迭代法的一个明显优点是,在用计算机计算时,只需一组工作单元,以便存放近似解.由式可以看出,每迭代一步只需计算一次矩阵与向量的乘法.二.具体的算例和操作步骤2.1. Gauss-Seidel 迭代法的伪代码 1.输入问题的参数A,b 2.分解A 为D,L,U.3.计算迭代方程G ,f.4.开始迭代,随机设定一个初值.5.以迭代方程更新x 的值.6.如果到达迭代次数,则进入步骤7;否则,回到步骤5.7.输出x ,结束.2.2.具体的算例验证算法的有效性 求解如下的线性方程组1231231238-3+2=204+11-=336+3+12=36x x x x x x x x x ⎧⎪⎨⎪⎩ 这个方程的真实解为(3,2,1). 程序运行结果: 情况1:输入GS (A,b ) GS(A,b)xhis =0 0 0 2.5000 2.0909 1.2273 2.9773 2.0289 1.0041 3.0098 1.9968 0.9959 2.9998 1.9997 1.0002 2.9998 2.0001 1.0001 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 ans = 3.0000 2.00001.00000.51.5解的迭代情况图一。
数值分析中的高斯-赛德尔迭代法-教案

数值分析中的高斯-赛德尔迭代法-教案一、引言1.1背景介绍1.1.1数值分析在现代科学和工程中的应用1.1.2高斯-赛德尔迭代法在解决线性方程组中的重要性1.1.3迭代法的基本概念和分类1.1.4高斯-赛德尔迭代法与其他迭代法的比较1.2教学目标1.2.1理解高斯-赛德尔迭代法的数学原理1.2.2学会应用高斯-赛德尔迭代法解决实际问题1.2.3掌握高斯-赛德尔迭代法的编程实现1.2.4分析高斯-赛德尔迭代法的收敛性和效率1.3教学方法1.3.1采用理论讲解与实践操作相结合的方式1.3.2利用多媒体和板书相结合的教学手段1.3.3引导学生进行小组讨论和问题解答1.3.4通过案例分析和作业练习巩固知识点二、知识点讲解2.1高斯-赛德尔迭代法的数学原理2.1.1线性方程组的迭代解法概述2.1.2高斯-赛德尔迭代法的迭代公式2.1.3高斯-赛德尔迭代法的矩阵形式2.2高斯-赛德尔迭代法的应用2.2.1高斯-赛德尔迭代法在电路分析中的应用2.2.2高斯-赛德尔迭代法在热传导问题中的应用2.2.3高斯-赛德尔迭代法在流体力学中的应用2.2.4高斯-赛德尔迭代法在经济模型中的应用2.3高斯-赛德尔迭代法的实现2.3.1高斯-赛德尔迭代法的算法步骤2.3.2高斯-赛德尔迭代法的编程实现2.3.3高斯-赛德尔迭代法的程序调试与优化2.3.4高斯-赛德尔迭代法的软件工具介绍三、教学内容3.1高斯-赛德尔迭代法的收敛性分析3.1.1收敛性的定义和判定条件3.1.2高斯-赛德尔迭代法的收敛速度3.1.3收敛性分析的理论基础3.1.4收敛性分析的实例演示3.2高斯-赛德尔迭代法的效率分析3.2.1计算效率的定义和评价指标3.2.2高斯-赛德尔迭代法与其他迭代法的效率比较3.2.3影响高斯-赛德尔迭代法效率的因素3.2.4提高高斯-赛德尔迭代法效率的方法3.3.1案例一:电路分析中的高斯-赛德尔迭代法应用3.3.2案例二:热传导问题中的高斯-赛德尔迭代法应用3.3.3案例三:流体力学中的高斯-赛德尔迭代法应用3.3.4案例四:经济模型中的高斯-赛德尔迭代法应用四、教学目标4.1知识与技能目标4.1.1掌握高斯-赛德尔迭代法的基本原理和迭代公式4.1.2学会使用高斯-赛德尔迭代法解决线性方程组问题4.1.3能够编写高斯-赛德尔迭代法的程序代码4.1.4能够分析高斯-赛德尔迭代法的收敛性和计算效率4.2过程与方法目标4.2.1培养学生的逻辑思维能力和数学建模能力4.2.2培养学生运用迭代法解决实际问题的能力4.2.3培养学生进行数学实验和数据分析的能力4.2.4培养学生进行团队合作和交流讨论的能力4.3情感态度与价值观目标4.3.1培养学生对数值分析的兴趣和热情4.3.2培养学生的科学精神和创新意识4.3.3培养学生严谨治学和精益求精的态度4.3.4培养学生的国际视野和跨文化交流能力五、教学难点与重点5.1教学难点5.1.1高斯-赛德尔迭代法的数学原理和迭代公式5.1.2高斯-赛德尔迭代法的收敛性分析5.1.3高斯-赛德尔迭代法的编程实现和调试5.1.4高斯-赛德尔迭代法在实际问题中的应用5.2教学重点5.2.1高斯-赛德尔迭代法的基本原理和迭代公式5.2.2高斯-赛德尔迭代法的收敛性分析5.2.3高斯-赛德尔迭代法的编程实现和调试5.2.4高斯-赛德尔迭代法在实际问题中的应用5.3教学策略5.3.1采用案例教学法和问题导向教学法5.3.2利用多媒体和板书相结合的教学手段5.3.3引导学生进行小组讨论和问题解答5.3.4通过案例分析和作业练习巩固知识点六、教具与学具准备6.1教具准备6.1.1多媒体投影仪和计算机6.1.2白板和彩色粉笔6.1.3高斯-赛德尔迭代法的PPT课件6.1.4高斯-赛德尔迭代法的程序代码和软件工具6.2学具准备6.2.1笔记本电脑和编程软件6.2.2数值分析教材和相关参考书籍6.2.3高斯-赛德尔迭代法的案例分析和作业练习6.2.4小组讨论和问题解答的场地和设备6.3教学资源准备6.3.1高斯-赛德尔迭代法的在线课程和视频教程6.3.2高斯-赛德尔迭代法的学术论文和研究成果6.3.3高斯-赛德尔迭代法的软件工具和程序库6.3.4高斯-赛德尔迭代法的实际应用案例和项目七、教学过程7.1导入新课7.1.1引入数值分析和高斯-赛德尔迭代法的背景7.1.2提出问题和挑战,激发学生的兴趣和好奇心7.1.3回顾迭代法的基本概念和分类7.1.4阐述高斯-赛德尔迭代法的重要性和应用领域7.2知识讲解7.2.1详细讲解高斯-赛德尔迭代法的数学原理和迭代公式7.2.2通过实例演示高斯-赛德尔迭代法的应用和计算过程7.2.3分析高斯-赛德尔迭代法的收敛性和计算效率7.2.4讲解高斯-赛德尔迭代法的编程实现和调试技巧7.3实践操作7.3.1分组进行高斯-赛德尔迭代法的编程实现和调试7.3.2通过案例分析和作业练习巩固知识点7.3.3引导学生进行小组讨论和问题解答7.3.4提供反馈和指导,帮助学生提高编程能力和问题解决能力7.4.2引导学生对高斯-赛德尔迭代法的理解和应用进行反思7.4.3提供进一步学习和研究的建议和资源7.4.4鼓励学生参与相关的学术活动和项目实践八、板书设计8.1高斯-赛德尔迭代法的基本原理和迭代公式8.1.1高斯-赛德尔迭代法的迭代公式8.1.2高斯-赛德尔迭代法的矩阵形式8.1.3高斯-赛德尔迭代法的收敛条件8.1.4高斯-赛德尔迭代法的计算步骤8.2高斯-赛德尔迭代法的应用案例8.2.1电路分析中的高斯-赛德尔迭代法应用8.2.2热传导问题中的高斯-赛德尔迭代法应用8.2.3流体力学中的高斯-赛德尔迭代法应用8.2.4经济模型中的高斯-赛德尔迭代法应用8.3高斯-赛德尔迭代法的编程实现和调试8.3.1高斯-赛德尔迭代法的算法步骤8.3.2高斯-赛德尔迭代法的编程实现8.3.3高斯-赛德尔迭代法的程序调试与优化8.3.4高斯-赛德尔迭代法的软件工具介绍九、作业设计9.1基础练习题9.1.1编写高斯-赛德尔迭代法的程序代码9.1.2使用高斯-赛德尔迭代法解决线性方程组问题9.1.3分析高斯-赛德尔迭代法的收敛性和计算效率9.1.4比较高斯-赛德尔迭代法与其他迭代法的优缺点9.2案例分析题9.2.1分析电路分析中的高斯-赛德尔迭代法应用案例9.2.2分析热传导问题中的高斯-赛德尔迭代法应用案例9.2.3分析流体力学中的高斯-赛德尔迭代法应用案例9.2.4分析经济模型中的高斯-赛德尔迭代法应用案例9.3扩展阅读与思考题9.3.1阅读相关的学术论文和研究成果9.3.2思考高斯-赛德尔迭代法的改进和优化方法9.3.3探索高斯-赛德尔迭代法在其他领域的应用9.3.4分析高斯-赛德尔迭代法在并行计算中的应用十、课后反思及拓展延伸10.1教学反思10.1.1反思教学内容的组织和讲解方式10.1.2反思学生的参与度和学习效果10.1.3反思教学方法和策略的有效性10.1.4反思教学资源和材料的适用性10.2拓展延伸10.2.1探索高斯-赛德尔迭代法的进一步研究和应用10.2.2学习其他数值分析方法和算法10.2.3参与相关的学术活动和项目实践10.2.4拓宽国际视野,了解数值分析的前沿动态重点关注环节的补充和说明:1.高斯-赛德尔迭代法的数学原理和迭代公式的讲解,确保学生理解并掌握基本概念。
高斯赛德尔法潮流计算

高斯——赛德尔法潮流计算潮流计算高斯——赛德尔迭代法(Gauss一Seidel method)是求解电力系统潮流的方法。
潮流计算高斯——赛德尔迭代法又分导纳矩阵迭代法和阻抗矩阵迭代法两种。
前者是以节点导纳矩阵为基础建立的赛德尔迭代格式;后者是以节点阻扰矩阵为基础建立的赛德尔迭代格式。
高斯——赛德尔迭代法这是数学上求解线性或非线性方程组的一种常用的迭代方法。
本实验通过对电力网数学模型形成的计算机程序的编制与调试,获得形成电力网数学模型:高斯---赛德尔法的计算机程序,使数学模型能够由计算机自行形成,即根据已知的电力网的接线图及各支路参数由计算程序运行形成该电力网的节点导纳矩阵和各节点电压、功率。
通过实验教学加深学生对高斯---赛德尔法概念的理解,学会运用数学知识建立电力系统的数学模型,掌握数学模型的形成过程及其特点,熟悉各种常用应用软件,熟悉硬件设备的使用方法,加强编制调试计算机程序的能力,提高工程计算的能力,学习如何将理论知识和实际工程问题结合起来。
高斯---赛德尔法潮流计算框图开始输入数据,定义数组给定PQ节点电压初值给定PV节点电压实部(或虚部)置迭代计数b=0计算PQ节点电压实部和虚部先计算PV节点无功功率再用其计算PV节点电压实部和虚部计算平衡节点的有功和无功NY[1]系统节点的分类根据给定的控制变量和状态变量的不同分类如下①P 、Q 节点(负荷节点),给定Pi 、Qi 求Vi 、Si ,所求数量最多;②负荷节点,变电站节点(联络节点、浮游节点),给定P Gi 、QGi 的发电机节点,给定Q Gi 的无功电源节点;③PV 节点(调节节点、电压控制节点),给定P i 、Q i 求Q n 、S n ,所求数量少,可以无有功储备的发电机节点和可调节的无功电源节点;④平衡节点(松弛节点、参考节点(基准相角)、S 节点、VS 节点、缓冲节点),给定V i ,δi =0,求P n 、Q n (V s 、δs 、P s 、Q s )。
高斯消去法高斯塞德尔迭代法

数值计算高斯消去法和高斯-塞德尔迭代法摘要虽然已学过加减消元法、代入消元法、矩阵变换法和Cramer 法则等,但是无法满足实际计算需要,故在此讨论在计算机上实现的有效而实用的解法。
线性方程组的解法大致分2类:直接法(高斯消去法)和迭代法(高斯-赛德尔迭代法),在此对着此类算法进行比较分析。
一、算法设计当计算线性方程组如下时,11112211211222221122n n n n n n nn n na x a x a xb a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (1-1)为方便起见,常将线性方程组表示成矩阵形式Ax b=其中1111n n nn a a A a a ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦1n x x x ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦1n b b b ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦并始终假定A 是非奇异的,即方程组的解存在且唯一。
1.1高斯消去法消去法就是按特定顺序进行的矩阵初等变换法,当消元按自然顺序进行时,称为高斯顺序消去法。
一般情况下的高斯顺序消去法的计算机算法如下,现将方程组(1-1)的增广矩阵记作(0)(0)(0)11111(0)(0)(0)11n n n nn nn a a a a a a ++⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦假设经k-1步消元后,增广矩阵化为(0)(0)(0)(0)1112111(1)(1)(1)22221(1)(1)(1)1(1)(1)(1)1nn nn k k k kk knkn k k k nk nnnn a a a a a a a a a a a a a ++---+---+⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦其中()s ij a 的上标表示是由s 步消元得到的植。
第k 步消元:设(1)0k kk a -≠,以第k 行为基础,将以后各行中的(1)k ik a -化为0,为此先计算(1)(1)/k k ik ik kk l a a --=然后以第i 行减去第k 行乘以ik l ,即以()(1)(1)k k k ij ij ik kj a a l a --=-()()1,,11,,j k n i k n =++=+于是得(0)(0)(0)11111(1)(1)(1)(1)11()()()11111()()()11n n k k k k kkkk knkn k k k k k k nk n k k k k nnnnn a a a a a a a a a a a a a +----+++++++++⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦经n-1步消元后,增广矩阵化为(0)(0)(0)11111(1)(1)(1)1(1)(1)1n n k k k kk knkn n n nn nn a a a a a a a a +---+--+⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦自下往上逐步回代即可求得其解(1)(1)1(1)(1)(1)11/()/(1,2,,1)n n n nn nnnk k k k kn kj j kk j k x a a x aax a k n n --+---+=+==-=--∑由行列式的初等变换和矩阵初等变换的关系可知,顺序消元法的每一步系数行列式之值不变,因此原方程组之系数行列式的值为(0)(2)(1)1122n nn a a a - ,可在求解过程中逐步累乘求得。
【精品】高斯-赛德尔迭代法的算法及程序设计

【精品】高斯-赛德尔迭代法的算法及程序设计高斯-赛德尔迭代法是求解线性方程组的一种迭代法,它是对高斯消元法的改进。
其基本思想是用当前的结果来更新方程组中的未知量,不断迭代直到满足停止条件。
本文介绍了高斯-赛德尔迭代法的算法原理和程序设计。
一、算法原理对于线性方程组 Ax = b,我们可以将系数矩阵 A 分解为 A = L + D + U,其中 L 是A 的下三角部分,D 是 A 的对角线部分,U 是 A 的上三角部分。
将方程组写成如下形式:(A + L)x = (b - Ux) + Dx令则原方程组可化为Bx = c + Dx^{(k)}其中 k 表示迭代次数,x^{(k)} 表示第 k 次迭代的未知量。
通过不断地迭代,我们可以得到 x^{(k+1)},直到 x^{(k+1)} 与 x^{(k)} 的差值小到可接受的误差范围内。
高斯-赛德尔迭代法的迭代公式如下:x_i^{(k+1)} = \frac{1}{a_{ii}}\left(b_i - \sum_{j=1}^{i-1} a_{ij}x_j^{(k+1)} - \sum_{j=i+1}^{n} a_{ij}x_j^{(k)}\right),\ i = 1, 2, \dots, n其中 x_j^{(k+1)} 表示第 k+1 次迭代中已经计算出的第 j 个未知量的值。
二、程序设计1. 定义函数:定义高斯-赛德尔迭代法函数 gauss_seidel(A, b, x0, eps, max_iter),其中 A 表示系数矩阵,b 表示常数向量,x0 表示初始解向量,eps 表示停止条件中的误差限,max_iter 表示最大迭代次数。
2. 初始化变量:在程序中对变量进行初始化,包括未知量向量 x,误差 e,迭代次数 k 和停止标志 flag。
3. 迭代求解:利用高斯-赛德尔迭代法的迭代公式对未知量进行计算,并进行误差判断,判断误差是否小于 eps 或迭代次数是否超过了 max_iter,如果满足其中一个条件,则将停止标志 flag 置为 True,否则将进行下一次迭代。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
雅可比迭代矩阵
0 0.2 0.1 BJ 0.2 0 0.1
0.2 0.4 0
BJ 0.6 1 雅可比迭代过程必收敛;
高斯-赛德尔迭代矩阵
0 BG 0
0
0.2 0.04 0.056
0.1
0.12
0.068
BG 0.3 1 高斯-赛德尔迭代过程也收敛。
由定理的误差估计式 X (k) X * B k X (1) X (0) , k 1, 2,3, 1 B
2、高斯-赛德尔(Gauss-Seidel)迭代法 研究雅可比迭代法,我们发现在逐个求 X(k+1)的
分量时,当计算到 xi(k+1) 时,分量 x1(k+1) , … , xi1(k+1)都已经求得, 而仍用旧分量x1(k), … , xi-1(k)计算 xi(k+1)。由于新计算出的分量比旧分量准确些,因此 设想一旦新分量 x1(k+1) , … , xi-1(k+1) 求出,马上就用 新分量 x1(k+1) , … , xi-1(k+1) 代替雅可比迭代法中 x1(k),…,xi-1(k)来求 xi(k+1) 。这就是 (Gauss-Seidel) 迭代 法。
可以看出, B 越小收敛速度越快, 且可用来估计迭代次数。
在例8例9中,显然 BG 比 BJ 小, 所以高斯-赛德尔迭代法比雅可比迭代法收敛速度快。
若在例8例9中要求近似解 X (k) 的误差
X (k) X * 104
则由误差估计式知,只要 k 满足
Bk
X (1) X (0) 104
1729 500
于是
(BG )
27 1729 500
0.1372
1
因而高斯-赛德尔迭代公式是收敛的。
3 迭代法收敛条件与误差估计 我们先引入一个叫矩阵谱半径的概念。
定义 矩阵 A Rnn 的所有特征值 i (i 1, 2, , n)
的模的最大值称为矩阵 A 的谱半径,记作 ( A)
即
( A)
高斯-赛德尔迭代公式如下:
x1(k
1)
1 a11
(a12 x2( k )
a13 x3( k )
a1nxn(k) b1)
x2(
k
1)
1 a11
(a21 x1( k 1)
a23 x3( k )
a2nxn(k) b2 )
xi(k
1)
1 aii
(ai1 x1( k 1)
a x (k1) i2 2
x3(k
1)
0.2x1(k 1)
0.4x2(k1)
2
取迭代初值
X (0)
(
x (0) 1
,
x2(0
)
,
x (0) 3
)T
(0, 0, 0)T
按此迭代公式进行迭代,计算结果为
k
x (k) 1
x (k) 2
x (k) 3
00 1 0.3
0
0
1.56 2.684
2 0.8804 1.9445 2.9539
max
1in
i
前面,我们在应用雅可比迭代法与高斯-赛德尔迭 代法解一阶线性方程组时,判断各迭代公式是收敛还
是发散,都要计算雅可比迭代矩阵 BJ 与高斯-赛德尔
迭代矩阵 BG 的特征值.由于矩阵 A 有些算子范数(比
如 A 与 A )远比矩阵 A 的特征值容易计算,为此给
1
出如下结论。
定理3 矩阵A的谱半径不超过矩阵A的任何
收敛的充分条件,它表明只要迭代矩阵 B 的某种子 范数 B 小于1,立即可以断定该迭代过程对任给
r
初始向量都收敛于方程组AX=b的唯一解 X * 在例8例9中,我们分别用雅可比迭代法和高斯-
赛德尔迭代法解方程组
10x1 2x2 x3 3 2x1 10x2 x3 15 x1 2x2 5x3 10
现将 X (k1) 显式化,由 (D L) X (k1) UX (k) b
得
X (k1) (D L)1UX (k) (D L)1b
令
BG (D L)1U
(称为高斯-赛德尔(Gauss-Seidel)迭代矩阵)
fG (D L)1b
则得 X (k 1) BG X (k ) fG 为高斯-赛德尔迭代法的矩阵表示形式。
以下元素同乘以 λ 后所得新矩阵的行列式。
例9 用高斯-赛德尔迭代法解方程组
10x1 2x2 x3 3 2x1 10x2 x3 15 x1 2x2 5x3 10
解:相应的高斯-赛德尔迭代公式为
x (k 1) 1
x (k 1) 2
0.2x2(k) 0.1x3(k) 0.3 0.2x1(k1) 0.1x3(k) 1.5
我们用定理2来判断高斯-赛德尔迭代公式是否
收敛,需要考虑高斯-赛德尔迭代矩阵 BG (D L)1U
的特征方程 I BG 0
即
I (D L)1U 0
将上式写成 (D L)1 (D L) U 0
由于
(D L)1 0
所以
(D L) U 0
上式左端为将系数矩阵 A 的对角线及对角线
1 B
将 BJ 0.6, X (0) (0,0,0)T , X (1) (0.3000,1.5000, 2.0000)T
代入得 k 21.18 ,故Jacobi迭代22次即可;
将 BG 0.3, X (0) (0,0,0)T , X (1) (0.3000,1.5600, 2.68400)T 代入得 k 8.76 ,故Gauss-Seidel迭代9次就可以。
3 0.9843 1.9923 2.9938
4 0.9978 1.9989 2.9991
5 0.9997 1.9999 2.9999
高斯-赛德尔迭代矩阵 BG 的特征方程为
10 2 1 2 10 1 0 2 5
即 (500 2 54 2) 0
解得
1
0, 2
27
1729 500
, 3
27
a x (k1) i,i1 i1
a x (k) i,i1 i1
xn ( k 1)
1 ann
(an1 x1( k 1)
a x (k1) n2 2
a x (k1) n,n1 n1
bn )
(5)
ainxn(k) bi )
其矩阵表示形式为 X (k1) D1(LX (k1) UX (k) b)
一种算子范数 , 即
(A)
A r
证明:设λ为A的任一特征值,X为对应于λ的A
的特征向量,即 AX= λX, (X ≠0)
由范数的性质立即可得
X X AX A X
r
r
r
r
r
因为 X ≠0 , 所以
A r
即A的任一特征值的模都不超过
A r
于是 (A) A r
定理给出了一阶线性定常迭代法 X (k1) BX (k) f