文档库 最新最全的文档下载
当前位置:文档库 › 高斯-赛德尔迭代法解线性方程组精选.

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

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

数值分析实验五

班级: 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) //输出向量

{

int i;

for(i=1;i<=n;++i)

printf("\nx[%d]=%f",i,x[i]);

}

int IsSatisfyPricision(float x1[],float x2[],int n) //判断是否在规定精度内{

int i;

for(i=1;i<=n;++i)

if(fabs(x1[i]-x2[i])>PRECISION) return 1;

return 0;

}

int Jacobi_(float A[][MAX_n],float x[],int n) //具体计算{

float x_former[MAX_n];

int i,j,k;

printf("\nInput vector x0:\n");

VectorInput(x,n);

k=0;

do{

for(i=1;i<=n;++i)

{

printf("\nx[%d]=%f",i,x[i]);

x_former[i]=x[i];

}

printf("\n");

for(i=1;i<=n;++i)

{

x[i]=A[i][n+1];

for(j=1;j<=n;++j)

if(j!=i) x[i]-=A[i][j]*x[j];

if(fabs(A[i][i])>PRECISION)

x[i]/=A[i][i];

else

return 1;

}

++k;

}while(IsSatisfyPricision(x,x_former,n) && k

if(k>=MAX_Number)

return 1;

else

{

printf("\nG-S %d times!",k);

return 0;

}

}

int main() //主函数

{

int n;

float A[MAX_n][MAX_n],x[MAX_n];

printf("\nInput n=");

scanf("%d",&n);

if(n>=MAX_n-1)

{

printf("\n\007n must <%d!",MAX_n);

exit(0);

}

MatrixInput(A,n,n+1);

if(Jacobi_(A,x,n))

printf("\nG-S Failed!");

else

{

printf("\nOutput Solution:");

VectorOutput(x,n);

}

printf("\n\n\007Press any key to quit!\n");

getch();

}

通过实验使我更加熟练的掌握和使用高斯赛贝尔迭代法来解线性方程组,而且这个方法可以用来解大型的稀疏矩阵,是的解线性方程组更加的便捷。但是,这个实验很繁琐,必须要仔细的对待。

最新文件仅供参考已改成word文本。方便更改

高斯-赛德尔迭代法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') %绘制三维视图以便清楚地显示结果

潮流计算问答题

1.什么是潮流计算?潮流计算的主要作用有哪些? 潮流计算是根据给定的电网结构、参数和发电机、负荷等元件的运行条件,确定电力系统各部分稳态运行状态参数的计算。 对于正在运行的电力系统,通过潮流计算可以判断电网母线电压、支路电流和功率是否越限,如果有越限,就应采取措施,调整运行方式。对于正在规划的电力系统,通过潮流计算,可以为选择电网供电方案和电气设备提供依据。潮流计算还可以为继电保护和自动装置整定计算、电力系统故障计算和稳定计算等提供原始数据。 2.潮流计算有哪些待求量、已知量? (已知量: 电力系统网络结构、参数; 决定系统运行状态的边界条件 待求量:系统稳态运行状态 例如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等)通常给定的运行条件有系统中各电源和负荷点的功率、枢纽点电压、平衡点的电压和相位角。 待求的运行状态参量包括电网各母线节点的电压幅值和相角,以及各支路的功率分布、网络的功率损耗等。 3.潮流计算节点分成哪几类?分类根据是什么? (分成三类:PQ节点、PV节点和平衡节点,分类依据是给定变量的不同) PV节点(电压控制母线):有功功率Pi和电压幅值Ui为给定。这种类型节点相当于发电机母线节点,或者相当于一个装有调相机或静止补偿器的变电所母线。 PQ节点:注入有功功率Pi和无功功率Qi是给定的。相当于实际电力系统中的一个负荷节点,或有功和无功功率给定的发电机母线。 平衡节点:用来平衡全电网的功率。平衡节点的电压幅值Ui和相角δi是给定的,通常以它的相角为参考点,即取其电压相角为零。 一个独立的电力网中只设一个平衡节点。 4.教材牛顿-拉夫逊法及有功-无功分解法是基于何种电路方程?可否采用其它类型方程? 基于节点电压方程,还可以采用回路电流方程和割集电压方程等。但是后两者不常用。

MATLAB代码 解线性方程组的迭代法

解线性方程组的迭代法 1.rs里查森迭代法求线性方程组Ax=b的解 function[x,n]=rs(A,b,x0,eps,M) if(nargin==3) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值elseif(nargin==4) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-A)*x0+b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 2.crs里查森参数迭代法求线性方程组Ax=b的解 function[x,n]=crs(A,b,x0,w,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-w*A)*x0+w*b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x;

if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 3.grs里查森迭代法求线性方程组Ax=b的解 function[x,n]=grs(A,b,x0,W,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1;%前后两次迭代结果误差 %迭代过程 while(tol>eps) x=(I-W*A)*x0+W*b;%迭代公式 n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 4.jacobi雅可比迭代法求线性方程组Ax=b的解 function[x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error return elseif nargin==5 M=varargin{1}; end D=diag(diag(A));%求A的对角矩阵 L=-tril(A,-1);%求A的下三角阵

高斯赛德尔法潮流计算

高斯——赛德尔法潮流计算 潮流计算高斯——赛德尔迭代法(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=错误!未找到引用源。=错误!未找到引用源。

电力系统潮流计算

第四章 电力系统潮流分析与计算 电力系统潮流计算是电力系统稳态运行分析与控制的基础,同时也是安全性分析、稳定性分析电磁暂态分析的基础(稳定性分析和电磁暂态分析需要首先计算初始状态,而初始状态需要进行潮流计算)。其根本任务是根据给定的运行参数,例如节点的注入功率,计算电网各个节点的电压、相角以及各个支路的有功功率和无功功率的分布及损耗。 潮流计算的本质是求解节点功率方程,系统的节点功率方程是节点电压方程乘以节点电压构成的。要想计算各个支路的功率潮流,首先根据节点的注入功率计算节点电压,即求解节点功率方程。节点功率方程是一组高维的非线性代数方程,需要借助数字迭代的计算方法来完成。简单辐射型网络和环形网络的潮流估算是以单支路的潮流计算为基础的。 本章主要介绍电力系统的节点功率方程的形成,潮流计算的数值计算方法,包括高斯迭代法、牛顿拉夫逊法以及PQ 解藕法等。介绍单电源辐射型网络和双端电源环形网络的潮流估算方法。 4-1 潮流计算方程--节点功率方程 1. 支路潮流 所谓潮流计算就是计算电力系统的功率在各个支路的分布、各个支路的功率损耗以及各个节点的电压和各个支路的电压损耗。由于电力系统可以用等值电路来模拟,从本质上说,电力系统的潮流计算首先是根据各个节点的注入功率求解电力系统各个节点的电压,当各个节点的电压相量已知时,就很容易计算出各个支路的功率损耗和功率分布。 假设支路的两个节点分别为k 和l ,支路导纳为kl y ,两个节点的电压已知,分别为k V 和l V ,如图4-1所示。 图4-1 支路功率及其分布 那么从节点k 流向节点l 的复功率为(变量上面的“-”表示复共扼): )]([l k kl k kl k kl V V y V I V S (4-1) 从节点l 流向节点k 的复功率为: )]([k l kl l lk l lk V V y V I V S (4-2) 功率损耗为: 2)()(kl kl l k kl l k lk kl kl V y V V y V V S S S (4-3)

数值分析5-用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组

作业六:分别编写用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组Ax=B的标准程序,并求下列方程组的解。 可取初始向量 X(0) =(0,0,0)’; 迭代终止条件||x(k+1)-x(k)||<=10e-6 (1) = (2) = Jacobi迭代法: 流程图 开 始 判断b中的最大值 有没有比误差大 给x赋初值 进行迭代 求出x,弱到100次还没到,警告不收 结束

程序 clear;clc; A=[8,-1,1;2,10,01;1,1,-5]; b=[1;4;3]; e=1e-6; x0=[0;0;0]'; n=length(A); x=zeros(n,1); k=0; r=max(abs(b)); while r>e for i=1:n d=A(i,i); if abs(d)100 warning('不收敛'); end end x=x0;

程序结果(1)

(2)

Gauss-Seidel迭代法: 程序 clear;clc; %A=[8,-1,1;2,10,01;1,1,-5]; %b=[1;4;3]; A=[5,2,1;-1,4,2;2,-3,10]; b=[-12;20;3]; m=size(A); if m(1)~=m(2) error('矩阵A不是方阵'); end n=length(b); %初始化 N=0;%迭代次数 L=zeros(n);%分解A=D+L+U,D是对角阵,L是下三角阵,U是上三角阵U=zeros(n); D=zeros(n); G=zeros(n);%G=-inv(D+L)*U d=zeros(n,1);%d=inv(D+L)*b x=zeros(n,1); for i=1:n%初始化L和U for j=1:n if ij U(i,j)=A(i,j); end end end for i=1:n%初始化D D(i,i)=A(i,i); end G=-inv(D+L)*U;%初始化G d=(D+L)\b;%初始化d %迭代开始 x1=x; x2=G*x+d; while norm(x2-x1,inf)>10^(-6)

求解线性方程组——超松弛迭代法(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

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

数值分析实验五 班级: 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

Gauss-Seidel迭代法求解线性方程组

Gauss-Seidel迭代法求解线性方程组

一. 问题描述 用Gauss-Seidel 迭代法求解线性方程组 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值。使用了两倍的存储空间,浪费了存储空间。若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量 ) 1(+k i x 时,用最新分量 ) 1(1 +k x , ???+) 1(2 k x ) 1(1 -+k i x 代替旧分量 ) (1 k x , ???) (2 k x ) (1 -k i x ,可以起 到节省存储空间的作用。这样就得到所谓解方程组的Gauss-Seidel 迭代法。 二. 算法设计 将A 分解成U D L A --=,则b x =A 等价于b x =--U)D (L 则Gauss-Seidel 迭代过程 ) ()1()1(k k k Ux Lx b Dx ++=++ 故 ) ()1()(k k Ux b x L D +=-+ 若设1 )(--L D 存在,则 b L D Ux L D x k k 1)(1)1()()(--+-+-= 令 b L D f U L D G 11)()(---=-=,

则Gauss-Seidel 迭代公式的矩阵形式为 f Gx x k k +=+) () 1( 其迭代格式为 T n x x x x ) ()0()0(2)0(1)0(,,,???= (初始向量), ) (1 1 1 1 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(111 1)()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 ,,,;,,, 三. 程序框图

迭代法解线性方程组

迭代法解线性方程组作业 沈欢00986096 北京大学工学院,北京100871 2011年10月12日 摘要 由所给矩阵生成系数矩阵A和右端项b,分析系数矩阵A,并用Jacobi迭代法、GS迭代法、SOR(逐步松弛迭代法)解方程组Ax=b 1生成系数矩阵A、右端项b,并分析矩阵A 由文件”gr900900c rg.mm”得到了以.mm格式描述的系数矩阵A。A矩阵是900?900的大型稀 疏对称矩阵。于是,在matlaB中,使用”A=zeros(900,900)”语句生成900?900的零矩阵。再 按照.mm文件中的描述,分别对第i行、第j列的元素赋对应的值,就生成了系数矩阵A,并 将A存为.mat文件以便之后应用。 由于右端项是全为1的列向量,所以由语句”b=ones(900,1)”生成。 得到了矩阵A后,求其行列式,使用函数”det(A)”,求得结果为”Inf”,证明行列式太大,matlaB无法显示。由此证明,矩阵A可逆,线性方程组 Ax=b 有唯一解。 接着,判断A矩阵是否是对称矩阵(其实,这步是没有必要的,因为A矩阵本身是对称矩阵,是.mm格式中的矩阵按对称阵生成的)。如果A是对称矩阵,那么 A?A T=0 。于是,令B=A?A T,并对B求∞范数。结果显示: B ∞=0,所以,B是零矩阵,也就是:A是对称矩阵。 然后,求A的三个条件数: Cond(A)= A ? A?1 所求结果是,对应于1范数的条件数为:377.2334;对应于2范数的条件数为:194.5739;对应 于3范数的条件数为:377.2334; 1

从以上结果我们看出,A是可逆矩阵,但是A的条件数很大,所以,Ax=b有唯一解并且矩阵A相对不稳定。所以,我们可以用迭代方法来求解该线性方程组,但是由于A的条件数太大迭代次数一般而言会比较多。 2Jacobi迭代法 Jacobi迭代方法的程序流程图如图所示: 图1:Jacobi迭代方法程序流程图 在上述流程中,取x0=[1,1,...,1]T将精度设为accuracy=10?3,需要误差满足: error= x k+1?x k x k+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)

潮流计算简答题

潮流计算数学模型与数值方法 1. 什么是潮流计算潮流计算的主要作用有哪些 潮流计算,电力学名词,指在给定电力系统网络拓扑、元件参数和发电、负荷参量条件下,计算有功功率、无功功率及电压在电力网中的分布。 潮流计算是电力系统非常重要的分析计算,用以研究系统规划和运行中提出的各种问题。对规划中的电力系统,通过潮流计算可以检验所提出的电力系统规划方案能否满足各种运行方式的要求;对运行中的电力系统,通过潮流计算可以预知各种负荷变化和网络结构的改变会不会危及系统的安全,系统中所有母线的电压是否在允许的范围以内,系统中各种元件(线路、变压器等)是否会出现过负荷,以及可能出现过负荷时应事先采取哪些预防措施等。 2. 潮流计算有哪些待求量、已知量 (已知量:1、电力系统网络结构、参数 2、决定系统运行状态的边界条件 待求量:系统稳态运行状态 例如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等) 3. 潮流计算节点分成哪几类分类根据是什么 (分成三类:PQ 节点、PV 节点和平衡节点,分类依据是给定变量的不同) 4. 教材牛顿-拉夫逊法及有功-无功分解法是基于何种电路方程可否采用其它类型方程 答:基于节点电压方程,还可以采用回路电流方程和割集电压方程等。但是后两者不常用。 5. 教材牛顿-拉夫逊法是基于节点阻抗方程、还是基于节点导纳方程进行迭代计算的试阐述这两种方程的优点与缺点。 1.不能由等值电路直接求出 2.满秩矩阵内存量大 3.对角占优矩阵。。 节点导纳矩阵的特点:1.直观容易形成2.对称阵3.稀疏矩阵(零元素多):每一行的零元素个数=该节点直接连出的支路数。 6. 说出至少两种建立节点导纳矩阵的方法,阐述其中一种方法的原理与过程。 方法:1.根据自导纳和互导纳的定义直接求取2.运用一节点关联矩阵计算3.阻抗矩阵的逆矩阵 节点导纳矩阵的形成:1.对角线元素ii Y 的求解)1,,0(=≠==i j I i ii U i j U U I Y 【除i 外的其他节点接地,0=j U ,只在i 节点加单位电压值】解析ii Y 等于与i 节点直接相连的的所有支路导纳和2.互导纳),0,1(j k U U U I Y k j j i ij ≠===,ji ij Y Y =(无源网络导纳之间是对称的)解析:ij Y 等于j i ,节点之间直接相连的支路导纳的负值。 7. 潮流计算需要考虑哪些约束条件 答: 为了保证系统的正常运行必须满足以下的约束条件: 对控制变量

实验解线性方程组的基本迭代法实验

数值分析实验报告

0 a 12 K a 1,n 1 K a 2,n 1 U O M 则有: 第一步: Jacobi 迭代法 a 1n a 2n M , 则有: A D L U a n 1,n Ax b A A x D b L U (D L U)x b Dx (L U)x b x D (L U)x D b 令 J D (L U) 则称 J 为雅克比迭代矩阵 f D b 由此可得雅克比迭代的迭代格式如下: x (0) , 初始向量 x (k 1) Jx (k) f ,k 0,1,2,L 第二步 Gauss-Seidel 迭代法 Ax b (D L U )x b (D L)x Ux b x (D L) Ux (D L) b A D L U a 11 a 12 L a 1n a 11 A a 21 a 22 L a 2n a 22 M MM MO a n1 a n2 L a nn a 11 得到 D a 22 O a nn 由 a 21 0 M M O a n 1,1 a n 1,2 L 0 a nn a n1 a n2 L a n,n a 21 L M M O a n 1,1 a n 1,2 L a n1 a n2 L a n,n 1 a 12 K a 1,n 1 a 1n 0 K a 2,n 1 a 2n O M M a n 1,n 10

令 G (D L) U ,则称G 为Gauss-Seidel 迭代矩阵 f (D L) b 由此可得 Gauss-Seidel 迭代的迭代格式如下: x (0) , 初始向量 第三步 SOR 迭代法 w0 AD L U 1 ( D 1 wL ((1 w)D wU )) (D 1 wL) ((1 w)D wU ) w w w 令M w 1 (D wL), N 1 ((1 w)D wU )则有:A MN w w Ax b AM L W N M (M N )x b Mx Nx b x M Nx M b N M, 令W f Mb 带入 N 的值可有 L W ((1 w)D wU) (D wL) 1((1 w)D wU) (D wL) f 1 b w 1(D wL) 1b 1 (D wL) w 称 L W 为 SOR 迭代矩阵,由此可得 SOR 迭代的迭代格式如下: x (0) ,初始向量 二、算法程序 Jacobi 迭代法的 M 文件: function [y,n]=Jacobi(A,b,x0,eps) %************************************************* %函数名称 Jacobi 雅克比迭代函数 %参数解释 A 系数矩阵 % b 常数项 % x0 估计解向量 x (k 1) Gx (k) f ,k 0,1,2,L (k 1) f,k 0,1,2,L

高斯-赛德尔迭代法

一、 实验目的与要求 对于线性方程组?????=++=++=++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)

电力系统潮流计算计算计算法

电力系统潮流计算算法设计及实现 潮流计算是电力系统分析中的一种最基本的计算,它的任务是对给定的运行条件确定系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等。 建模是用数学的方法建立的数学模型,但它严格依赖于物理系统。根据电力系统的实际运行条件,按给定的变量不同,一般将节点分为PQ节点,PV节点,平衡节点三种类型。当这三个节点与潮流计算的约束条件结合起来时,便是潮流计算的数学模型。 PQ节点:有功功率P和无功功率Q是已知的,节点电压(V,δ)是待求量。通常变电所都是这一类型的节点。 PV节点:有功功率P和电压复制V是已知的,节点的无功功率Q和电压相位δ是待求量。一般选择有一定无功储备的发电厂和具有可调无功电源设备的变电所作为PV节点。 平衡节点:在潮流分布算出之前,网络中的功率损失是未知的,所以,网络中至少有一个节点的有功功率P不能给定,这个节点承担了系统的有功功率平衡,所以称为平衡节点。一般选择主调频发电厂为平衡节点。 潮流计算的约束条件是: 1、所有的节点电压必须满足: 这一约束主要是对PQ节点而言。 2、 2、所有电源节点的有功功率和无功功率必须满足: 对平衡节点的P和Q以及PV节点的Q按以上条件进行检验。 3、某些节点之间电压的相位差应满足: 稳定运行的一个重要条件。 功率方程的非线性 雅可比矩阵的特点: ●各元素是各节点电压的函数 ●不是对称矩阵 ●因为Y =0,所以H =N =J =L =0,另R =S =0,故稀疏 两种常见的求解非线性方程的方法:1)高斯-赛德尔迭代法;2)牛顿-拉夫逊迭代法。 高斯-赛德尔迭代法潮流计算

1、方程表示: ①用高斯-赛德尔计算电力系统潮流首先要将功率方程改写成能收敛的迭代形式; ②Q:设系统有n个节点,其中m个PQ节点,n-(m+1)个是PV节点,一个平衡节点,平衡节点不参加迭代; ③功率方程改写成: 2、求解的步骤: 1)上述迭代公式假设n个节点全部为PQ节点。 2)始终等号右边采用第k次迭代结果,当ji时,采用第k次迭代结果。 对于PV及诶单,节点有功功率P和电压幅值V是给定的。但节点的无功功率只在迭代开始时给出初值Q(在给定初值时,对该类节点增加初值Q =0.5P ,此后的迭代值必须在迭代过程中逐次算出。所以,在每次的迭代中,需要对PV 节点做以下几项计算。 ①修正节点电压:保留节点电压相位δ,而把其幅值直接取为给定值V ,令: ②计算节点无功功率: ③无功功率越线检查:第二步计算出的无功功率要按下面的不等式进行 检验: a) Q Q 计算的得到的结果比允许的最大值还大,不能以计算得到的结 果再代入进行迭代,以Q作为PV节点的无功功率,此时,PV节点转为 PQ节点; c) Q

Gauss-Seidel迭代法求解线性方程组

一. 问题描述 用Gauss-Seidel 迭代法求解线性方程组 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值。使用了两倍的存储空间,浪 费了存储空间。若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量) 1(+k i x 时, 用最新分量) 1(1 +k x ,???+) 1(2 k x ) 1(1 -+k i x 代替旧分量)(1k x ,???) (2 k x ) (1-k i x ,可以起到节省存储 空间的作用。这样就得到所谓解方程组的Gauss-Seidel 迭代法。 二. 算法设计 将A 分解成U D L A --=,则b x =A 等价于b x =--U)D (L 则Gauss-Seidel 迭代过程 ) ()1()1(k k k Ux Lx b Dx ++=++ 故 )()1()(k k Ux b x L D +=-+ 若设1 )(--L D 存在,则 b L D Ux L D x k k 1)(1)1()()(--+-+-= 令 b L D f U L D G 11)()(---=-=, 则Gauss-Seidel 迭代公式的矩阵形式为 f Gx x k k +=+)()1( 其迭代格式为 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(111 1)() 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 ,,,;,,, 三. 程序框图

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

电力系统稳态分析 姓名: 学号: 学院(系):自动化学院 专业: 电气工程 题目: 基于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

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

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

相关文档
相关文档 最新文档