高斯-赛德尔迭代法仿真_第1页
高斯-赛德尔迭代法仿真_第2页
高斯-赛德尔迭代法仿真_第3页
高斯-赛德尔迭代法仿真_第4页
高斯-赛德尔迭代法仿真_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告设计题目: 高斯-赛德尔迭代法仿真 学 院: 电子工程学院 专 业: 班 级: 学 号: 姓 名: 电子邮件: 日 期: 成 绩: 指导教师: 西 安 电 子 科 技 大 学电 子 工 程 学 院课 程 设 计 任 务 书学生姓名 指导教师 职称 学生学号 专业 题目 高斯-赛德尔迭代法仿真 任务与要求:开始日期 完成日期 课程设计所在单位 高斯-赛德尔迭代法仿真中文摘要 大型线性方程组的求解是大规模科学与工程计算的核心。随着计算机的飞速发展,迭代法已取代直接法成为求解大型线性方程组的最重要的一类方法。而判断迭代法好坏的标准通常是通过迭代法的收敛速度刻画的,从而迭代法的收敛速度成为

2、一个很重要的问题,因此我们应该找收敛速度比较快的迭代方法,这样才有实际价值。因此,本文就通过数值实验说明,求线性方程组的近似解时,高斯-赛德尔迭代法的收敛速度比雅可比迭代法的收敛速度要快一些。1. 引言随着科学技术的发展,生产实际中出现了大量的大型稀疏线性代数方程组,同时,用差分方法逼近微分方程的过程中,也需要求解这类线性方程组。因而,研究大型稀疏线性方程组的解法成了人们所关注的焦点。由于迭代法能够充分利用矩阵的稀疏性,从而节省存储单元,因而它是解大型稀疏线性代数方程组的比较实用的方法之一。众所周知,构造一个迭代法,它的收敛性和收敛速度是一个关键问题,不收敛的格式自然不能用,而收敛满的方法同样

3、由于其费时且不一定能得出结果使得人们无法使用,这样在实际使用迭代法求解问题时就必须寻求收敛性好且收敛速度较快的方法。20世纪50年代是用数字计算机求解电力系统潮流问题的开始阶段,人们普遍采用以节点导纳矩阵为基础的高斯-赛德尔迭代法。这个方法的原理比较简单,要求的数字计算机的内存量也比较小,适应当时的电子数字计算机制作水平和电力系统理论水平。高斯-赛德尔潮流计算法在牛顿法以及各种解耦法出现以后似乎成了一种边缘性的方法。但是此方法原理简单, 编程实现容易, 特别是对于配网潮流有其独特优势。 2. 算法:高斯-赛德尔迭代法2.1 算法理论或者思想雅克比迭代法基本思想为对于给定的线性方程组Ax=b,可

4、以用不同的方法把它变为与之等价的行为:x=Bx+f的方程组。选定初值,在反复的迭代中校正方程组根的近似值,并在此过程中求取符合计算精度要求的方程组近似值。高斯-赛德尔迭代法的基本思想跟雅克比迭代法相似。只是在雅克比迭代法中,每次迭代时只用到上次的值,而高斯-赛德尔迭代法充分利用了最新得到的值2.2 算法描述(1)雅可比迭代法设线性方程组 (1)的系数矩阵A可逆且主对角元素均不为零,令 并将A分解成 (2)从而(1)可写成 令 其中. (3)以为迭代矩阵的迭代法(公式) (4)称为雅可比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为 (5)其中为初始向量.由此看出,雅可比迭代法公式

5、简单,每迭代一次只需计算一次矩阵和向量的乘法.在电算时需要两组存储单元,以存放及.(2)高斯-赛德尔迭代法由雅可比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i个分量时,已经计算出的最新分量没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第次近似的分量加以利用,就得到所谓解方程组的高斯塞德(Gauss-Seidel)迭代法.把矩阵A分解成 (6) 其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 即其中 (7)以为迭代矩阵构成的迭代法(公式) (8)称为高斯塞德尔迭代法(公式),用 量表示

6、的形式为 (9)由此看出,高斯塞德尔迭代法的一个明显的优点是,在电算时,只需一组存储单元(计算出后不再使用,所以用冲掉,以便存放近似解.2.3 算法的时间复杂度由以下程序可以得出此算法的时间复杂度为O(n)2.4 算法的优缺点高斯-赛德尔迭代法的原理比较简单,要求的数字计算机的内存量也比较小,适应当时的电子数字计算机制作水平和电力系统理论水平。但是高斯-赛德尔潮流算法的也有着其致命缺点那就是收敛速度比较慢,尤其是随着电力系统的发展,网络中的节点增多,这个问题将会更加突出。当前高斯-赛德尔只是作为提供初值的一种方法而被使用。先用高斯-赛德尔法进行1-2次迭代,然后再进入牛顿-拉夫逊法的迭代过程。

7、这样可以充分利用这两种方法各自的优点来克服两者各自的缺点。通过在系统中采用这种方法使系统有了一定的稳健性,能够针对各种不同的网络进行潮流计算。3. 代码(1)实验目的与要求:对于线性方程组1. 用高斯-赛德尔迭代法求此方程组的近似解(终止迭代过程的最大允许迭代次数N,近似解的误差限eps,均由用户设定);2. 通过数值实验说明,求此线性方程组的近似解时,高斯-赛德尔迭代法的收敛速度比雅可比迭代法的收敛速度要快一些。(用同样精度要求的条件来比较迭代次数)(2)实验源程序代码:运用MATLAB软件编辑M文件如下:function EX()a=input('请输入系数矩阵a:');b

8、=input('请输入矩阵b:');N=input('请输入最大迭代次数N:');esp=input('请输入近似解的误差限:');if any(diag(a)=0 error('系数矩阵错误,迭代终止!')endD=diag(diag(a);X0=zeros(size(b);x1=0;x2=0;x3=0;X1=x1;x2;x3;h=inv(D)*b;B=inv(D)*(D-a);B1=triu(B);B2=tril(B);k=1;fprintf('高斯-赛德尔迭代法 n');fprintf('第0次迭代得

9、:')disp(X1');while k<=N x1=h(1,1)+B1(1,:)*X0; X1=x1;x2;x3; x2=h(2,1)+B1(2,:)*X0+B2(2,:)*X1; X1=x1;x2;x3; x3=h(3,1)+B2(3,:)*X1; X1=x1;x2;x3; if norm(X1-X0,inf)<esp fprintf('已满足误差限。 ') break ; end X0=X1; fprintf('第%2d次迭代得:',k) disp(X1'); k=k+1; endfprintf('满足误差限的高

10、斯-赛德尔迭代近似解为:')disp(X1');fprintf('雅可比迭代法 ');t=0;Y0=zeros(size(b);while t<=N Y1=h+B*Y0; if norm(Y1-Y0,inf)<esp fprintf('满足误差限 n') break ; end Y0=Y1; fprintf('第%2d次迭代得:',t) disp(Y1'); t=t+1; endfprintf('满足误差限的雅可比迭代近似解为:')disp(Y1');fprintf('用高斯-赛德尔迭代法迭代次数为 %d次n用高斯-赛德尔迭代法迭代次数为%d次n',k-1,t

温馨提示

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

评论

0/150

提交评论