2024年1月21日发(作者:)

电力系统潮流计算

Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

电力系统

课程设计

题 目: 电力系统潮流计算

院系名称: 电气工程学院

专业班级: 电气F1206班

学生姓名:

学 号:

指导教师: 张孝远

成绩:

目录

日期:

原始资料 ................................................. 2

指导老师签名:

1 概述 ................................................... 4

2 潮流计算节点介绍 ....................................... 4

变量的分类 .......................................... 5

节点的分类 .......................................... 5

3 计算方法简介 ........................................... 6

牛顿—拉夫逊法原理 .................................. 6

牛顿—拉夫逊法概要 .............................. 6

牛顿法的框图及求解过程 .......................... 8

MATLAB简介 ......................................... 9

4 潮流分布计算 .......................................... 10

系统的一次接线图 ................................... 10

参数计算 ........................................... 10

丰大及枯大下地潮流分布情况 ......................... 14

该地区变压器的有功潮流分布数据 ................. 15

重、过载负荷元件统计表 ......................... 17

5 设计心得 .............................................. 17

参考文献 ................................................ 18

附录:程序 ............................................... 19

原始资料

一、系统接线图见附件1。

二、系统中包含发电厂、变电站、及其间的联络线路。500kV变电站以外的系统以一个等值发电机代替。各元件的参数见附件2。

设计任务

1、手动画出该系统的电气一次接线图,建立实际网络和模拟网络之间的联系。

2、根据已有资料,先手算出各元件的参数,后再用Matlab表格核算出各元件的参数。

3、潮流计算

1)对两种不同运行方式进行潮流计算,注意110kV电网开环运行。

2)注意将电压调整到合理的范围

110kV母线电压控制在106kV~117kV之间;

220kV母线电压控制在220 kV~242kV之间。

附件一:

A2x8课程设计地理接线示意图20+8BC3x40火电厂1x50水电站130水电站54x7.5GE水电站2722x101x31.5D2x31.5F12.5+31.5L2x150水电站3牵引站火电厂水电站110kV线路220kV线路110kV变电站220kV变电站500kV变电站24H90+120M

附件二:

1、变压器:两个220kV变电站均采用参数一致的三绕组变压器,具体参数如下。

220kV变电站参数表

高压侧

中压侧绕组

低压侧绕组

60(120)

绕组

容量

电压

120

220

120

110(121)

110kV及以下的变电站的变压器省略,即可将负荷直接挂在110kV母线上。而110kV升压变只计及以下参数。

110kV变电站参数表

序号

1

2

3

5

6

7

8

9

10

11

12

13

变电站名

A

B

C

D

E

G

F

水电站1

水电站2

水电站3

水电站5

水电站4

容量

16

28

120

63

20

+

30MW、2*20MVA

72MW、3*

24MW、

4*、2*20MVA

18MW、30MVA

X1

X0

14

火电厂

50MW、+40MVA

2、线路:具体参数如下。

220kV线路参数表

序号

1

2

3

M

M

M

线路名称

L

L

H

导线牌号

2x240

2x240

2x300

线路长度km

10

10

5

110kV线路参数表

序号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

水电站1

A

B

水电站4

B

C

水电站2

E

水电站3

水电站5

T节点

T节点

H

H

水电站2

L

线路名称

水电站2

B

C

C

D

D

C

D

D

T节点

D

G

F

D

L

G

导线牌号

150

95

95

150

95

240

240

240

150

70

70

240

150

185

240/2

240

线路长度km

30

80

1

65

63

60

75

5

5

7

130

10

17

18

D

火电厂

F

D

150

240

4

1

3、发电机

各发电机的参数如下:

水电站1

水电站2

水电站3

水电站5

水电站4

华鑫电厂

Xd’’

Xq’’

装机容量

30

72

24

30

18

5

功率因数

出力情况:

水力发电机丰大出力70%,枯大出力20%。

火力发电机丰大出力80%,枯大出力80%。

4、负荷

各110kV变电站丰大负荷按该站变电容量的50%估算,枯大负荷按该站变电容量的60%估算。

两个220kV变电站的低压侧上各挂10MW的负荷,中压侧各挂20MW负荷。

功率因素均为。

5、并联电容器

两个220kV变电站的低压侧上均装设并联补偿。补偿总量按该站变电容量的20%装设,分组原则以每组电容器的容量不超过10MVar且经济性较好为准。

1 概述

潮流计算是电力系统最基本最常用的计算。根据系统给定的运行条件,网络接线及元件参数,通过潮流计算可以确定各母线的电压,包括电压的幅值和相角,各元件流过的功率,整个系统的功率损耗等一系列系统中的潮流数据。

近几年,对潮流算法的研究仍然是如何改善传统的潮流算法,即高斯-塞德尔法、牛顿法和快速解耦法。牛顿法,由于其在求解非线性潮流方程时采用的是逐次线性化的方法,为了进一步提高算法的收敛性和计算速度,人们考虑采用将泰勒级数的高阶项或非线性项也考虑进来,于是产生了二阶潮流算法。后来又提出了根据直角坐标形式的潮流方程是一个二次代数方程的特点,提出了采用直角坐标的保留非线性快速潮流算法。

潮流计算在数学上是多元非线性方程组的求解问题,求解的方法有很多种,牛顿—拉夫逊Newton-Raphson法是数学上解非线性方程组的有效方法,有较好的收敛性。将N-R法用于潮流计算是以导纳矩阵为基础的,由于利用了导纳矩阵的对称性,稀疏性及节点编号顺序优划等技巧,使N-R法在收敛性,占用内存,计算速度等方面的优点都超过了阻抗法

总结为在电力系统运行方式和规划方案的研究中都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。同时为了实时监控电力系统的运行状态也需要进行大量而快速的潮流计算。因此潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。在系统规划设计和安排系统的运行方式时采用离线潮流计算在电力系统运行状态的实时监控中则采用在线潮流计算。

2 潮流计算节点介绍

常规的电力系统潮流计算中一般具有三种类型的节点:PQ、PV及平衡节点。一个节点有四个变量,即注入有功功率、注入无功功率,电压大小及相角。常规的潮流计算一般给定其中的二个变量:PQ节点(注入有功功率及无功功率),PV节点(注入有功功率及电压的大小),平衡节点(电压的大小及相角)。

变量的分类

负荷消耗的有功、无功功率——PL1、QL1、PL2、QL2

电源发出的有功、无功功率——PG1、QG1、PG2、QG2

母线或节点的电压大小和相位——U1、U2 、1、2

在这十二个变量中,负荷消耗的有功和无功功率无法控制,因它们取决于用户,它们就称为不可控变量或是扰动变量。电源发出的有功无功功率是可以控制的自变量,因此它们就称为控制变量。母线或节点电压的大小和相位角——是受控制变量控制的因变量。其中,

U1、U2主要受QG1、QG2的控制,

1、2主要受PG1、PG2的控制。这四个变量就是简单系统的状态变量。

为了保证系统的正常运行必须满足以下的约束条件:

对控制变量

对没有电源的节点则为

对状态变量Ui的约束条件则是

对某些状态变量i还有如下的约束条件

节点的分类

⑴ 第一类称PQ节点。等值负荷功率PLi、QLi和等值电源功率PGi、QGi是给定的,从而注入功率Pi、Qi是给定的,待求的则是节点电压的大小Ui和相位角i。属于这类节点的有按给定有功、无功率发电的发电厂母线和没有其他电源的变电所母线。

⑵ 第二类称PV节点。等值负荷和等值电源的有功功率PLi、PGi是给定的,从而注入有功功率Pi是给定的。等值负荷的无功功率QLi和节点电压的大小Ui 也是给定的。待求的则是等值电源的无功功率QGi,从而注入无功功率Qi和节点电压的相位角i。有一定无功功率储备的发电厂和有一定无功功率电源的变电所母线都可以作为PV节点;

⑶ 第三类平衡节点。潮流计算时一般只设一个平衡节点。等值负荷功率PLs、QLs是给定的,节点电压的大小和相位也是给定的。担负调整系统频率任务的发电厂母线往往被选作为平衡节点。

3 计算方法简介

牛顿—拉夫逊法原理

牛顿—拉夫逊法概要

首先对一般的牛顿—拉夫逊法作一简单的说明。已知一个变量X函数为:

(0)到此方程时,由适当的近似值X(n)出发,根据:

反复进行计算,当X满足适当的收敛条件就是上面方程的根。这样的方法就是所谓的牛顿—拉夫逊法。

这一方法还可以做下面的解释,设第n次迭代得到的解语真值之差,即(n)X的误差为时,则:

把f(X(n))在X(n)附近对用泰勒级数展开

上式省略去2以后部分

(n)X的误差可以近似由上式计算出来。

(n)比较两式,可以看出牛顿—拉夫逊法的休整量和X等。

用同样的方法考虑,给出n个变量的n个方程:

的误差的一次项相可以通过解下边的方程来确定:

对其近似解X1得修正量X1式中等号右边的矩阵fn,,Xn的值。这一矩阵称为雅可都是对于X1,X2xn,,Xn后,得到如下关比(JACOBI)矩阵。按上述得到的修正向量X1,X2系

,,Xn更接近真实值。这一步在收敛到希望的值以前重复进这比X1,X2行,一般要反复计算满足

为预先规定的小正数,Xnn1是第n次迭代Xn的近似值。

牛顿法的框图及求解过程

1、用牛顿法计算潮流时,有以下的步骤:

(1)给这各节点电压初始值e(0),f(0);

(2)将以上电压初始值代入公式,求修正方程的常数项向量

P(0),Q(0),(V2)(0);

(3)将电压初始值在带入上述公式,求出修正方程中系数矩阵的各元素。

(4)解修正方程式e(0),f(0);

(5)修正各节点电压e(1)e(0)e(0),f(1)f(0)f(0);

(6)将e(1),f(1)在带入方程式,求出P(1),Q(1),(V2)(1);

(7)检验是否收敛,即maxPi,Qi(k)(k)

(8)如果收敛,迭代到此结束,进一步计算各线路潮流和平衡节点功率,并打印输出结果。如果不收敛,转回(2)进行下次迭代计算,直到收敛为止。

2、程序框图如下

MATLAB简介

MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB是一种交互式、面向对象的程序设计语言术界主要用于矩阵运算广泛应用于工业界与学同时在数值分析、自动控制模拟、数字信号处理、 动态分析、绘图等方面也具有强大的功能。

MATLAB程序设计语言结构完整且具有优良的移植性它的基本数据元素特别是关于矩阵和是不需要定义的数组。它可以高效率地解决工业计算问题矢量的计算。MATLAB与C语言和FORTRAN语言相比更容易被掌握。通过M语言可以用类似数学公式的方式来编写算法大大降低了程序所需的难度并节省了时间,从而可把主要的精力集中在算法的构思而不是编程上。

目前电子计算机已广泛应用于电力系统的分析计算潮流计算是其基本应用软件之一。现有很多潮流计算方法。对潮流计算方法有五方面的要求(1)计算速度快(2)内存需要少(3)计算结果有良好的可靠性和可信(4)适应性好亦即能处理变压器变比调整、系统元件的不同描述和与其它程序配合的能力强。

4 潮流分布计算

系统的一次接线图

图 系统的一次连接图

参数计算

设定基准值SB100MVA,Ub=,则各参数如下。

(1)发电机的次暂态电抗:X=X*Sb/Sn,ZB=UB2/SN

发电机参数 单位(MW)

装机容量

30

72

枯水出力比例

丰水出力比例

丰大有功

丰大无功

枯大有功

枯大无功

短路X*''

电厂

水电站1

水电

站2

水电站3

水电站5

华鑫电厂

24

30

50

(2)110KV升压变压器的参数:

电阻:R=PK*UN2/ 1000SN2;

电抗:X=UK(%)*UN2/ 100 SN;

电导:G=P0/ 1000 UN2;

电纳:B=I0(%)*SN/ 100 UN2;

式中UN以KV为单位,SN以MVA为单位,P0、PK以KW为单位。

110KV变压器参数

变电站容量

A 16

B 28

C 120

D 63

E 20

G

F +

水电站30MW、1

2*20MVA

水电站72MW、2

3*

水电站24MW、

3

水电站4*、5

2*20MVA

50MW、火电厂

+40MVA

X1

X0

100

100

100

100

100

100

Sb

R*

X*

G*

B*

(3)220KV三绕组变压器的参数:

电阻:R=PK*UN2/ 1000SN2;

电抗:X=UK(%)*UN2/ 100 SN;

电导:G=P0/ 1000 UN2;

电纳:B=I0(%)*SN/ 100 UN2

220kV变电站参数表

高压侧绕组

中压侧绕组

低压侧绕组

高压侧绕组(1)

中压侧绕组(2)

低压侧绕组(3)

SB

R*

X*

G*

B*

100

容量

120 120 120

100

电压

220 121

100

(4)110KV线路参数:

r=ρ/S; lg ; Xl*=x1*l*SB/。

110KV线路参数标么值

序号

1

2

3

4

线路名称

水电站1

A

B

水电站4

水电站2

B

C

C

导线牌号

150

95

95

150

线路长度km

30

80

1

65

UB(KV)

115

115

115

115

SB(MW)

100

100

100

100

R*

X*

B*

5

6

7

8

9

10

11

12

13

14

15

16

17

18

B

C

水电站2

E

水电站3

水电站5

T节点

T节点

H

H

水电站2

L

D

火电厂

D

D

C

D

D

T节点

D

G

F

D

L

G

F

D

95

240

240

240

150

70

70

240

150

185

240

240

150

240

63

60

75

5

5

7

130

10

4

1

115

115

115

115

115

115

115

115

115

115

115

115

115

115

100

100

100

100

100

100

100

100

100

100

100

100

100

100

变电站

A

B

C

D

E

F

G

总容量

16

28

120

63

20

44

110KV变电站负荷参数

各变电站补偿电容参数

丰变枯站丰大无枯大有站比

变比

丰大有功

枯大无功

站别

运行方式

A

3

3

B

C

0

0

D

0

E

0

0

F

G

0

0

H低压侧

L低压侧

丰大

枯大

丰大及枯大下地潮流分布情况

电压是衡量电力系统电能质量的标准之一。电压过高或过低,都将对人身及其用电设备产生重大的影响。保证用户的电压接近额定值是电力系统调度的基本任务之一。当系统的电压偏离允许值时,电力系统必须应用电压调节技术调节系统电压的大小,使其维持在允许值范围内。本文经过手算形成了等值电路图,并编写好了程序得出节点电压标幺值,使其满足所要求的调整范围。

我们首先对给定的程序输入部分作了简要的分析,程序开始需要我们确定输入节点数、支路数、平衡母线号、支路参数矩阵、节点参数矩阵。

(1)为了保证整个系统潮流计算的完整性,我们把凡具有母线及发电机处均选作节点,这样,我们确定电厂一母线上的发电机作为平衡节点,节点号为①,其它机组作为PV节点,节点号为②③④,其余节点均为PQ节点,节点号见等值电路图。

(2)确定完节点及编号后,各条支路也相应确定了,我们对各支路参数进行了计算。根据所给实际电路图和题中的已知条件,有以下公式计算各输电线路的阻抗和对地支路电容的标幺值和变压器的阻抗标幺值。

该地区变压器的有功潮流分布数据

(1)该图为丰大潮流模型图:

丰大潮流模型图

该运行方式的电压合理,负荷分配也均匀,但是有些线路的负载率偏低。比如水电厂2-----L站的负载率仅仅为% ,M----L站的线路的负载率也只是%。

(2)该图为枯大潮流模型图:

) 枯大潮流模型图

该运行方式的电压合理,负荷分配也均匀,有些线路的负载率偏低但是有些线路的负载率则偏高。比如水电厂2-----L站的负载率仅仅为%,M----L站的线路的负载率也只是 % D---H站的线路却重载到84%。

重、过载负荷元件统计表

类型

线路

负载率

实际是在功率

额定容量

建议

限D站负荷到4MW以下

5 设计心得

通过这次课程设计,我发现自己有很多不足的地方,如基础知识掌握不牢固,很多知识点都忘记了,计算速度慢及准确性低,分析问题能力不够全面等等。同时,在设计的过程中遇到很多问题,如怎样使用WORD的工具,计算公式输入,画图等。明白了有些东西看起来很简单,但一旦做起来却需要很多心思,要注意到很多细节问题。要做到能好好理解课本的内容,一定要认认真真做一次计算。因此,完成课程设计使我对课本的内容加深了理解。总体来说,这次的课

程设计不单在专业基础方面反映了我的学习还要加倍努力,还在对一些软件的应用需要加强。

计算在各种情况下的潮流分布,对于丰大和枯大情况下的潮流分布有了明确的认识。在本次课程设计过程当中,锻炼了自己实际操作分析能力,理论联系实际,对运行中的电力系统,通过潮流计算可以预知各种负荷变化和网络结构的改变会不会危及系统的安全,系统中所有母线的电压是否在允许的范围以内,系统中各种元件(线路、变压器等)是否会出现过负荷,以及可能出现过负荷时应事先采取哪些预防措施等。同时采用MATLAB进行计算机的计算,在计算时采用特殊算法使得潮流计算的过程更快,效率更高。而采用计算机的运算应该是未来的一种趋势,所以我会学习一定的编辑语言如C,C++等,以提高运算准确性和快速性。

总体而言,这次的课程设计对我们运用所学知识,发现、提出、分析和解决实际问题、锻炼实践能力的考察,使我们更清楚地知道不足之出,从而提高我们。

参考文献

[1]于永源 主编.电力系统分析 湖南师范大学出版社[M].1992年7月

[2]陈珩编.电力系统稳态分析 水利电力出版社[M].1995年1月第二版

[3]邱晓燕.刘天琪电力系统分析的计算机算法北京中国电力出版 200

[4]李光琦.电力系统暂态分析[M].北京:水利电力出版社,

[5]陆敏政 主编.电力系统习题集 水利电力出版社[M].1990年

附录:程序

%潮流计算MATLAB 粗略程序?

%creat a new_data

t=0;

s=0;

r=0;

w=0;

number=input('How many node are there=');

% Convert Pq to a new array

for ii=1:number

if data(ii,4)==1

t=t+1;

for jj=1:14

new_data1(t,jj)=data(ii,jj);

end;

a(1,t)=ii;

s=s+1;

%record the number of the

PQ node

end;

end;

%Convert pv to a new array

for ii=1:number

if data(ii,4)==2

t=t+1;

for jj=1:14

new_data1(t,jj)=data(ii,jj);

end;

a(1,t)=ii;

r=r+1;

%record the number of the

PV node

end;

end;

%Convert set_v to a new array

for ii=1:number

if data(ii,4)==3

t=t+1;

for jj=1:14

new_data1(t,jj)=data(ii,jj);

end;

a(1,t)=ii;

w=w+1;

end;

end;

%creat a new_data2

[x,y]=size(data2)

for ii=1:x

for jj=1:2

for mm=1:number

if data2(ii,jj)==a(1,mm)

new_data2(ii,jj)=mm;

end;

end;

end;

end;

for ii=1:x

for jj=3:14

new_data2(ii,jj)=data2(ii,jj);

end;

end;

%creat a Y

Y=zeros(number,number);

YY=zeros(number,number);

yy=zeros(number,number);

for ii=1:x

% for jj=1:14

iii=new_data2(ii,1);

jjj=new_data2(ii,2);

if new_data2(ii,5)==2

sub=new_data2(ii,6)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))-new_data2(ii,7)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))*i;

Y(iii,jjj)=-sub./new_data2(ii,14);

YY(iii,jjj)=sub./new_data2(ii,14);

Y(jjj,iii)=-sub/new_data2(ii,14);

YY(jjj,iii)=sub./new_data2(ii,14);

yy(iii,jjj)=(ii,14))./(new_data2(ii,14).*new_data2(ii,14)).*sub;

yy(jjj,iii)=(new_data2(ii,14)-1)./(new_data2(ii,14)).*sub;

else

Y(iii,jjj)=-new_data2(ii,6)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*

new_data2(ii,6))+new_data2(ii,7)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))*i;

YY(iii,jjj)=new_data2(ii,6)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))-new_data2(ii,7)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))*i;

Y(jjj,iii)=-new_data2(ii,6)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))+new_data2(ii,7)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))*i;

YY(jjj,iii)=new_data2(ii,6)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))-new_data2(ii,7)./(new_data2(ii,7).*new_data2(ii,7)+new_data2(ii,6).*new_data2(ii,6))*i;

yy(iii,jjj)=new_data2(ii,8)./2.*i;

yy(jjj,iii)=new_data2(ii,8)./2.*i;

end;

%end;

end;

for iii=1:number

Y(iii,iii)=0;

end;

%for ii=1:x

% for jj=1:14

for iii=1:number

for jj=1:number

% if iii~=jj

Y(iii,iii)=Y(iii,iii)+YY(iii,jj)+yy(iii,jj);

% end;

end;

end;

%creat B, G

for ii=1:number

for jj=1:number

G(ii,jj)= real(Y(ii,jj));

B(ii,jj)= imag(Y(ii,jj));

end;

end;

%creat Initial_P Initial_Q Initial_V

for ii=1:(s+r)

set_P(ii,1)=(new_data1(ii,9)-new_data1(ii,7))./100;

end;

for ii=1:s;

set_Q(ii,1)=(new_data1(ii,10)-new_data1(ii,8))./100;

end;

for ii=1:r

set_V(ii,1)=new_data1(ii+s,12).*new_data1(ii+s,12);%try to

modify for sike of correcting

end;

Initial_p_q_v=[set_P;set_Q;set_V];

disp(Initial_p_q_v);

%creat Initial_e,Initial_f

for ii=1:number-1

e(ii,1)=1;

f(ii,1)=;%change f to test used to be

end;

e(number,1)=new_data1(number,12);

f(number,1)=0;

% e(64,1)=;%test 118ieee

% f(14,1)=0;

% e(10,1)=;

%e(11,1)=;

%e(12,1)=;

%e(13,1)=;

% Start NEWTOWN CALULATION

for try_time=1:25

%Creat every node consume P Q and U

n=s;

m=r;

for ii=1:(n+m)

sum1=0;

for jj=1:(n+m+1)

sum1=sum1+e(ii,1).*(G(ii,jj).*e(jj,1)-B(ii,jj).*f(jj,1))+f(ii,1).*(G(ii,jj).*f(jj,1)+B(ii,jj).*e(jj,1));

end;

p(ii,1)=sum1;

end;

for ii=1:n

sum2=0;

for jj=1:(n+m+1)

sum2=sum2+f(ii,1).*(G(ii,jj).*e(jj,1)-B(ii,jj).*f(jj,1))-e(ii,1).*(G(ii,jj).*f(jj,1)+B(ii,jj).*e(jj,1));

end;

q(ii,1)=sum2;

end;

disp('q=');

disp(q);

u=zeros((n+m),1);

for ii=(n+1):(n+m)

u(ii,1)=e(ii,1).*e(ii,1)+f(ii,1).*f(ii,1);

end;

for ii=n+1:(n+m)

extra_u((ii-n),1)=u(ii,1);

end;

disp('extra_u=');

disp(extra_u);

sum=[p;q;extra_u];

disp(sum)

disp(s);

disp(p);

%creat Jacobian

disp(n);

disp(m);

for ii=1:(n+m)

for jj=1:(n+m)

if (ii~=jj)

PF(ii,jj)=B(ii,jj).*e(ii,1)-G(ii,jj).*f(ii,1);

PE(ii,jj)=-G(ii,jj).*e(ii,1)-B(ii,jj).*f(ii,1);

else

ss=0;

qq=0;

for num=1:(n+m+1)

ss=ss+G(ii,num).*f(num,1)+B(ii,num).*e(num,1);

qq=qq+G(ii,num).*e(num,1)-B(ii,num).*f(num,1);

end;

PF(ii,jj)=-ss+B(ii,jj).*e(ii,1)-G(ii,jj).*f(ii,1);%TEST+1

PE(ii,jj)=-qq-G(ii,jj).*e(ii,1)-B(ii,jj).*f(ii,1);%TEST+1

end;

end;

end;

copy=;

disp('================copy================')

for ii=1:n

for jj=1:m+n

if (ii~=jj)

QE(ii,jj)=B(ii,jj).*e(ii,1)-G(ii,jj).*f(ii,1);%TEST+1

QF(ii,jj)=G(ii,jj).*e(ii,1)+B(ii,jj).*f(ii,1);%TEST+1

else

ss=0;

qq=0;

for num=1:(n+m+1)

ss=ss+G(ii,num).*f(num,1)+B(ii,num).*e(num,1);

qq=qq+G(ii,num).*e(num,1)-B(ii,num).*f(num,1);

end;

QF(ii,jj)=-qq+G(ii,jj).*e(ii,1)+B(ii,jj).*f(ii,1);%TEST+1

QE(ii,jj)=ss+B(ii,jj).*e(ii,1)-G(ii,jj).*f(ii,1);%TEST+1

end;

end;

end;

%disp('QF');

%disp(QF);

%disp('QE');

%disp(QE);

UE=zeros((n+m),(n+m));

UF=zeros((n+m),(n+m));

for ii=n+1:n+m

for jj=1:(n+m)

if (ii~=jj)

UE(ii,jj)=0;

UF(ii,jj)=0;

else

ss=0;

qq=0;

for num=1:(n+m+1)

ss=ss+G(ii,num).*f(num,1)+B(ii,num).*e(num,1);

qq=qq+G(ii,num).*e(num,1)-B(ii,num).*f(num,1);

end;

UF(ii,jj)=-2.*f(ii,1);

UE(ii,jj)=-2.*e(ii,1);

end;

end;

end;

for ii=(n+1):(n+m)

for jj=1:(n+m)

extra_UE((ii-n),jj)=UE(ii,jj);

extra_UF((ii-n),jj)=UF(ii,jj);

end;

end;

%disp('extra_UE');

%disp(extra_UE);

%disp('extra_Uf');

%disp(extra_UF);

Jacobian=[PF,PE;QF,QE;extra_UF,extra_UE];

%disp('Jacobian=');

%disp(Jacobian);

%creat substract result

substract_result=Initial_p_q_v-sum;

%disp('substract_result');

%disp(substract_result);

%calculate delta_f_e

delta_f_e=-inv(Jacobian)*substract_result;

%disp(delta_f_e);

for ii=1:number-1;

f(ii,1)=f(ii,1)+delta_f_e(ii,1);

e(ii,1)=e(ii,1)+delta_f_e(ii+number-1,1);

end;

if max(substract_result)<1e-4

break;

end ;

end;

%disp('substract_result');

%disp(substract_result);

%disp('e=');

%disp(e);

%disp('f=');

%disp(f);

for ii=1:number

uuu(ii,1)= e(ii,1).*e(ii,1)+f(ii,1).*f(ii,1);

U_RESULT(ii,1)=sqrt(uuu(ii,1));

end;

for ii=1:number

for jj=1:number

if ii==a(1,jj)

Old_Uresult(ii,1)=U_RESULT(jj,1)

end;

end;

end;

for ii=1:number

Old_Uresult(ii,2)=ii;

end;

%disp('U_result');

%disp(U_RESULT);

disp('=====================================');

disp('The last result is :')

disp('===========U===================BUS-NO.');

disp('U=')

disp(Old_Uresult);

%calculate the angle

PI=

for ii=1:number

Angle(ii,1)=atan(f(ii,1)./e(ii,1))./PI*180;

end;

for ii=1:number

for jj=1:number

if ii==a(1,jj)

Old_Angle(ii,1)=Angle(jj,1);

Old_Angle(ii,2)=ii;

end;

end;

end;

disp('=======Angle===================BUS-NO.');

disp('Angle=');

disp(Old_Angle);

disp('=====Try-times=======================')

disp('Try-times=')

disp(try_time);

%disp('p====================');

%disp(p);

% for jj=1:number

% if a(1,jj)==118

% man=jj

% end;

%end;

%disp('man=========');

%disp(man)

sum4=0;

for jj=1:number

Y_conj(number,jj)=conj(Y(number,jj));

sum4=sum4+Y_conj(number,jj).*(e(jj,1)-f(jj,1)*i);

end;

%sum4=sum4*e(number,1);

disp('===============Balance P Q=========BUS-NO');

%disp(sum4);

Blance_Q(1,1)=imag(sum4)*100;

Blance_Q(1,2)=a(1,number);

Blance_P(1,1)=real(sum4)*100;

Blance_P(1,2)=a(1,number);

disp('Q Of the Balance node= ');

disp(Blance_Q);

disp('P Of the Balance node= ')

disp(Blance_P);

disp('=================================BUS-NO');

%calculate the Q of the P-V node

Q_PV_node=zeros(number,2);

Y_conj=conj(Y);

for ii=(s+1):(s+r)

for jj=1:number

Q_PV_node(ii,1)=Q_PV_node(ii,1)+(e(ii,1)+f(ii,1)*i).*(Y_conj(ii,jj).*(e(jj,1)-f(jj,1)*i));

end;

end;

for ii=(s+1):(s+r);

Q_PV_node(ii,1)=Q_PV_node(ii,1).*100+new_data1(ii,8)*i;

end;

for ii=1:number

old_number=a(1,ii);

Q_PV_node_old(old_number,1)=Q_PV_node(ii,1);

end;

for ii=1:number

Q_PV_node_old(ii,1)=imag(Q_PV_node_old(ii,1));

end;

for ii=1:number

Q_PV_node_old(ii,2)=ii;

end;

disp('Q gen=');

disp(Q_PV_node_old);