当前位置:文档之家› 高斯赛德尔与超松弛迭代法

高斯赛德尔与超松弛迭代法

高斯赛德尔与超松弛迭代法
高斯赛德尔与超松弛迭代法

分别运用高斯赛德尔迭代法和超松弛迭代法解线性方程组:????? ??-=????? ??????? ??--243024410143034321x x x 。

1. 高斯赛德尔迭代法

编程思路:高斯赛德尔迭代法实在雅克比迭代法的基础上进行优化得到的,即在进行迭代时,将已经算得的第k+1步的迭代值代入第k+1步后边的变量的计算当中去,从而加快了迭代速度。

程序代码:

function varargout=Gauss_Seidelli(varargin)

A=[4 3 0;3 4 -1;0 -1 4];

b=[24 30 -24]';

x0=[0;0;0];

x=Gauss_Seidel(A,b,x0)

function x=Gauss_Seidel(A,b,x0)

n=100;%最大迭代次数

ee=0.0001;%精度

n1=length(b);

for i=1:n

x1=x0;

for j=1:n1

s=0;

for k=1:n1

if k~=j

s=s+A(j,k)*x0(k);

end

end

x0(j)=(b(j)-s)/A(j,j);

end

if norm(x1-x0)

break

end

end

x=x0;

2. 超松弛迭代法

该方法是在高斯赛德尔迭代法的基础上将前一步的结果)(k i x 和)1( k i x 进行适当的线性组合以加速收敛,松弛因子ω的选择是关键,当1<ω<2时,即为超松弛迭代法。

程序代码:

function varargout=SORli(varargin)

clc

A=[4 3 0;3 4 -1;0 -1 4];

b=[24;30;-24];

x0=[0;0;0];w=1.3;

x=SOR(A,b,x0,w);

for i=1:3

fprintf('%4.2f ',x(i));

end

fprintf('\n');

function x=SOR(A,b,x0,w)

%AX=b

%x0初始点

%w 为 松弛因子

n=100;%最大迭代次数

ee=0.0001;%精度

n1=length(b);

for i=1:n

x1=x0;

for j=1:n1

s=0;

for k=1:n1

if k~=j

s=s+A(j,k)*x0(k);

end

end

x0(j)=(1-w)*x0(j)+w*(b(j)-s)/A(j,j);

end

if norm(x1-x0)

break

end

end

x=x0;

高斯-赛德尔迭代法matlab程序

disp('划分为M*M个正方形') M=5 %每行的方格数,改变M可以方便地改变剖分的点数 u=zeros(M+1);%得到一个(M+1)*(M+1)的矩阵 disp('对每个剖分点赋初值,因为迭代次数很高,所以如何赋初值并不重要,故采用对列线性赋值。') disp('对边界内的点赋初值并使用边界条件对边界赋值:') for j=1:M-1 for i=1:M-1 u(i+1,j+1)=100*sin(pi/M*j)/M*(M-i);%对矩阵(即每个刨分点)赋初值 end end for i=1:M+1 u(1,i)=100*sin(pi*(i-1)/M);%使用边界条件对边界赋值 u(1,M+1)=0; end u tic %获取运行时间的起点 disp('迭代次数为N') N=6 %迭代次数,改变N可以方便地改变迭代次数 disp('n为当前迭代次数,u为当前值,结果如下:') for n=1:N for p=2:M i=M+2-p; for j=2:M u(i,j)=0.25*(u(i,j-1)+u(i+1,j)+u(i-1,j)+u(i,j+1));%赛德尔迭代法 end end n %输出n u %输出u end disp('所用的时间:') t=toc %获取算法运行需要的时间 [x,y]=meshgrid(0:1/M:1,0:1/M:1); z=u(1,:); for a=2:M+1 z=[z;u(a,:)];%获取最终迭代的结果,幅值给z,z的值代表该点的点位值 end mesh(x,y,z)%绘制三维视图以便清楚地显示结果 mesh(x,y,z,'FaceColor','white','EdgeColor','black') %绘制三维视图以便清楚地显示结果

实验一 用超松弛迭代法求解接地金属槽内电位分布

实验一 用超松弛迭代法求解接地金属 槽内电位分布 学院:自动化学院 姓名: 学号: 一、实验内容: 试用超松弛迭代法求解接地金属槽内电位的分布。 已知:cm a 4=,mm a h 104/== 给定边值如图所示。 给定初值:0)0(,=j i ? 误差范围:510-=ε 计算迭代次数,j i ,?分布。 二.实验设计原理:有限差分法 有限差分法(Finite Differential Method )是基于差 分原理的一种数值计算法。其基本思想:将场域离散为许多 小网格,应用差分原理,将求解连续函数?的泊松方程的问 题换为求解网格节点上?的差分方程组的问题。 编程时已经考虑到题目要求,所以直接将边值编入到程 序中,这样可以省略输入,从而直接输入迭代因子进行求解,可以减少编程的难度。这次编程和以前不同的是将数组和正0=?= V 100 ? 0=?0=?

交函数图像结合起来,所以在考虑输入和输出的时候会有一些难度,因为数组是上面是小的而图像上面越在上,代表坐标就越大。所以在输入和输出的时候要谨慎对待。 迭代时所用公式是和书上一样,为 a[i][j]=b[i][j]+w/4*(b[i+1][j]+b[i][j+1]+a[i][j-1 ]+a[i-1][j]-4*b[i][j]); 其中a代表k+1,而b代表k。 以上分析了迭代程序的实现,但是迭代循环如何终止并未说明。题目中的误差范围ε=0.00001,即当两次迭代结果相差不超过ε时停止,这里只得是九点都满足不超过ε,而并不是其中某一点达到即可。这样可以保证不是陷入死循环,从而输出结果。 这样可以画出流程图如下所示:

雅克比高斯赛德尔迭代法

第八节 雅可比迭代法与高斯—塞德尔迭代法 一 雅可比迭代法 设线性方程组 b Ax = (1) 的系数矩阵A 可逆且主对角元素nn a ,...,a ,a 22 11均不为零,令 ()nn a ,...,a ,a diag D 2211= 并将A 分解成 ()D D A A +-= (2) 从而(1)可写成 ()b x A D Dx +-= 令 11f x B x += 其中b D f ,A D I B 1 111 --=-=. (3) 以 1B 为迭代矩阵的迭代法(公式) ()()111f x B x k k +=+ (4) 称为雅可比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为 ? ?? [] ,... ,,k ,n ,...,i x a b a x n i j j ) k (j j i i ii )k (i 21021111==∑-=≠=+ (5) 其中 ()()()() ()T n x ,...x ,x x 002010=为初始向量. 由此看出,雅可比迭代法公式简单,每迭代一次只需计算一次矩阵和向量的乘法.在电算时需 要两组存储单元,以存放() k x 及() 1+k x . 例1 例1 用雅可比迭代法求解下列方程组 ??? ??=+--=-+-=--2 45382102 7210321321321.x x x .x x x .x x x 解 将方程组按雅可比方法写成 ?? ?? ???++=++=++=8402020830201072 020******* 2321.x .x .x .x .x .x .x .x .x 取初始值 () ()() ()()()T T ,,,x ,x ,x x 0000302010==按迭代公式

求解线性方程组——超松弛迭代法(c)

求解线性方程组——超松弛迭代法 #include #include using namespace std; float *one_array_malloc(int n); //一维数组分配float **two_array_malloc(int m,int n); //二维数组分配float matrix_category(float* x,int n); int main() { const int MAX=100;//最大迭代次数 int n,i,j,k; float** a; float* x_0; //初始向量 float* x_k; //迭代向量 float precision; //精度 float w; //松弛因子 cout<<"输入精度e:"; cin>>precision; cout<>n; a=two_array_malloc(n,n+1); cout<>a[i][j]; } } x_0=one_array_malloc(n); cout<>x_0[i]; } x_k=one_array_malloc(n);

cout<<"输入松弛因子w (1>w; float temp; //迭代过程 for(k=0;k

高斯赛德尔法潮流计算

高斯——赛德尔法潮流计算 潮流计算高斯——赛德尔迭代法(Gauss一Seidel method)是求解电力系统潮流的方法。潮流计算高斯——赛德尔迭代法又分导纳矩阵迭代法和阻抗矩阵迭代法两种。前者是以节点导纳矩阵为基础建立的赛德尔迭代格式;后者是以节点阻扰矩阵为基础建立的赛德尔迭代格式。高斯——赛德尔迭代法这是数学上求解线性或非线性方程组的一种常用的迭代方法。 本实验通过对电力网数学模型形成的计算机程序的编制与调试,获得形成电力网数学模型:高斯---赛德尔法的计算机程序,使数学模型能够由计算机自行形成,即根据已知的电力网的接线图及各支路参数由计算程序运行形成该电力网的节点导纳矩阵和各节点电压、功率。通过实验教学加深学生对高斯---赛德尔法概念的理解,学会运用数学知识建立电力系统的数学模型,掌握数学模型的形成过程及其特点,熟悉各种常用应用软件,熟悉硬件设备的使用方法,加强编制调试计算机程序的能力,提高工程计算的能力,学习如何将理论知识和实际工程问题结合起来。 高斯---赛德尔法潮流计算框图

[1]系统节点的分类 根据给定的控制变量和状态变量的不同分类如下 ①P、Q节点(负荷节点),给定Pi、Qi求Vi、Si,所求数量最多; ②负荷节点,变电站节点(联络节点、浮游节点),给定P Gi、Q Gi的发电机 节点,给定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)。 [2]潮流计算的数学模型 1)线性的节点电压方程YV=I 根据S=V错误!未找到引用源。可得非线性的节点电压方程(错误!未找到引用源。为I的共轭) YV=I=错误!未找到引用源。=错误!未找到引用源。

SOR迭代法超松弛因子选取

《计算方法》实验报告(二) 实验名称:SOR 迭代法松弛因子的选取 班级: 数学1402班 姓名: 高艺萌 学号:14404210 一、 实验目的 通过本实验学习线性方程组的SOR 迭代解法以及SOR 迭代法的编程与应用。对比分析不同条件下的超松弛因子w 的取值大小会对方程组的解造成影响,通过这个实验我们可以了解的w 不同取值会对方程组的解产生的影响。培养编程与上机调试能力。 二、 实验题目 用逐次超松弛(SOR )迭代法求解方程组b Ax =,其中 ?????????? ????????????=????????????????????????????????????????????=555555122-12-122-112-122-112-122-112-122-12-12201918321 x x x x x x A (1)给定迭代误差,选取不同的超松弛因子1>ω进行计算,观察得到的近似解向量并分析计算结果,给出你的结论; (2)给定迭代误差,选取不同的超松弛因子1<ω进行计算,观察得到的近似解向量并分析计算结果,给出你的结论; 三、 实验原理 1.逐次超松弛迭代法可以看作Gauss-Seidel 迭代法的加速, b D Ux D Lx D x k k k 1)(1)1(1)1(--+-+++= 2.SOR 迭代计算格式 b D L wD I w x U wD I w L wD x k k 111)(111)1()(])1[()-1(------+-++-= 其中,w 叫松弛因子,当w>1时叫超松弛,0

超松弛迭代法及其松弛因子的选取

2013届学士学位毕业论文 超松弛迭代法及其松弛因子的选取 学号:09404307 姓名:程启远 班级:信息0901 指导教师:崔艳星 专业:信息与计算科学 系别:数学系 完成时间:2013年5月

学生诚信承诺书 本人郑重声明:所呈交的论文《超松弛迭代中松弛因子的选取方法》是我个人在导师崔艳星指导下进行的研究工作及取得的研究成果.尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得长治学院或其他教育机构的学位或证书所使用过的材料.所有合作者对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意. 签名:日期: 论文使用授权说明 本人完全了解长治学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文. 签名:日期: 指导教师声明书 本人声明:该学位论文是本人指导学生完成的研究成果,已经审阅过论文的全部内容,并能够保证题目、关键词、摘要部分中英文内容的一致性和准确性. 指导教师签名:时间

摘要 本文首先给出了超松弛迭代法解线性方程组的基本概念,引进了关于超松弛迭代法收敛性判别的一些定理.再基于超松弛迭代法收敛性快慢与松弛因子的选择密切相关,本文给出了能准确快速地确定最优松弛因子的方法逐步搜索法和黄金分割法,并且写出了其Matlab 程序(附录),最后通过实例验证了方法的准确性,快速性. 关键词线性方程组;超松弛迭代;Matlab程序;松弛因子

Abstract This paper firstly introduces the basic concept of the super relaxation iteration method for solving linear equations, introduced on some criterion theorem Overrelaxation iterative convergence, gives a simple Matlab program super relaxation iteration (Appendix 1). Then Overrelaxation iterative convergence speed and relaxation factor is selected based on the close relation is proposed in this paper, the rapid and accurate method of determining the optimal relaxation factor of the direct search method and the golden section method, and write the Matlab program (Appendix 2), finally the method is accurate, rapid. Key word:Linear equations; Successive Over Relaxation; Matlab program; relaxation factor

高斯-赛德尔迭代法解线性方程组

数值分析实验五 班级: 10信计二班 学号:59 姓名:王志桃 分数: 一.实验名称 高斯-赛德尔迭代法解线性方程组 二.实验目的 1. 学会利用高斯赛德尔方法解线性方程组 2. 明白迭代法的原理 3. 对于大型稀疏矩阵方程组适用于迭代法比较简单 三.实验内容 利用Gauss-Seidel 迭代法求解下列方程组 ?????=++=-+=+-36123633111420238321 321321x x x x x x x x x , 其中取→=0)0(x 。 四、算法描述 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量)1(+k i x 时,用最新分量)1(1+k x ,???+)1(2k x )1(1-+k i x 代替旧分量)(1k x ,???)(2k x )(1-k i x ,就得到所谓解方程组的Gauss-Seidel 迭代法。 其迭代格式为 T n x x x x ) ()0()0(2)0(1)0(,,,???= (初始向量), )(1111 1) ()1()1(∑∑-=-+=++--=i j i i j k j ij k j ij i ii i i x a x a b a x )210i 210(n k ???=???=,,,;,,, 或者写为 ?? ???--=???=???==?+=∑∑-=-+=+++)(1)210i 210(1111)()1()1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,, 五、 编码 #include #include

超松弛迭代法求解两点边值问题(二)

超松弛迭代法求解两点边值问题(二) 摘要 本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。 首先,本文以微分方程边值问题为例,导出了离散化后线性方程组即稀疏线性方程组,转化对稀疏线性方程组求解问题。其次,用超松弛( SOR) 迭代法编写matlab程序,对产生的稀疏线性方程组进行迭代法求解。然后,分别改变松弛因子ω和分段数n的值,分析其收敛性和收敛速度,做出各个方面的分析和比较得到相关结论。最后,将超松弛迭代算法在计算机上运用matlab语言实现, 得出了一组与精确解较接近的数值解,并画图比较,验证逐次超松弛( SOR) 迭代法的精确性。 关键词:稀疏线性方程组;逐次超松弛迭代法;松弛因子;matlab编程 OVERRELAXATION ITERATIVE METHOD FOR SOLVING TWO-BOUNDARY VALUE PROBLEM(TWO) ABSTRACT This is familiar with the use of computer programming in matlab language and overrelaxation variable overrelaxation iteration method of the theoretical basis of solving equations. First of all, as an example, based on differential equation boundary value problem is derived after discretization is sparse system of linear equations of linear equations, the transformation of sparse linear equations to solve the problem. Second, use write matlab program over relaxation (SOR) iteration method, the iteration method solving sparse linear equations. Then, change the values of relaxation factor and section number n omega, analyzes its convergence and convergence speed, all aspects to make the analysis and comparison of related conclusions. Finally, the over-relaxation iteration algorithm is implemented on a computer using matlab language and obtained a set of numerical solution with exact solution is close to, and draw the comparison, verification of successive overrelaxation (SOR) the accuracy of iterative method. Key words: Sparse linear system of equations;Successive over relaxation iteration method; Relaxation factor;Matlab programming 目录 1 绪论 (1)

高斯赛德尔与超松弛迭代法

分别运用高斯赛德尔迭代法和超松弛迭代法解线性方程组:????? ??-=????? ??????? ??--243024410143034321x x x 。 1. 高斯赛德尔迭代法 编程思路:高斯赛德尔迭代法实在雅克比迭代法的基础上进行优化得到的,即在进行迭代时,将已经算得的第k+1步的迭代值代入第k+1步后边的变量的计算当中去,从而加快了迭代速度。 程序代码: function varargout=Gauss_Seidelli(varargin) A=[4 3 0;3 4 -1;0 -1 4]; b=[24 30 -24]'; x0=[0;0;0]; x=Gauss_Seidel(A,b,x0) function x=Gauss_Seidel(A,b,x0) n=100;%最大迭代次数 ee=0.0001;%精度 n1=length(b); for i=1:n x1=x0; for j=1:n1 s=0; for k=1:n1 if k~=j s=s+A(j,k)*x0(k); end end x0(j)=(b(j)-s)/A(j,j); end if norm(x1-x0)

2. 超松弛迭代法 该方法是在高斯赛德尔迭代法的基础上将前一步的结果)(k i x 和)1( k i x 进行适当的线性组合以加速收敛,松弛因子ω的选择是关键,当1<ω<2时,即为超松弛迭代法。 程序代码: function varargout=SORli(varargin) clc A=[4 3 0;3 4 -1;0 -1 4]; b=[24;30;-24]; x0=[0;0;0];w=1.3; x=SOR(A,b,x0,w); for i=1:3 fprintf('%4.2f ',x(i)); end fprintf('\n'); function x=SOR(A,b,x0,w) %AX=b %x0初始点 %w 为 松弛因子 n=100;%最大迭代次数 ee=0.0001;%精度 n1=length(b); for i=1:n x1=x0; for j=1:n1 s=0; for k=1:n1 if k~=j s=s+A(j,k)*x0(k); end end x0(j)=(1-w)*x0(j)+w*(b(j)-s)/A(j,j); end if norm(x1-x0)

高斯-赛德尔迭代法

一、 实验目的与要求 对于线性方程组?????=++=++=++69228281027321 321321x x x x x x x x x 1. 用高斯-赛德尔迭代法求此方程组的近似解(终止迭代过程的最大允许迭代次数N ,近似解的误差限eps ,均由用户设定); 2. 通过数值实验说明,求此线性方程组的近似解时,高斯-赛德尔迭代法的收敛速度比雅可比迭代法的收敛速度要快一些。(用同样精度要求的条件来比较迭代次数) 二、 实验方案(程序源文件) 运用MATLAB 软件编辑M 文件如下: function EX() a=input('请输入系数矩阵a :'); b=input('请输入矩阵b:'); N=input('请输入最大迭代次数N :'); esp=input('请输入近似解的误差限:'); if any(diag(a))==0 error('系数矩阵错误,迭代终止!') end D=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次迭代得:') 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)

超松弛迭代法解线性方程组

设计题目:超松弛迭代法解线性方程组

摘要 本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。 首先,本文以微分方程边值问题为例,导出了离散化后线性方程组即稀疏线性方程组,转化对稀疏线性方程组求解问题。其次,用超松弛( SOR) 迭代法编写matlab程序,对产生的稀疏线性方程组进行迭代法求解。然后,分别改变松弛因子ω和分段数n的值,分析其收敛性和收敛速度,做出各个方面的分析和比较得到相关结论。最后,将超松弛迭代算法在计算机上运用matlab语言实现, 得出了一组与精确解较接近的数值解,并画图比较,验证逐次超松弛( SOR) 迭代法的精确性。 关键词:稀疏线性方程组逐次超松弛迭代法松弛因子 matlab编程

一、问题提出 考虑两点边值问题 ()()?????==<<=+. 11,00, 10,22y y a a dx dy dx y d ε 容易知道它的精确解为 .1111ax e e a y x +??? ? ?? ---= --εε 为了把微分方程离散,把[]1,0区间n 等分,令n h 1 =,ih x i =,,1,,2,1-=n i 得到差分方程 ,212 11a h y y h y y y i i i i i =-++-++-ε 简化为 ()(),2211ah y y h y h i i i =++-+-+εεε 从而离散后得到的线性方程组的系数矩阵为 ()()()()?? ??? ?? ? ????????+-++-++-++-=h h h h h h h A εεεεεεεεεε2222 对1=ε,4.0=a ,200=n ,分别用1=ω、5.0=ω和5.1=ω的超松弛迭代法求解线性方程组,要求有4位有效数字,然后比较与精确解的误差,探讨使超松弛迭代法收敛较快的ω取值,对结果进行分析。改变n ,讨论同样问题。 二、超松弛迭代法产生的背景 对从实际问题中得到维数相当大的线性代数方程组的求解仍然十分困难, 以 至使人们不能在允许的时间内用直接方法得到解, 因此, 客观上要求用新的方法 来解决大维数方程组的求解问题。 现有大多数迭代法不是对各类线性方程组都有收敛性, 在解题时, 要对原方程组矩阵作一根本的变换, 从而可能使条件数变坏, 也可能破坏了变换前后方程组的等价性, 以及丧失使原方程组的对称性等。探求新的有效的解题方法依然是迫切的任务。逐次超松弛(Successive Over Relaxation)迭代法是在高斯-赛德尔

实验_用超松弛迭代法求解接地金属槽内电位分布

用超松弛迭代法求解接地金属槽内电 位分布 一、实验内容: 用超松弛迭代法求解接地金属槽内电位的分布。 已知:cm a 4=,mm a h 104/== 给定边值如图所示。 给定初值:0)0(,=j i ? 误差范围:510-=ε 计算迭代次数,j i ,?分布。 =?= V 100 ? 0 =?0 =?

二.实验设计原理:有限差分法 α称为松弛因子。不同的α值,可以有不同的收敛速度,其值范围一般为1与2之间。通常α会有一个最佳值。最佳α的确定与具体问题有关,显然,如果α选择合适,超松弛迭代法收敛速度最快。

(1)划分网格:节点编号、坐标的形成。 (2)赋初值:随意,尽可能靠近真实解。比如本题u7=2.0,u8=7.5,u9=10。(3)边界条件:给电位值,找规律。 u1,u2,u3,u4,u6,u11,u12,u13,u14=0; u5,u10,u15=100。 (4)迭代 u7=(u2+u6+u8+u12)/4 ; u8=(u3+u7+u9+u13)/4 ; u9=(u4+u8+u10+u14)/4 。 (5)反复迭代,给定某一误差 有限差分法是基于差分原理的 一种数值计算法。其基本思想:将 场域离散为许多小网格,应用差分 原理,将求解连续函数?的泊松方 程的问题换为求解网格节点上?的 差分方程组的问题。 编程时已经考虑到题目要求, 所以直接将边值编入到程序中,这样可以省略输入,从而直接输入迭代因子进行求解,可以减少编程的难度。这次编程和以前不同的是将数组和正交函数

图像结合起来,所以在考虑输入和输出的时候会有一些难度,因为数组是上面是小的而图像上面越在上,代表坐标就越大。所以在输入和输出的时候要谨慎对待。 Editor中源代码为: 1.clc 2.clear 3.close all 4.hx=5; 5.hy=5; 6.v1=ones(hy,hx); 7.v1(hy,:)=ones(1,hx)*100; 8.v1(1,:)=ones(1,hx)*0 9.for i=1:hy; 10.v1(i,1)=0; 11.v1(i,hx)=0; 12.end 13.m=4;

高斯-赛德尔迭代法的算法及程序设计

题目:高斯-赛德尔迭代法的算法及程序设计 摘要 本文通过理论与实例对线性方程组的解法、收敛性及误差分析进行了探讨.在对线性方程组数值解法的讨论下用到了高斯-赛德尔迭代法,进一步研究和总结了高斯-赛德尔迭代法的理论与应用,使我们在分析问题与编辑程序时能更好的把握对高斯-赛德尔迭代法的应用。 关键词 Gauss-Seidel迭代法;收敛性;误差分析;流程图;Mathematica编程

目录 第一章高斯-赛德尔迭代法 (1) §1.1 高斯-赛德尔迭代法的提出 (1) §1.1.1 高斯-赛德尔迭代法的思想理论 (1) §1.1.2 高斯-赛德尔迭代法的定义及表达形式 (2) §1.2 高斯-赛德尔迭代法的收敛性 (1) §1.3 高斯-赛德尔迭代法的误差分析 (1) 第二章高斯-赛德尔迭代法的程序设计 (1) §2.1 高斯-赛德尔迭代法在上机中的应用 (1) §2.1.1 高斯-赛德尔迭代法的流程图 (1) §2.1.2 高斯-赛德尔迭代法的源程序 (1) 参考文献 (22) 附录 (23)

第一章 高斯-赛德尔迭代法 考虑线性方程组 Ax b = 其中为非奇A 异矩阵,对于由工程技术中产生的大型稀疏矩阵方程组(A 的阶数很大n 但零元素很多),利用迭代法求解线性方程组是合适Ax b =的.在计算机内存和运算两方面,迭代法通常都可利用中A 有大量零元素的特点. 本章将介绍迭代法中的高斯-赛德尔法的思想理论、收敛性及误差分析. §1.1 高斯-赛德尔迭代法的提出 §1.1.1 高斯-赛德尔迭代法的思想理论 在研究雅可比迭代法时,计算1k i x +时,已得(1)(1) (1) 12 1 ,,,k k k i x x x +++-(这些分别为121,,,i x x x -的第k+1次近似),Gauss-Seidel 迭代法认为在计算时启用新值,从而产 生 1(1) (1) ()11 1()i n k k k i i ij j ij j j j i ii x b a x a x a -++==+=--∑∑. 具体原理如下图所示 ()k x →→→

jacobig-s,超松弛迭代法matlab程序

function iteration A=[10,1,2,3,4; 1,9,-1,2,-3; 2,-1,7,3,-5; 3,2,3,12,-1; 4,-3,-5,-1,15]; b=[12,-27,14,-17,12]'; x0=[0,0,0,0,0]'; tol=1e-12; disp('jacobi迭代法的结果和次数如下:') [x,k]=Fjacobi(A,b,x0,tol) disp('G-S迭代法的结果和次数如下:':') [x,k]=Fgseid(A,b,x0,tol) disp('超松弛的结果和次数如下:':') [x,k]=Fsor(A,b,x0,,tol) disp('共轭梯度法的结果和次数如下:':') [x,k]=Fcg(A,b,x0,tol) %jacobi迭代法 function [x,k]=Fjacobi(A,b,x0,tol) max=300; D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); B=D\(L+U); f=D\b; x=B*x0+f; k=1; while norm(x-x0)>=tol x0=x; x=B*x0+f; k=k+1; if(k>=max) disp('μü′ú3?1y300′?£?·?3ì×é?é?ü2?ê?á2'); return; end end %G-S迭代法 function [x,k]=Fgseid(A,b,x0,tol) max=300; D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); G=(D-L)\U; f=(D-L)\b; x=G*x0+f; k=1; while norm(x-x0)>=tol x0=x; x=G*x0+f;

雅克比迭代法和高斯-赛德尔法解线性方程组(C++)

作业:① 分别用J 法和G-S 法求解下列方程,并讨论结果。 123122*********x x x -?????? ??? ?= ??? ? ??? ??????? #include using namespace std; //J 法解线性方程 int main(){ int m,n,i,j,times=0,mtimes; double s,sum,max; cout<<"请输入系数矩阵行数m 、列数n :"<>m>>n; if(m>A[i][j]; cout<<"请输入常数向量B :"<>B[i]; cout<<"请输入最大允许误差s:"<>s; cout<<"请输入最大迭代次数:"<>mtimes; cout<<"请输入一零级向量X:"<>X[i]; T[i]=X[i];//T[]存放上一次迭代结果 }

高斯-赛德尔迭代

实验题目:数值分析之高斯-赛德尔迭代 学生姓名: 专业: 学号: 完成日期:

实验题目: 数值分析之高斯-赛德尔迭代 学生姓名: 学号: 完成日期: 2011.10.21 1 实验目的 利用高斯-赛德尔迭代法求解线性方程组 ??? ??=++=++=++6 9228281027321 321321x x x x x x x x x 2 实验步骤 2.1 算法原理 高斯-赛德尔迭代是计算 1 (+k x 的第i 个分量)1(+k i x ,利用了已经计算出得最新分量 )1,...,2,1() 1(-==+i j x k j .高斯-赛德尔迭代法可以看作雅克比迭代法的一种改进.高斯-赛 德尔迭代法没迭代一次只需计算一次矩阵与向量的乘法 2.2 算法步骤 选取分裂矩阵M 为A 的下三角部分,即选取L D M -=(下三角矩阵),N M A -=, 于是得到解b Ax =的高斯-赛德尔(Gauss-Seidel )迭代法 ????=+=+,...,1,0,,) () 1()0(k f Bx x x k k 初始向量 (2.4) 其中.)(,)()(1 1 1 b L D f G U L D A L D I B ----=≡-=--=称U L D G 1 )(--=为解 b Ax =的高斯-赛德尔迭代法的迭代矩阵. 下面给出高斯-赛德尔迭代法的分量计算公式.记 T k n k i k k x x x x ),...,,...,()() ()(1) (= 由(2.4)式有 ,)() () 1(b Ux x L D k k +=-+ 或 ,) () 1() 1(b Ux Lx Dx k k k ++=++ 即

高斯-赛德尔算法

数值计算方法实验报告 班级:09医软1班 指导教师:金力 工作组成员:谢清泉(负责程序主体部分的编写) 魏月圆(负责流程图和实验报告的书写) 项波波(负责程序的调试和修改) 王兆德(负责材料的收集和整理) 一 实验名称 高斯—塞德尔迭代法 二 实验目的 理解高斯塞德尔算法的基本思想,及公式的推导过程,会用此公式解简单线性方程组。 三 实验原理 在雅可比迭代中,总是用前次近似分量x 1(k ),x 2(k ) ,.. ….x i-1(k) ,x i (k) , (x) n (k)去计算当前分量x i ( k+1 ) (i=1,2,……,n )。实际上此刻前i-1个分量x 1,x 2,…..x i-1 的新近似值x 1(k+1),x 2(k+1),……x i-1(k+1)代替x 1(k),x 2(k),…… X i-1(k)去计算x i (k+1)可能会得到更满意的效果。据此得到迭代公式就是高斯—塞德尔公式,即 X i (k+1) =(b i - 1 1 1 +-=∑k j i j ij x a - ) (1 k j n i j ij x a ∑+=)/a ii (i=1,2,……n) 四 流程图

输入线性方程行数n ,输入系数矩阵a ,常数矩阵b ,精度m K=1 i=0 X i (k+1) =(b i - 11 1 +-=∑k j i j ij x a - ) (1 k j n i j ij x a ∑+=)/a ii X i i

高斯-赛德尔迭代法解线性方程组复习过程

高斯-赛德尔迭代法解线性方程组

数值分析实验五 班级: 10信计二班 学号:59 姓名:王志桃 分数: 一.实验名称 高斯-赛德尔迭代法解线性方程组 二.实验目的 1. 学会利用高斯赛德尔方法解线性方程组 2. 明白迭代法的原理 3. 对于大型稀疏矩阵方程组适用于迭代法比较简单 三.实验内容 利用Gauss-Seidel 迭代法求解下列方程组 ?????=++=-+=+-36123633111420238321 321321x x x x x x x x x , 其中取→=0)0(x 。 四、算法描述 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量)1(+k i x 时,用最新分量)1(1+k x ,???+)1(2k x )1(1-+k i x 代替旧分量)(1k x ,???)(2k x )(1-k i x ,就得到所谓解方程组的Gauss-Seidel 迭代法。 其迭代格式为 T n x x x x )()0()0(2)0(1)0(,,,???= (初始向量), )(11111)()1( ) 1(∑∑-=-+=++--=i j i i j k j ij k j ij i ii i i x a x a b a x )210i 210(n k ???=???=,,,;,,, 或者写为

?? ???--=???=???==?+=∑∑-=-+=+++)(1)210i 210(1111)( )1( )1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,, 五、 编码 #include #include #include #include #define MAX_n 100 #define PRECISION 0.0000001 #define MAX_Number 1000 void VectorInput(float x[],int n) //输入初始向量 { int i; for(i=1;i<=n;++i) { printf("x[%d]=",i); scanf("%f",&x[i]); } } void MatrixInput(float A[][MAX_n],int m,int n) //输入增广矩阵 { int i, j; printf("\n===Begin input Matrix elements===\n"); for(i=1;i<=m;++i) { printf("Input_Line %d : ",i); for(j=1;j<=n;++j) scanf("%f",&A[i][j]); } } void VectorOutput(float x[],int n) //输出向量

电力系统稳态分析大作业——基于高斯赛德尔法潮流计算

电力系统稳态分析 姓名: 学号: 学院(系):自动化学院 专业: 电气工程 题目: 基于Matlab的高斯和高斯—赛德尔法的潮流计算指导老师: 2014年12月

摘要 电力系统潮流计算是电力系统稳态运行分析中最基本和最重要的计算之一,是电力系统其他分析计算的基础,也是电力网规划、运行研究分析的一种方法,在电力系统中具有举足轻重的作用。经典算法有高斯法,高斯-赛德尔迭代法及牛顿法等,近年来学者们开始应用非线性规划法及智能算法等优化方法求解潮流问题,提高了收敛的可靠性。 高斯-赛德尔迭代法开始于上世纪50年代,是一种直接迭代求解方程的算法,既可以解线性方程组,可以解非线性方程组。高斯法求解节点电压的特点是: 在计算节点 i第k+1次的迭代电压时,前后所用的电压都是第k次迭代的结果,整个一轮潮流迭代完成后,把所有计算出的电压新值用于下一轮电压新值的计算过程中。该计算方法简单,占用计算机内存小,能直接利用迭代求解节点电压方程,对电压初值的选取要求不是很严格。但它的收敛性能较差,系统规模增大时,迭代次数急剧上升。 本文首先对高斯—赛德尔算法进行了综述,然后推导了该算法的计算过程,通过MATLAB软件计算了该算法的实例。 关键字:潮流计算高斯法高斯-赛德尔法迭代

Abstract Power flow calculation is the one of the most basic and the most important calculation in the steady state analysis of power system .It is the foundation of other analytical calculation of power system, a method of analysis and planning, operation of power network.So it plays a decisive role in the power system. The classical algorithm is the Gauss method, Gauss - Seidel iterative method and Newton's method, in recent years.Scholars began to applicate nonlinear programming method and intelligent algorithm optimization method for solving power flow problem, enhances the reliability of convergence. Gauss - Seidel iterative method began in the 50's of last century, is a direct iteration equation algorithm, which can solve the linear equation and nonlinear equations. Characteristics of Gauss's method to calculate the node voltage is: in the iterative calculation of node i’s K + 1-times voltage, the voltage is used the results of K-times iterative.After completing the whole round of power flow iteration, all voltage value is used to calculate the next round of new voltage value of . The method is simple and captures small memory.It also can directly use the iterative solution of the node voltage equation .the selection of initial values are not very strict. But it has poor convergence performance. The system scale increases,when the number of iterations rise. This paper gives an overview of the Gauss Seidel algorithm at the first.Then it show the calculation process of this algorithm through the MATLAB software. Keywords: Gauss Gauss - Seidel iterative method the method of power flow calculation

相关主题
文本预览
相关文档 最新文档