基于极坐标的牛顿拉夫逊潮流计算
基于极坐标的牛顿拉夫逊潮流计算
基于极坐标的牛顿拉夫逊潮流计算
极坐标牛顿拉夫逊潮流(PNF)计算也称为极坐标矢量法,是一种利用
极坐标变换计算复杂电力系统潮流的数值计算方法。
极坐标牛顿拉夫逊潮
流计算把复杂的三相系统潮流变换为一种简单的极坐标系统,把潮流计算
变换为水平和垂直运动,而每一个潮流方程只需要解决一个联立方程,从
而大大简化了潮流计算的复杂性。
极坐标牛顿拉夫逊潮流计算首先把潮流计算分为两部分,第一部分是
极坐标系变换,把复杂的三相系统潮流变换为一种简单的极坐标系统,这
部分计算主要包括把直流潮流变换为极坐标系统、设置极坐标参数等步骤;第二部分是牛顿拉夫逊潮流计算,即基于极坐标系统解决潮流方程。
牛顿
拉夫逊潮流计算的核心部分是极坐标潮流模型,包括水平潮流模型和垂直
潮流模型。
极坐标牛顿拉夫逊潮流计算的优势主要体现在潮流计算过程简单、求
解效率高。
基于极坐标的牛顿拉夫逊法潮流计算设计
基于极坐标的牛顿拉夫逊法潮流计算设计极坐标的牛顿拉夫逊法潮流计算是一种在电力系统分析中广泛使用的方法。
它通过使用极坐标来表示节点电压和角度,对电力系统的潮流进行计算。
这种方法具有计算速度快、收敛性好等优点,在实际工程中具有很高的实用性。
首先,我们需要明确定义该计算的目标。
潮流计算的目标是计算电力系统中各个节点的电压幅值和相角,以及系统中每一根支路上的潮流大小和方向。
这些计算结果可以帮助我们了解电力系统中的潮流分布情况,并为系统的运行与调度提供指导。
极坐标的牛顿拉夫逊法潮流计算的核心思想是通过迭代计算节点的电压幅值和相角,最终使得系统总功率平衡和节点潮流满足潮流方程。
这个方法的基本步骤可以总结为以下几步:1.初始化电压幅值和相角:首先,我们需要对电力系统中各个节点的电压幅值和相角进行初始化。
这可以通过读取系统的初始状态或者通过简化的方法进行估算得到。
2.计算节点注入功率:根据节点电压和相角,以及负载和发电机的参数,计算每个节点的注入功率(即电流乘以电压的复数形式)。
这个计算可以使用潮流方程进行表达。
3.计算雅可比矩阵:根据节点注入功率的变化对节点电压的变化进行线性近似,得到雅可比矩阵。
雅可比矩阵的元素可以通过潮流方程的偏导数计算得到。
4.解线性方程:通过雅可比矩阵和节点注入功率的计算结果,求解线性方程组。
这个方程组的解表示节点电压的变化量。
5.更新节点电压:根据线性方程组的解,更新节点的电压幅值和相角。
6.检查收敛准则:判断节点电压的更新是否符合收敛准则。
如果不满足准则,返回步骤4;如果满足准则,继续下一步。
7.计算支路潮流:根据节点电压幅值和相角,以及支路的参数,计算每一根支路上的潮流大小和方向。
这个计算可以使用潮流方程进行表达。
8.检查潮流误差:判断计算得到的支路潮流是否与预期的值相符合。
如果不符合,则调整节点电压,并返回步骤4;如果符合,则计算结束。
上述步骤中的潮流方程可以根据电力系统的拓扑结构和支路参数,以及节点电压和功率注入的情况,进行建模和推导。
基于极坐标的牛顿拉夫逊法潮流计算设计
毕业设计基于极坐标的牛顿-拉夫逊法潮流计算摘要潮流计算是电力系统最基本的计算功能,其基本思想是根据电力网络上某些节点的已知量求解未知量,潮流计算在电力系统中有着独特的作用。
它不仅能确保电力网络能够正常的运行工作、提供较高质量的电能,还能在以后的电力系统扩建中各种计算提供必要的依据。
计算潮流分布的方法很多,本设计主要用的是基于极坐标的牛顿-拉夫逊法。
根据电力系统网络的基本知识,构建出能代表电力系统系统网络的数学模型,然后用牛顿—拉夫逊法反复计算出各个接点的待求量,直到各个节点的待求量满足电力系统的要求。
我们可以画出计算框图,用MATLAB编写出程序,来代替传统的手算算法。
复杂电力系统是一个包括大量母线、支路的庞大系统。
对这样的系统进行潮流分析时,采用人工计算的方法已经不再适用。
计算机计算已逐渐成为分析复杂系统潮流分布的主要方法。
本设计中还用了一个五节点的电力系统网络来验证本设计在实际运行中的优越性。
关键词:牛顿-拉夫逊法,复杂电力系统,潮流计算The method of Newton- Raphson based on polarABSTRACTPower system load flow calculation is the most basic computing functions, the basic idea is based on some of the electricity network nodes to solve the unknown quantity of known volume,In power system, power flow, which can ensure that electrical net can work well and give the high quality power, but also later provide the necessary datas in the enlargement of the power system. has special function.There are lots of methods about power flow. We mainly use the method of Newton-Raphson based on polar in my design. According to the basic knowledge of the electrical network, we established the mathematics model which can presents the power system ,then computed again and again unknown members of the each bus with the method of Newton-RaphSon until the unknown numbers meet the demand of the power system. We can write down the block diagram and write the order with the Matlab in place of the traditional methods. Complex power system is a large system which involves lots of bus bars and branches. We also chose a five-bus power system for testing the advantages in the relity.KEY WORDS: Newton-Raphson,power system,power flow目录前言 (1)第一章电力系统潮流计算的基本知识 (2)1.1潮流计算的定义及目的 (2)1.2潮流计算方法的发展及前景 (2)第二章潮流计算的节点 (5)2.1 节点的分类 (5)2.2潮流问题变量的约束条件 (7)第三章电力网络的数学模型 (8)3.1 节点导纳矩阵的形成 (9)3.2 节点导纳矩阵的修改 (9)第四章潮流计算的原理 (12)4.1 牛顿-拉夫逊法 (12)第五章计算实例 (17)5.1算例 (17)5.2 节点导纳的形成 (17)5.3 计算结果 (18)结论 (20)谢辞 (22)参考文献 (23)附录 (24)计算程序 (25)外文资料翻译 (41)前言潮流计算是电力系统中应用最广泛和最重要的一种电气计算。
基于极坐标的牛顿拉夫逊法潮流计算设计
基于极坐标的牛顿拉夫逊法潮流计算设计极坐标是一种非常有效的数学工具,可用于描述圆形或球形的物体。
在潮流计算中,借助极坐标可以更准确地描述电网中节点之间的电流和电压。
牛顿拉夫逊法(Newton-Raphson method)是一种数值计算方法,用于求解非线性方程组。
在潮流计算中,我们需要求解电网中节点的电压相位和模值,这可以通过牛顿拉夫逊法进行迭代计算。
潮流计算的目标是确定电网中各个节点的电压相位和模值,以及支路中的电流大小和相位差。
利用极坐标可以更直观地表示电流和电压的相位差。
在设计基于极坐标的牛顿拉夫逊法潮流计算时,首先需要建立电网的节点导纳矩阵和负荷模型。
然后,可以开始迭代计算,以下是该方法的步骤:1.初始化节点电压的相位和模值。
可以使用已知的节点电压作为初始猜测值。
2.计算节点注入功率,包括负荷注入功率和支路注入功率。
3.计算节点电流注入向量,通过求解节点电压和节点注入功率之间的关系。
4.根据电流注入向量,计算雅可比矩阵。
雅可比矩阵描述了节点电流注入向量与节点电压之间的关系。
5.利用雅可比矩阵和节点电流注入向量,求解节点电压的变化量。
可以使用牛顿迭代公式进行计算。
6.更新节点电压,计算新的节点电压值。
7.判断节点电压是否收敛。
如果未收敛,返回步骤4进行下一次迭代;如果已收敛,结束迭代过程。
通过以上迭代计算,可以求得电网中各个节点的电压相位和模值。
基于极坐标的计算结果可以更清晰地展示节点之间的电流和电压关系,有助于对电网的运行状态进行分析和优化。
综上所述,基于极坐标的牛顿拉夫逊法潮流计算设计十分可行和有效。
该方法能够提供更准确的节点电压和电流信息,有助于电力系统的运行控制和优化。
《电力系统分析》课程设计-极坐标表示的牛顿拉夫逊法潮流计算程序设计
目录1任务书 (2)2.模型简介及等值电路 (3)3.设计原理 (4)4.修正方程的建立 (6)5.程序流程图及MATLAB程序编写 (8)6.结果分析 (14)7.设计总结 (17)8.参考文献 (17)《电力系统分析》课程设计任务书题目极坐标表示的牛顿拉夫逊法潮流计算程序设计学生姓名学号专业班级电气工程及其自动化设计内容与要求1. 设计要求掌握MATLAB语言编程方法;理解和掌握运用计算机进行潮流计算的基本算法原理;针对某一具体电网,进行潮流计算程序设计。
其目的在于加深学生对电力系统稳态分析中课程中基本概念和计算方法的理解,培养学生运用所学知识分析和解决问题的能力。
2. 内容1)学习并掌握MATLAB语言。
2)掌握变压器非标准变比概念及非标准变比变压器的等值电路。
掌握节点导纳矩阵的概念及导纳矩阵的形成和修改方法。
3)掌握电力系统功率方程、变量和节点分类。
4)掌握利用极坐标表示的牛-拉法进行潮流计算的方法和步骤。
5)选择一个某一具体电网,编制程序流程框图。
6)利用MATLAB语言编写该模型的潮流计算程序,并上机调试程序,对计算结果进行分析。
7)整理课程设计论文。
起止时间2013 年7 月 4 日至2013 年7月10日指导教师签名年月日系(教研室)主任签名年月日学生签名年月日2 模型简介及等值电路 2.1 课程设计模型:模型3电力网络接线如下图所示,各支路阻抗标幺值参数如下:Z12=0.02+j0.06,Z13=0.08+j0.24, Z23=0.06+j0.18, Z24=0.06+j0.12, Z25=0.04+j0.12, Z34=0.01+j0.03, Z45=0.08+j0.24, k=1.1。
该系统中,节点1为平衡节点,保持11.060V j =+&为定值;节点2、3、4都是PQ 节点,节点5为PV 节点,给定的注入功率分别为:20.200.20S j =+,3-0.45-0.15S j =,40.400.05S j =--,50.500.00S j =-+,5 1.10V =&。
基于极坐标的牛顿拉夫逊潮流计算
前言电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行件及系统接线情况确定整个电力系统各部分的运行状态。
在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量分析、比较供电方案或运行方式的合理性、可靠性和经济性。
本次课程设计任务是闭式网络的潮流计算,用到的方法为牛顿拉夫逊极坐标法潮流计算。
牛顿法是数学中解决非线性方程式的典型方法,有较好的收敛性。
解决电力系统潮流计算问题是以导纳距阵为基础的,因此,只要在迭代过程中尽可能保持方程式系数距阵的稀疏性,就可以大大提高牛顿法潮流程序的放率。
自从20 世纪60 年代中期利用了最佳顺序消去法以后,牛顿法在收敛性、内存要求、速度方面都超过了阻抗法,成为直到目前仍在广泛采用的优秀方法。
目录1任务书 (2)2.模型简介及等值电路 (3)3.设计原理 (4)4.修正方程的建立 (7)5.程序流程图及MATLAB程序编写 (9)6.结果分析 (15)7.设计总结 (25)8.参考文献 (26)《电力系统分析》课程设计任务书2 模型简介及等值电路2.1 课程设计模型:模型3电力网络接线如下图所示,各支路阻抗标幺值参数如下:Z12=0.02+j0.06,Z13=0.08+j0.24, Z23=0.06+j0.18, Z24=0.06+j0.12, Z25=0.04+j0.12,Z34=0.01+j0.03, Z45=0.08+j0.24, k=1.1。
该系统中,节点1为平衡节点,保持为定值;节点2、3、4都是PQ节点,节点5为PV节点,给定的注入功率分别为:,,,,。
各节点电压(初值)标幺值参数如下:节点 1 2 3 4 5Ui(0)=ei(0)+jfi(0) 1.06+j0.0 1.0+j0.0 1.0+j0.0 1.0+j0.0 1.1+j0.0 计算该系统的潮流分布。
计算精度要求各节点电压修正量不大于10-5。
图2-12.2模型分析节点类型介绍按变量的不同,一般将节点分为三种类型。
牛顿、拉夫逊法在潮流计算中的应用
牛顿-拉夫逊法在潮流计算中的应用简介牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。
方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。
由于便于编写程序用计算机求解,应用较广。
下面以一元非线性代数方程的求解为例,来说明牛顿-拉夫逊法的基本思想。
设欲求解的非线性代数方程为f(x)=o设方程的真实解为x*,则必有f(x*)=0。
用牛顿-拉夫逊法求方程真实解x*的步骤如下:首先选取余割合适的初始估值x°作为方程f(x)=0的解,若恰巧有f(x°)=0,则方程的真实解即为x*= x°若f(x°)≠0,则做下一步。
取x¹=x°+Δx°为第一次的修正估值,则f(x¹)=f(x°+Δx°)其中Δx°为初始估值的增量,即Δx°=x¹-x°。
设函数f(x)具有任意阶导数,即可将上式在x°的邻域展开为泰勒级数,即:f(x¹)=f(x°+Δx°)=f(x°)+f'(x°)Δx°+[f''(x°)(Δx°)2]/2+…若所取的|Δx°|足够小,则含(Δx°)²的项及其余的一切高阶项均可略去,并使其等于零,即:f(x¹)≈f(x°)+f'(x°)Δx°=0Δx°=-f(x°)/f'(x°)x¹= x°-f(x°)/f'(x°)可见,只要f'(x°)≠0,即可根据上式求出第一次的修正估值x¹,若恰巧有f(x¹)=0,则方程的真实解即为x*=x¹。
牛顿-拉夫逊算法(极坐标)潮流计算算例
极坐标系下的潮流计算
潮流计算
在电力系统中,潮流计算是一种常用的计算方法,用于确定在给定网络结构和参数下,各节点的电压 、电流和功率分布。在极坐标系下进行潮流计算,可以更好地描述和分析电力系统的电磁场分布和变 化。
极坐标系下的潮流计算特点
在极坐标系下进行潮流计算,可以更直观地描述电力线路的走向和角度变化,更好地反映电力系统的 复杂性和实际情况。此外,极坐标系下的潮流计算还可以方便地处理电力系统的非对称性和不对称故 障等问题。
03
CATALOGUE
极坐标系下的牛顿-拉夫逊算法
极坐标系简介
极坐标系
一种二维坐标系统,由一个原点(称为极点)和一条从极点出发的射线(称为 极轴)组成。在极坐标系中,点P的位置由一个角度θ和一个距离r确定。
极坐标系的应用
极坐标系广泛应用于物理学、工程学、经济学等领域,特别是在电力系统和通 信网络中,用于描述电场、磁场、电流和电压等物理量的分布和变化。
极坐标形式
将电力系统的节点和支路参数以极坐 标形式表示,将实数问题转化为复数 问题,简化计算过程并提高计算效率 。
02
CATALOGUE
牛顿-拉夫逊算法原理
算法概述
牛顿-拉夫逊算法是一种迭代算法,用于求解非线性方程组。在电力系统中,它 被广泛应用于潮流计算,以求解电力网络中的电压、电流和功率等参数。
准确的结果。
通过极坐标系的处理,算法 能够更好地处理电力系统的 复杂结构和不对称性,提高 了计算的准确性和适应性。
算例分析表明,该算法在处理 大规模电力系统时仍具有较好 的性能,能够满足实际应用的
需求。
展望
进一步研究牛顿-拉夫逊算法在极坐标 系下的收敛性分析,探讨收敛速度与电 力系统规模、结构和参数之间的关系, 为算法的优后的电压、电流和功 率等参数。
牛顿拉夫逊法计算潮流计算
例题
PG1 P1 PL1 0.5 1 0.5
QG1 Q1 QL1 0.02363 0.5 0.52363
3
3
QG2 Q2 f2 (G2 je j B2 j f j ) e2 (G2 j f j B2 je j ) 0.05708
2 3
0
e3 0
f3 0
例题
0 20 0 10
J (0) 2 0 0 10
0
0
0 20
0
0
2
0
第五步:求修正量
UP222(0(0) ) UP322(30(0) )
J
(0)
fe22((00)) fe33((00))
2)计算各节点运算功率:
S (0) i
S Li
U
(
0)
2 i
yi
0
配电网前推回推潮流计算的步骤
3)从网络末端开始,逐步前推,由节点电
U (0) i
压 ,求全网各支路功率分布。
前推过程为:
P (1) ij
Pj(0)
P (1) jk
Pij(1)
kC j
Q(1) ij
Q(0) j
j 1
j 1
1 (10 0.66693410 0.0166934) 0.5
3
3
Q1 f1 (G1 je j B1 j f j ) e1 (G1 j f j B1 je j )
j 1
j 1
1 (20 10 0.99777610 0.999861) 0.02363
第三节牛顿 拉夫逊法潮流计算
∂P H11 = 1 = U1 U 2 ( −G12 sin δ12 + B12 cos δ12 ) ∂δ1 +U 3 ( −G13 sin δ13 + B13 cos δ13 ) + ... = −U1 ∑ U j (Gij sin δ ij − Bij cos δ ij )
j =2
PV节点:δi • 节点功率和支路功率(第二求解对象)
4-3 牛顿—拉夫逊法潮流计算
共2(m-1)+(n-m)=n+m-2个变量, 则需n+m-2个独立方程
节点注入功率—电压实数方程组(极坐标形式)
对节点i:
~ & S i = Pi + jQ i = U i
∑
* * Yij U j j =1
~ Si = U i
n
∑ (G
j =1 ij
− jBij U j e
)
jδ ij
e
jδ ij
= cos δ ij + j sin δ ij
∑ (G
j =1
− jBij U j cos δ ij + j sin δ ij
) (
)
4-3 牛顿—拉夫逊法潮流计算
节点注入功率—电压实数方程组(极坐标形式)
j =1
n
n
(
)
)
Qi = U i ∑ U j Gij sin δ ij − Bij cos δ ij
j =1
(
(U,δ)不是真解
∆Pi (U, δ) = Pi − U i ∑U j Gij cosδ ij + Bij sin δ ij
j =1 n
j =1
牛顿拉夫逊迭代法极坐标潮流计算java程序
牛顿拉夫逊迭代法极坐标潮流计算java程序牛顿拉夫逊迭代法极坐标潮流计算Java程序近年来,随着能源领域的快速发展,潮流计算在电力系统分析中变得尤为重要。
在电力系统中,潮流计算是一种用于计算电网各个节点上的电压相角和功率的方法,可用于解决电网稳定性、潮流控制和经济调度等问题。
而牛顿拉夫逊迭代法在潮流计算中有着广泛的应用,尤其在极坐标下进行潮流计算时发挥着重要作用。
在本篇文章中,我将深入探讨牛顿拉夫逊迭代法在极坐标潮流计算Java程序中的应用,并共享我对其个人观点和理解。
让我们从潮流计算的基本原理开始。
电力系统中的潮流计算,是指通过对电气网络进行各节点电压相角和功率的计算,来实现电网稳定运行和安全运行。
而牛顿拉夫逊迭代法,则是一种用于解决非线性方程组的方法,其迭代过程可以有效收敛到非线性方程组的解。
在极坐标下进行潮流计算时,我们需要考虑复数形式的电压和导纳,这就需要用到牛顿拉夫逊迭代法来求解非线性方程组,以得到节点电压的相角和幅值。
接下来,让我们讨论牛顿拉夫逊迭代法在极坐标潮流计算Java程序中的具体实现。
在Java程序中,我们可以通过编写相应的算法来实现牛顿拉夫逊迭代法。
我们需要定义节点的导纳矩阵和电压矩阵,并根据潮流方程建立非线性方程组。
通过编写迭代算法,不断更新节点的电压相角和幅值,直至满足收敛条件。
我们可以将计算得到的节点电压结果输出到文件或进行可视化展示,以便后续的电网分析和调度。
在实际应用中,牛顿拉夫逊迭代法在极坐标潮流计算中具有较高的准确性和收敛性,尤其适用于复杂电网的计算。
通过Java程序实现,我们可以更加灵活地对潮流计算进行控制和优化,从而提高电网的运行效率和安全性。
总结回顾,牛顿拉夫逊迭代法在极坐标潮流计算Java程序中发挥着重要作用,其准确性和收敛性使其成为潮流计算领域的关键算法。
通过编写Java程序实现,我们可以更加灵活地进行潮流计算和电网分析,为电力系统的稳定运行和经济调度提供有力支持。
牛顿拉夫逊迭代法极坐标潮流计算java程序
牛顿拉夫逊迭代法极坐标潮流计算java程序一、前言在电力系统中,潮流计算是一项重要的运行分析工作,它用于确定电力系统中各个节点的电压和相角。
而在潮流计算中,牛顿拉夫逊迭代法是一种常用的计算方法,特别是在极坐标下的潮流计算中。
本文将从牛顿拉夫逊迭代法的原理入手,分析其在极坐标潮流计算中的应用,并展示一个基于Java程序的实例。
二、牛顿拉夫逊迭代法的原理牛顿拉夫逊迭代法是一种用于求解非线性方程组的数值方法,其基本思想是通过不断迭代,逐步逼近非线性方程组的解。
在潮流计算中,牛顿拉夫逊迭代法的主要目标是求解节点电压和相角。
其迭代公式可以表示为:\[ J(\Delta X) = F(X_k) + \frac{dF(X_k)}{dX}\Delta X = 0 \]其中,J是雅可比矩阵,ΔX表示解的修正量,F(Xk)表示当前迭代点的方程组的值,dF(Xk)/dX表示F(Xk)的导数。
在使用牛顿拉夫逊迭代法进行潮流计算时,需要构建节点导纳矩阵、节点功率不平衡方程和雅可比矩阵,并通过迭代计算得到节点电压和相角的解。
这个过程是十分复杂和耗时的,因此需要使用计算机程序来实现。
三、极坐标潮流计算的Java程序实现在极坐标下的潮流计算,通常需要对节点电压和相角进行极坐标转换,并针对牛顿拉夫逊迭代法进行适当的调整。
下面我们将展示一个简单的Java程序,用于实现极坐标潮流计算的牛顿拉夫逊迭代法。
```java// Java程序实现牛顿拉夫逊迭代法的极坐标潮流计算public class PolarNewtonRaphson {// 节点导纳矩阵private Complex[][] admittanceMatrix;// 节点功率不平衡方程private Complex[] powerMismatchEquation;// 节点电压private Complex[] voltage;// 迭代阈值private double threshold;// 构造函数public PolarNewtonRaphson(Complex[][] admittanceMatrix, Complex[] powerMismatchEquation, Complex[] voltage, double threshold) {this.admittanceMatrix = admittanceMatrix;this.powerMismatchEquation = powerMismatchEquation; this.voltage = voltage;this.threshold = threshold;}// 牛顿拉夫逊迭代法public void calculate() {while (true) {// 计算雅可比矩阵Complex[][] jacobianMatrix = calculateJacobianMatrix(); // 计算方程组的值Complex[] fX = calculateFX();// 解线性方程组Complex[] deltaV = solveLinearEquations(jacobianMatrix, fX);// 更新节点电压for (int i = 0; i < voltage.length; i++) {voltage[i] = voltage[i].add(deltaV[i]);}// 判断是否满足收敛条件if (isConverged(deltaV)) {break;}}}// 计算雅可比矩阵private Complex[][] calculateJacobianMatrix() {// 省略具体实现}// 计算方程组的值private Complex[] calculateFX() {// 省略具体实现}// 解线性方程组private Complex[] solveLinearEquations(Complex[][] jacobianMatrix, Complex[] fX) {// 省略具体实现}// 判断是否满足收敛条件private boolean isConverged(Complex[] deltaV) { // 省略具体实现}}// 主程序public class M本人n {public static void m本人n(String[] args) {// 构建节点导纳矩阵、节点功率不平衡方程和节点电压// 省略具体实现// 创建极坐标潮流计算对象PolarNewtonRaphson polarNewtonRaphson = new PolarNewtonRaphson(admittanceMatrix, powerMismatchEquation, voltage, 0.0001);// 计算节点电压和相角polarNewtonRaphson.calculate();}}```在这个简单的Java程序中,我们使用了复数类Complex来表示节点电压、导纳矩阵和功率不平衡方程,通过迭代的方式计算得到节点电压和相角的解。
极坐标的牛顿拉夫逊法潮流计算
%主程序"PowerFlow_NR.m"function [bus_res,S_res] = PowerFlow_NR_2 % 牛顿-拉夫逊法解潮流方程的主程序[bus,line] = OpDF_; % 打开数据文件的子程序,返回bus(节点数据)和line(线路数据)回主程序[nb,mb]=size(bus);[nl,ml]=size(line); % 计算bus和line矩阵的行数和列数[bus,line,nPQ,nPV,nodenum] = Num_(bus,line); % 对节点重新排序的子程序Y = y_(bus,line); % 计算节点导纳矩阵的子程序myf = fopen('Result.m','w');fprintf(myf,'\n\n');fclose(myf); % 在当前目录下生成“Result.m”文件,写入节点导纳矩阵format longEPS = 1.0e-10; % 设定误差精度for t = 1:100 % 开始迭代计算,设定最大迭代次数为100,以便不收敛情况下及时跳出[dP,dQ] = dPQ_(Y,bus,nPQ,nPV); % 计算功率偏差dP和dQ的子程序J = Jac_(bus,Y,nPQ); % 计算雅克比矩阵的子程序UD = zeros(nPQ,nPQ);for i = 1:nPQUD(i,i) = bus(i,2); % 生成电压对角矩阵enddAngU = J \ [dP;dQ];dAng = dAngU(1:nb-1,1); % 计算相角修正量dU = UD*(dAngU(nb:nb+nPQ-1,1)); % 计算电压修正量bus(1:nPQ,2) = bus(1:nPQ,2) - dU; % 修正电压bus(1:nb-1,3) = bus(1:nb-1,3) - dAng; % 修正相角if (max(abs(dU))<EPS)&(max(abs(dAng))<EPS)breakend % 判断是否满足精度误差,如满足则跳出,否则返回继续迭代endbus = PQ_(bus,Y,nPQ,nPV); % 计算每个节点的有功和无功注入的子程序[bus,line] = ReNum_(bus,line,nodenum); % 对节点恢复编号的子程序YtYm = YtYm_(line); % 计算线路的等效Yt和Ym的子程序,以计算线路潮流bus_res = bus_res_(bus); % 计算节点数据结果的子程序S_res = S_res_(bus,line,YtYm); % 计算线路潮流的子程序myf = fopen('Result.m','a');fprintf(myf,'---------------牛顿-拉夫逊法潮流计算结果----------\n\n 节点计算结果:\n节点节点电压节点相角(角度)节点注入功率\n');for i = 1:nbfprintf(myf,'%2.0f ',bus_res(i,1));fprintf(myf,'.6f ',bus_res(i,2));fprintf(myf,'.6f ',bus_res(i,3));fprintf(myf,'.6f + j .6f\n',real(bus_res(i,4)),imag(bus_res(i,4)));endfprintf(myf,'\n线路计算结果:\n节点I 节点J 线路功率S(I,J)线路功率S(J,I) 线路损耗dS(I,J)\n');for i = 1:nlfprintf(myf,'%2.0f ',S_res(i,1));fprintf(myf,'%2.0f ',S_res(i,2));fprintf(myf,'.6f + j .6f ',real(S_res(i,3)),imag(S_res(i,3)));fprintf(myf,'.6f + j .6f ',real(S_res(i,4)),imag(S_res(i,4)));fprintf(myf,'.6f + j .6f\n',real(S_res(i,5)),imag(S_res(i,5)));endfclose(myf); % 迭代结束后继续在“Result.m”写入节点计算结果和线路计算结果程序结束bus = [1 1.00 0.00 -0.30 -0.18 1;2 1.00 0.00 -0.55 -0.13 1;3 1.10 0.00 0.50 0.00 2;4 1.05 0.00 0.00 0.00 3]line = [1 2 0.10 0.40 0.0 0.01528 0;4 2 0.08 0.40 0.0 0.01413 0;1 4 0.12 0.50 0.0 0.0192 0;3 1 0.00 0.3 0.0 0.0 -1.1]----------------------------------------牛顿-拉夫逊法潮流计算结果-------------------------------------------- 节点计算结果:节点节点电压节点相角(角度)节点注入功率1 0.984674906330845 -0.500170385513657 -0.300000000000000 - 0.180000000000000i2 0.964797665550885 -6.450305258622626 -0.550000000000000 - 0.130000000000000i3 1.100000000000000 6.732349388989963 0.500000000000000 + 0.093411003244513i4 1.050000000000000 0 0.367882692523292 + 0.264698252215732i 线路计算结果:节点I 节点J 线路功率S(I,J) 线路功率S(J,I) 线路损耗dS(I,J)1 2 0.246244-j0.014651 -0.239990+j0.010627 0.006254- j0.0040241 3 -0.500001-j0.029264 0.500000+j0.093409 -0.000001+j0.0641451 4 -0.046244-j0.136088 0.048216+j0.104522 0.001972-j0.0315662 4 -0.310010-j0.140627 0.319666+j0.160176 0.009656+j0.019549%子程序1 "OpDF_.m" 作用为打开数据文件function [bus,line] = OpDF_[dfile,pathname]=uigetfile('*.m','Select Data File'); % 数据文件类型为m文件,窗口标题为“Select Data File”if pathname == 0error(' you must select a valid data file') % 如果没有选择有效文件,则出现错误提示elselfile =length(dfile); % 读取文件字符串长度eval(dfile(1:lfile-2)); % 去除后缀,打开文件!注意!新浪博客中"eval"函数会自动加上"_r"后缀,此处的函数名是"eval"而不是"eval_r",拷贝后请去除"_r"后缀end%子程序2 "Num.m" 作用为对节点重排序,并修改相应的线路数据function [bus,line,nPQ,nPV,nodenum] = Num_(bus,line)[nb,mb]=size(bus);[nl,ml]=size(line);nSW = 0; % nSW为平衡节点个数nPV = 0; % nPV为PV节点个数nPQ = 0; % nPQ为PQ节点个数for i = 1:nb, % nb为总节点数type= bus(i,6);if type == 3,nSW = nSW + 1;SW(nSW,:)=bus(i,:); % 计算并储存平衡节点elseif type == 2,nPV = nPV +1;PV(nPV,:)=bus(i,:); % 计算并储存PV节点elsenPQ = nPQ + 1;PQ(nPQ,:)=bus(i,:); % 计算并储存PQ节点endendbus=[PQ;PV;SW]; % 对bus矩阵按PQ、PV、平衡节点的顺序重新排序nodenum=[[1:nb]' bus(:,1)];% 生成新旧节点对照表for i=1:nlfor j=1:2for k=1:nbif line(i,j)==nodenum(k,2)line(i,j)=nodenum(k,1);breakendendendend % 按排序以后的节点顺序对line矩阵重新编号%子程序3 "y_.m" 作用为计算节点导纳矩阵function Y = y_(bus,line)[nb,mb]=size(bus);[nl,ml]=size(line);Y=zeros(nb,nb); % 对导纳矩阵赋初值0for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+j*line(k,4); % 读入线路参数if Zt~=0Yt=1/Zt; % 接地支路不计算YtendYm=line(k,5)+j*line(k,6);K=line(k,7);if (K==0)&(J~=0) % 普通线路: K=0Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt+Ym;Y(I,J)=Y(I,J)-Yt;Y(J,I)=Y(I,J);endif (K==0)&(J==0) % 对地支路: K=0,J=0,R=X=0Y(I,I)=Y(I,I)+Ym;endif K>0 % 变压器线路: Zt和Ym为折算到i侧的值,K在j侧Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+Yt/K/K;Y(I,J)=Y(I,J)-Yt/K;Y(J,I)=Y(I,J);endif K<0 % 变压器线路: Zt和Ym为折算到K侧的值,K在i侧Y(I,I)=Y(I,I)+Yt+Ym;Y(J,J)=Y(J,J)+K*K*Yt;Y(I,J)=Y(I,J)+K*Yt;Y(J,I)=Y(I,J);endend%子程序4 "dPQ_.m" 作用为计算功率偏差function [dP,dQ] =dPQ_(Y,bus,nPQ,nPV) % nPQ、nPV为相应节点个数n = nPQ + nPV +1; % 总节点个数dP = bus(1:n-1,4);dQ = bus(1:nPQ,5); % 对dP和dQ赋初值PV节点不需计算dQ 平衡节点不参与计算for i = 1:n-1for j = 1:ndP(i,1) =dP(i,1)-bus(i,2)*bus(j,2)*(real(Y(i,j))*cos(bus(i,3)-bus(j,3))+imag(Y(i,j))*sin(bus(i,3)-bus(j,3)));if i<nPQ+1dQ(i,1) = dQ(i,1)-bus(i,2)*bus(j,2)*(real(Y(i,j))*sin(bus(i,3)-bus(j,3))-imag(Y(i,j))*cos(bus(i,3)-bus(j,3)));endendend % 利用循环计算求取dP和dQ%子程序5 "Jac_.m" 作用为计算雅克比矩阵function J = Jac_(bus,Y,nPQ)[nb,mb]=size(bus);H = zeros(nb-1,nb-1);N = zeros(nb-1,nPQ);K = zeros(nPQ,nb-1);L = zeros(nPQ,nPQ); % 将雅克比矩阵分块,即:J = [H N; K L],并初始化Qi = zeros(nb-1,1);Pi = zeros(nb-1,1);for i = 1:nb-1for j = 1:nbPi(i,1)=Pi(i,1)+bus(i,2)*bus(j,2)*(real(Y(i,j))*cos(bus(i,3)-bus(j,3))+imag(Y(i,j))*sin(bus(i,3)-bus(j,3) ));Qi(i,1)=Qi(i,1)+bus(i,2)*bus(j,2)*(real(Y(i,j))*sin(bus(i,3)-bus(j,3))-imag(Y(i,j))*cos(bus(i,3)-bus(j,3) ));endend % 初始化并计算Qi和Pifor i = 1:nb-1for j = 1:nb-1if i~=jH(i,j)=-bus(i,2)*bus(j,2)*(real(Y(i,j))*sin(bus(i,3)-bus(j,3))-imag(Y(i,j))*cos(bus(i,3)-bus(j,3)));elseH(i,j)=Qi(i,1)+imag(Y(i,j))*((bus(i,2))^2);end % 分别计算H矩阵的对角及非对角元素if j < nPQ+1if i~=jN(i,j)=-bus(i,2)*bus(j,2)*(real(Y(i,j))*cos(bus(i,3)-bus(j,3))+imag(Y(i,j))*sin(bus(i,3)-bus(j,3)));elseN(i,j)=-Pi(i,1)-real(Y(i,j))*((bus(i,2))^2);endend % 分别计算N矩阵的对角及非对角元素if i < nPQ+1if i~=jK(i,j)=bus(i,2)*bus(j,2)*(real(Y(i,j))*cos(bus(i,3)-bus(j,3))+imag(Y(i,j))*sin(bus(i,3)-bus(j,3)));elseK(i,j)=-Pi(i,1)+real(Y(i,j))*((bus(i,2))^2);end % 分别计算K矩阵的对角及非对角元素if j < nPQ+1if i~=jL(i,j)=-bus(i,2)*bus(j,2)*(real(Y(i,j))*sin(bus(i,3)-bus(j,3))-imag(Y(i,j))*cos(bus(i,3)-bus(j,3)));elseL(i,j)=-Qi(i,1)+imag(Y(i,j))*((bus(i,2))^2);endend % 分别计算L矩阵的对角及非对角元素endendendJ = [H N; K L]; % 生成雅克比矩阵%子程序6 "PQ_.m" 作用为计算每个节点的功率注入function bus = PQ_(bus,Y,nPQ,nPV)n = nPQ+nPV+1; % n为总节点数for i = nPQ+1:n-1for j = 1:nbus(i,5)=bus(i,5)+bus(i,2)*bus(j,2)*(real(Y(i,j))*sin(bus(i,3)-bus(j,3))-imag(Y(i,j))*cos(bus(i,3)-bus(j, 3)));endend % 利用公式计算PV节点的无功注入for j =1:nbus(n,4)=bus(n,4)+bus(n,2)*bus(j,2)*(real(Y(n,j))*cos(bus(n,3)-bus(j,3))+imag(Y(n,j))*sin(bus(n,3)-b us(j,3)));bus(n,5)=bus(n,5)+bus(n,2)*bus(j,2)*(real(Y(n,j))*sin(bus(n,3)-bus(j,3))-imag(Y(n,j))*cos(bus(n,3)-b us(j,3)));end % 计算平衡节点的无功及有功注入%子程序7 "ReNum_.m" 作用为对节点和线路数据恢复编号function [bus,line] = ReNum_(bus,line,nodenum)[nb,mb]=size(bus);[nl,ml]=size(line);bus_temp = zeros(nb,mb); % bus_temp矩阵用于临时存放bus矩阵的数据k = 1;for i = 1 :nbfor j = 1 : nbif bus(j,1) == kbus_temp(k,:) = bus(j,:);k = k + 1;endendend % 利用bus矩阵的首列编号重新对bus矩阵排序并存入bus_temp矩阵中bus = bus_temp; % 重新赋值回bus,完成bus矩阵的重新编号for i=1:nlfor j=1:2for k=1:nbif line(i,j)==nodenum(k,1)line(i,j)=nodenum(k,2);breakendendendend % 恢复line的编号%子程序8 "YtYm_.m" 作用为计算线路的等效Yt和Ym,以计算线路潮流function YtYm = YtYm_(line)[nl,ml]=size(line);YtYm = zeros(nl,5); % 对YtYm矩阵赋初值0YtYm(:,1:2) = line(:,1:2); % 矩阵前两列为线路两段节点编号,后三列分别为线路等效Yt,i侧的等效Ym,j侧的等效Ymj = sqrt(-1);for k=1:nlI=line(k,1);J=line(k,2);Zt=line(k,3)+j*line(k,4);if Zt~=0Yt=1/Zt;endYm=line(k,5)+j*line(k,6);K=line(k,7);if (K==0)&(J~=0) % 普通线路: K=0YtYm(k,3) = Yt;YtYm(k,4) = Ym;YtYm(k,5) = Ym;endif (K==0)&(J==0) % 对地支路: K=0,J=0,R=X=0YtYm(k,4) = Ym;endif K>0 % 变压器线路: Zt和Ym为折算到i侧的值,K在j侧YtYm(k,3) = Yt/K;YtYm(k,4) = Ym+Yt*(K-1)/K;YtYm(k,5) = Yt*(1-K)/K/K;endif K<0 % 变压器线路: Zt和Ym为折算到K侧的值,K在i侧YtYm(k,3) = -Yt*K;YtYm(k,4) = Ym+Yt*(1+K);YtYm(k,5) = Yt*(K^2+K);endend%子程序9 "bus_res_.m" 计算并返回节点数据结果function bus_res = bus_res_(bus);[nb,mb]=size(bus);bus_res = zeros(nb,4); % bus_res矩阵储存着节点计算结果bus_res(:,1:2) = bus(:,1:2);bus_res(:,3) = bus(:,3) *180 / pi; % 相角采用角度制bus_res(:,4) = bus(:,4) + (sqrt(-1))*bus(:,5); % 注入功率%子程序10 "S_res_.m" 计算并返回线路潮流function S_res = S_res_(bus,line,YtYm)[nl,ml]=size(line);S_res = zeros(nl,5); % S_res矩阵储存着线路潮流计算结果S_res(:,1:2) = line(:,1:2); % 前两列为节点编号for k=1:nlI = S_res(k,1);J = S_res(k,2);if (J~=0)&(I~=0)S_res(k,3)=bus(I,2)^2*(conj(YtYm(k,3))+conj(YtYm(k,4)))-bus(I,2)*bus(J,2)*(cos(bus(I,3))+j*sin(bu s(I,3)))*(conj(cos(bus(J,3))+j*sin(bus(J,3))))*conj(YtYm(k,3));S_res(k,4)=bus(J,2)^2*(conj(YtYm(k,3))+conj(YtYm(k,5)))-bus(I,2)*bus(J,2)*(conj(cos(bus(I,3))+j*s in(bus(I,3))))*(cos(bus(J,3))+j*sin(bus(J,3)))*conj(YtYm(k,3));S_res(k,5)=S_res(k,3) + S_res(k,4); % 利用公式计算非接地支路的潮流elseif J==0S_res(k,3)=bus(I,2)^2*conj(YtYm(k,4));S_res(k,5)=S_res(k,3)+S_res(k,4);elseS_res(k,4)=bus(J,2)^2*conj(YtYm(k,5));S_res(k,5)=S_res(k,3)+S_res(k,4); % 利用公式计算接地支路的潮流endend。
基于极坐标的牛顿拉夫逊潮流计算
基于极坐标的牛顿拉夫逊潮流计算引言:牛顿-拉夫逊潮流计算是电力系统潮流计算的一种常用方法,用于评估电力系统的电压、功率等参数。
在传统的牛顿-拉夫逊潮流计算中,节点的注入功率和节点电压之间用直角坐标系表示,但在一些情况下,使用直角坐标系并不方便。
因此,基于极坐标的牛顿-拉夫逊潮流计算应运而生。
本文将介绍基于极坐标的牛顿-拉夫逊潮流计算的原理和步骤。
一、基本原理基于极坐标的牛顿-拉夫逊潮流计算使用极坐标系来表示节点的注入功率和节点电压。
在极坐标中,节点的注入功率复数可以表示为S=P+jQ,其中P为有功功率,Q为无功功率。
节点的电压复数可以表示为V=V∠θ,其中V为电压幅值,θ为电压相角。
使用复数的运算规则可以推导出通过变压器、感性和容性元件的电流和功率的计算公式。
二、步骤1.初始化:a.设置节点电压估计值V0和电压相角估计值θ0。
b.将节点注入功率S注入1设置为节点P和Q的初始估计值。
2.计算注入电流:a. 计算节点注入电流I^inj = S^inj / V0^*,其中^*表示复共轭。
b. 计算节点电流注入I^ = I^inj + Σ I^flow,其中Σ表示对所有与节点连接的边的求和,I^flow为边的注入电流,需要通过变压器、感性和容性元件的运算公式计算。
3.更新节点电压:a.计算新的节点电压的幅值和相角:V = ,I^flow, * Zflow,这里Zflow为边的阻抗。
θ = Arg(I^flow) + φflow,φflow为边的阻抗相角。
b.计算新的节点电压估计值V0和电压相角估计值θ0。
V0 = ,I^inj, * Z1 + V * Z2,其中Z1和Z2为接地导线的阻抗。
θ0 = Arg(I^inj) + Arg(V)。
4.更新节点注入功率:a. 计算节点注入功率复数S^inj = P + jQ。
b. 将节点注入功率复数S^inj转化为直角坐标系中的实部和虚部,得到新的节点有功功率和无功功率。
牛顿拉夫逊法潮流计算
摘要本文,首先简单介绍了基于在MALAB中行潮流计算的原理、意义,然后用具体的实例,简单介绍了如何利用MALAB去进行电力系统中的潮流计算。
众所周知,电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行条件及系统接线情况确定整个电力系统各部分的运行状态:各线的电压、各元件中流过的功率、系统的功率损耗等等。
在电力系统规划的设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量地分析比较供电方案或运行方式的合理性、可靠性和经济性。
此外,在进行电力系统静态及暂态稳定计算时,要利用潮流计算的结果作为其计算的基础;一些故障分析以及优化计算也需要有相应的潮流计算作配合;潮流计算往往成为上述计算程序的一个重要组成部分。
以上这些,主要是在系统规划设计及运行方式安排中的应用,属于离线计算范畴。
牛顿-拉夫逊法在电力系统潮流计算的常用算法之一,它收敛性好,迭代次数少。
本文介绍了电力系统潮流计算机辅助分析的基本知识及潮流计算牛顿-拉夫逊法,最后介绍了利用MTALAB程序运行的结果。
关键词:电力系统潮流计算,牛顿-拉夫逊法,MATLABABSTRACTThis article first introduces the flow calculation based on the principle of MALAB Bank of China, meaning, and then use specific examples,a brief introduction, how to use MALAB to the flow calculation in power systems.As we all know, is the study of power flow calculation of power system steady-state operation of a calculation, which according to the given operating conditions and system wiring the entire power system to determine the operational status of each part: the bus voltage flowing through the components power, system power loss and so on. In power system planning power system design and operation mode of the current study, are required to quantitatively calculated using the trend analysis and comparison of the program or run mode power supply reasonable, reliability and economy. In addition, during the power system static and transient stability calculation, the results of calculation to take advantage of the trend as its basis of calculation; number of fault analysis and optimization also requires a corresponding flow calculation for cooperation; power flow calculation program often become the an important part. These, mainly in the way of system design and operation arrangements in the application areas are off-line calculation.Newton - Raphson power flow calculation in power system is one commonly used method, it is good convergence of the iteration number of small, introduce the trend of computer-aided power system analysis of the basic knowledge and power flow Newton - Raphson method, introduced by the last matlab run results.Keywords:power system flow calculation, Newton – Raphson method, matlab目录1 绪论 (1)1.1 课题背景 (1)1.2 电力系统潮流计算的意义 (2)1.3 电力系统潮流计算的发展 (2)1.4 潮流计算的发展趋势 (4)2 潮流计算的数学模型 (5)2.1 电力线路的数学模型及其应用 (5)2.2 等值双绕组变压器模型及其应用 (6)2.3 电力网络的数学模型 (8)2.4 节点导纳矩阵 (9)2.4.1 节点导纳矩阵的形成 (9)2.4.2 节点导纳矩阵的修改 (10)2.5 潮流计算节点的类型 (11)2.6 节点功率方程 (12)7 潮流计算的约束条件 (13)2·3 牛顿-拉夫逊法潮流计算基本原理 (14)3.1 牛顿-拉夫逊法的基本原理 (14)3.2 牛顿-拉夫逊法潮流计算的修正方程 (17)3.3 潮流计算的基本特点 (20)3.4 节点功率方程 (21)4牛顿-拉夫逊法分解潮流程序 (22)41 牛顿-拉夫逊法分解潮流程序原理总框图 (22)·4.2 形成节点导纳矩阵程序框图及代码 (23)4.21 形成节点导纳矩阵程序框图 (23)。
课程设计报告复杂电力系统——用牛顿拉夫逊法来进行潮流计算
目录第一章牛顿拉夫逊算法的基本资料 (2) (2)1.2 牛顿拉夫逊算法法的发展与前景 (2)第二章电力网络的数学模型 (3)2.1节点导纳矩阵的形成及修改 (3)2.1.1节点导纳矩阵的形成 (3)2.1.2节点导纳矩阵的修改 (5)2.2节点导纳矩阵元素的物理意义 (7)第三章计算实例 (9) (11)阵 (11)3.3设定所求变量的初值 (12)3.4计算修正方程 (12)3.5形成雅可比矩阵 (13)3.6求解修正方程 (13)3.7进行修正和迭代 (13)3.8迭代精度的确认 (15)3.9各节点电压计算功率分布 (15)结论 (16)参考文献 (17)摘要本次的课程设计主要针对复杂电力系统——用牛顿-拉夫逊法来进行潮流计算.牛顿-拉夫逊法对初值要求严格,迭代速度快的特点,利用电力网的结构特点,提出直角坐标和极坐标牛顿 -拉夫逊法潮流计算的三元素解法及相应的简化算法 ,并对其进行计算分析比较占用内存少,计算量小,且不影响其收敛性及准确性计算结果表明,综合算法在迭代次数和收敛速度上有优势。
关键词:牛顿-拉夫逊法收敛迭代潮流计算第一章牛顿拉夫逊算法基础资料1、牛顿-拉夫逊法定义:牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。
方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。
2、牛顿-拉夫逊法现状与前景:利用电子计算机进行潮流计算从20世纪50年代中期就已经开始。
此后,潮流计算曾采用了各种不同的方法,这些方法的发展主要是围绕着对潮流计算的一些基本要求进行的。
基于极坐标的牛顿-拉夫逊法潮流计算设计
摘要:电力系统潮流计算是研究电力系统稳态运行情况的一种重要的分析计算,它根据给定的运行条件及系统接线情况确定整个电力系统各部分的运行状态。
在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量地分析比较供电方案或运行方式的合理性,可靠性和经济性。
MATLAB 使用方便,有着其他高级语言无法比拟的强大的矩阵处理功能。
这样使MATLAB成为电力系统潮流计算的首选计算机语言。
牛顿-拉夫逊法是电力系统潮流计算的常用算法之一,它收敛性好,迭代次数少。
介绍了电力系统潮流计算机辅分析的基本知识及潮流计算牛顿-拉夫逊法,最后介绍了利用MATLAB制作潮流计算软件的过程。
关键词:电力系统潮流计算;牛顿-拉夫逊法;MATLABAbstract:Power Flow Calculation of Power System is an important analysis and calculation of power system steady-state operation, which according to the given operating conditions and system wiring to determine the various parts of the power system running state. In the study of power system design and the current operation mode are required Power Flow Calculation to quantitatively analyzed and compared to the program or run mode power supply reasonable, reliability and economy or not. MATLAB is easy to use, the powerful matrix processing is the other high-level language can not be compared with. This allows MATLAB to become the preferred computer language of power flow calculation.Newton Raphson power flow calculation is one of the most commonly used algorithms, which has good convergence and fewer iterations .This article describes the power flow computer assisted analysis of the basic knowledge and power flow Newton - Raphson method, Finally it describe how to use matlab GUI to make the power flow calculation software.Keywords: power flow calculation; Newton - Raphson method; matlab GUI目录前言 (4)第一章电力系统潮流计算的基本知识 (5)1.1潮流计算的定义及应用 (5)1.2 潮流计算方法的发展与前景 (5)第二章电力网络的数学模型 (6)2.1节点导纳矩阵的形成及修改 (7)2.1.1节点导纳矩阵的形成 (7)2.1.2节点导纳矩阵的修改 (9)2.2节点导纳矩阵元素的物理意义 (11)第三章牛顿—拉夫逊法潮流分布计算 (13)3.1牛顿—拉夫逊法简介 (14)3.1.1牛顿—拉夫逊法简介 (14)3.1.2牛顿—拉夫逊法的几何意义 (17)3.2牛顿—拉夫逊法计算潮流分布 (18)第四章Matlab简介及程序运算 (23)4.1 Matlab概述 (23)结论 (34)参考文献 (35)前言如今,电能已成为我国国民经济紧密联系的,不能储存的能量,它的生产、输送、分配和使用同时完成,暂态过程非常迅速,以电磁波的形式传播。
牛顿拉夫逊迭代法极坐标潮流计算C语言程序
/*利用牛顿-拉夫逊迭代法(极坐标形式),计算复杂电力系统潮流,具有收敛性好,收敛速度快等优点。
所有参数应归算至标幺值下。
/*可计算最大节点数为100,可计算PQ,PV,平衡节点*//*可计算非标准变比和平行支路*/#include<stdio.h>#include<math.h>#include<stdlib.h>#define M 100 /*最大矩阵阶数*/#define Nl 100 /*迭代次数*/int i,j,k,a,b,c; /*循环控制变量*/int t,l;double P,Q,H,J; /*中间变量*/int n, /*节点数*/m, /*支路数*/pq, /*PQ节点数*/pv; /*PV节点数*/double eps; /*迭代精度*/double aa[M],bb[M],cc[M],dd[M],max, rr,tt; /*中间变量*/double mo,c1,d1,c2,d2; /*复数运算函数的返回值*/double G[M][M],B[M][M],Y[M][M]; /*节点导纳矩阵中的实部、虚部及其模方值*/double ykb[M][M],D[M],d[M],dU[M]; /*雅克比矩阵、不平衡量矩阵*/struct jd /*节点结构体*/{ int num,ty; /* num为节点号,ty为节点类型*/ double p,q,S,U,zkj,dp,dq,du,dj; /*节点有功、无功功率,功率模值,电压模值,阻抗角牛顿--拉夫逊中功率不平衡量、电压修正量*/} jd[M];struct zl /*支路结构体*/{ int numb; /*numb为支路号*/int p1,p2; /*支路的两个节点*/double kx; /*非标准变比*/double r,x; /*支路的电阻与电抗*/} zl[M];FILE *fp1,*fp2;void data() /* 读取数据*/{int h,number;fp1=fopen("input.txt","r");fscanf(fp1,"%d,%d,%d,%d,%lf\n",&n,&m,&pq,&pv,&eps); /*输入节点数,支路数,PQ节点数,PV节点数和迭代精度*/for(i=1;i<=n;i++) /*输入节点编号、类型、输入功率和电压初值*/{fscanf(fp1,"%d,%d",&number,&h);if(h==1) /*类型h=1是PQ节点*/ {fscanf(fp1,"%lf,%lf,%lf,%lf\n",&jd[i].p,&jd[i].q,&jd[i].U,&jd[i].zkj);jd[i].num=number;jd[i].ty=h;}if(h==2) /*类型h=2是pv节点*/{fscanf(fp1,",%lf,%lf,%lf\n",&jd[i].p,&jd[i].U,&jd[i].zkj);jd[i].num=number;jd[i].ty=h;jd[i].q=-1.567;}if(h==3) /*类型h=3是平衡节点*/ {fscanf(fp1,",%lf,%lf\n",&jd[i].U,&jd[i].zkj);jd[i].num=number;jd[i].ty=h;}}for(i=1;i<=m;i++) /*输入支路阻抗*/ fscanf(fp1,"%d,%lf,%d,%d,%lf,%lf\n",&zl[i].numb,&zl[i].kx,&zl[i].p1,&zl[i].p2,&zl[i].r,&zl[i].x);fclose(fp1);if((fp2=fopen("output.txt","w"))==NULL){printf(" can not open file!\n");exit(0);}fprintf(fp2," 电力系统潮流计算\n ");fprintf(fp2," ********** 原始数据*********\n");fprintf(fp2,"====================================================================== ==========\n");fprintf(fp2," 节点数:%d 支路数:%d PQ节点数:%d PV节点数:%d 精度:%f\n",n,m,pq,pv,eps);fprintf(fp2," ------------------------------------------------------------------------------\n");for(i=1;i<=pq;i++)fprintf(fp2," PQ节点: 节点%d P[%d]=%f Q[%d]=%f\n",jd[i].num,jd[i].num,jd[i].p,jd[i].num,jd[i].q);for(i=pq+1;i<=pq+pv;i++)fprintf(fp2," PV节点: 节点%d P[%d]=%f U[%d]=%f 初值Q[%d]=%f\n", jd[i].num,jd[i].num,jd[i].p,jd[i].num,jd[i].U,jd[i].num,jd[i].q);fprintf(fp2," 平衡节点: 节点%d e[%d]=%f f[%d]=%f\n",jd[n].num,jd[n].num,jd[n].U,jd[n].num,jd[n].zkj);fprintf(fp2," -------------------------------------------------------------------------------\n");for(i=1;i<=m;i++)fprintf(fp2," 支路%d: 相关节点:%d,%d 非标准变比:kx=%f R=%f X=%f \n",i,zl[i].p1,zl[i].p2,zl[i].kx,zl[i].r,zl[i].x);fprintf(fp2,"==============================================================================\n ");}/*------------------------------------复数运算函数--------------------------------------*/double mozhi(double a0,double b0) /*复数求模值函数*/{ mo=sqrt(a0*a0+b0*b0);return mo;}double ji(double a1,double b1,double a2,double b2) /*复数求积函数a1为电压模值,a2为阻抗角,a3为导纳实部,a4为导纳虚部*/{ a1=a1*cos(b1);b1=a1*tan(b1);c1=a1*a2-b1*b2;d1=a1*b2+a2*b1;return c1;return d1;}double shang(double a3,double b3,double a4,double b4) /*复数除法求商函数*/{ c2=(a3*a4+b3*b4)/(a4*a4+b4*b4);d2=(a4*b3-a3*b4)/(a4*a4+b4*b4);return c2;return d2;}/*--------------------------------计算节点导纳矩阵----------------------------------*/void Form_Y(){for(i=1;i<=n;i++) /*节点导纳矩阵元素附初值*/for(j=1;j<=n;j++)G[i][j]=B[i][j]=0;for(i=1;i<=n;i++) /*节点导纳矩阵的主对角线上的元素,非对地导纳加入相应的主对角线元素中(考虑非标准变比)*/for(j=1;j<=m;j++)if(zl[j].p1==i){if(zl[j].kx==1){mozhi(zl[j].r,zl[j].x);if(mo==0) continue;shang(1,0,zl[j].r,zl[j].x);G[i][i]+=c2;B[i][i]+=d2;}else{mozhi(zl[j].r,zl[j].x);if(mo==0) continue;shang(1,0,zl[j].r,zl[j].x);G[i][i]+=c2/zl[j].kx+c2*(1-zl[j].kx)/(zl[j].kx*zl[j].kx);B[i][i]+=d2/zl[j].kx+d2*(1-zl[j].kx)/(zl[j].kx*zl[j].kx);}}else if(zl[j].p2==i){if(zl[j].kx==1){mozhi(zl[j].r,zl[j].x);if(mo==0) continue;shang(1,0,zl[j].r,zl[j].x);G[i][i]+=c2;B[i][i]+=d2;}else{mozhi(zl[j].r,zl[j].x);if(mo==0) continue;shang(1,0,zl[j].r,zl[j].x);G[i][i]+=c2/zl[j].kx+c2*(zl[j].kx-1)/zl[j].kx;B[i][i]+=d2/zl[j].kx+d2*(zl[j].kx-1)/zl[j].kx;}}for(k=1;k<=m;k++) /*节点导纳矩阵非主对角线上(考虑非标准变比)的元素*/if(zl[k].kx==1){i=zl[k].p1;j=zl[k].p2;mozhi(zl[k].r,zl[k].x);if(mo==0) continue;shang(1,0,zl[k].r,zl[k].x);G[i][j]-=c2;B[i][j]-=d2;G[j][i]=G[i][j];B[j][i]=B[i][j];}else{i=zl[k].p1;j=zl[k].p2;mozhi(zl[k].r,zl[k].x);if(mo==0) continue;shang(1,0,zl[k].r,zl[k].x);G[i][j]-=c2/zl[k].kx;B[i][j]-=d2/zl[k].kx;G[j][i]=G[i][j];B[j][i]=B[i][j];}/*--------------------------输出节点导纳矩阵------------------------------*/fprintf(fp2,"\n\n ********* 潮流计算过程*********\n");fprintf(fp2,"\n==============================================================================\n ");fprintf(fp2,"\n 节点导纳矩阵为:");for(i=1;i<=n;i++){fprintf(fp2,"\n ");for(k=1;k<=n;k++){fprintf(fp2,"%f",G[i][k]);if(B[i][k]>=0){fprintf(fp2,"+j");fprintf(fp2,"%f ",B[i][k]);}else{B[i][k]=-B[i][k];fprintf(fp2,"-j");fprintf(fp2,"%f ",B[i][k]);B[i][k]=-B[i][k];}}}fprintf(fp2,"\n ------------------------------------------------------------------------------\n");}/*-------------------------------牛顿——拉夫逊-------------------------------*/void Calculate_Unbalanced_Para(){for(i=1;i<=n;i++){if(jd[i].ty==1) /*计算PQ节点不平衡量*/{t=jd[i].num;cc[t]=dd[t]=0;for(j=1;j<=n;j++){for(a=1;a<=n;a++){if(jd[a].num==j)break;}P=Q=0;P=jd[a].U*(G[t][j]*cos(jd[i].zkj-jd[a].zkj)+B[t][j]*sin(jd[i].zkj-jd[a].zkj));Q=jd[a].U*(G[t][j]*sin(jd[i].zkj-jd[a].zkj)-B[t][j]*cos(jd[i].zkj-jd[a].zkj));cc[t]+=P;dd[t]+=Q;}jd[i].dp=jd[i].p-jd[i].U*cc[t];jd[i].dq=jd[i].q-jd[i].U*dd[t];}if(jd[i].ty==2) /*计算PV节点不平衡量*/{t=jd[i].num;cc[t]=dd[t]=0;for(j=1;j<=n;j++){for(a=1;a<=n;a++){if(jd[a].num==j)break;}P=Q=0;P=jd[a].U*(G[t][j]*cos(jd[i].zkj-jd[a].zkj)+B[t][j]*sin(jd[i].zkj-jd[a].zkj));Q=jd[a].U*(G[t][j]*sin(jd[i].zkj-jd[a].zkj)-B[t][j]*cos(jd[i].zkj-jd[a].zkj));cc[t]+=P;dd[t]+=Q;}jd[i].dp=jd[i].p-jd[i].U*cc[t];jd[i].q=jd[i].U*dd[t];}}for(i=1;i<=pq;i++) /*形成不平衡量矩阵D[M]*/{D[2*i-1]=jd[i].dp;D[2*i]=jd[i].dq;}for(i=pq+1;i<=n-1;i++){D[pq+i]=jd[i].dp;}fprintf(fp2,"\n 不平衡量为:"); /*输出不平衡量*/for(i=1;i<=pq;i++){t=jd[i].num;fprintf(fp2,"\n dp[%d]=%f",i,D[2*t-1]);fprintf(fp2,"\n dq[%d]=%f",i,D[2*t]);}for(i=pq+1;i<=n-1;i++){t=jd[i].num;fprintf(fp2,"\n dp[%d]=%f",i,D[pq+t]);}}void Form_Jacobi_Matric() /*形成雅克比矩阵*/{for(i=1;i<=pq;i++) /*形成pq节点子阵*/for(j=1;j<n;j++){ int i1=jd[i].num;int j1=jd[j].num;double Ui=jd[i].U;double Uj=jd[j].U;double zi=jd[i].zkj;double zj=jd[j].zkj;if(j<=pq) /*求j<=pq时的H、N、J、L */{if(i!=j) /*求i!=j时的H、N、J、L*/{ykb[2*i-1][2*j-1]=Ui*Uj*(G[i1][j1]*sin(zi-zj)-B[i1][j1]*cos(zi-zj)); /* H */ykb[2*i-1][2*j]=Ui*Uj*(G[i1][j1]*cos(zi-zj)+B[i1][j1]*sin(zi-zj)); /* N */ykb[2*i][2*j-1]=-ykb[2*i-1][2*j]; /* J */ykb[2*i][2*j]=ykb[2*i-1][2*j-1]; /* L */}else /*求i=j时的H、N、J、L*/{aa[i]=0;bb[i]=0;for(k=1;k<=n;k++){int k1=jd[k].num;H=J=0;H=jd[k].U*(G[i1][k1]*sin(jd[i].zkj-jd[k].zkj)-B[i1][k1]*cos(jd[i].zkj-jd[k].zkj));J=jd[k].U*(G[i1][k1]*cos(jd[i].zkj-jd[k].zkj)+B[i1][k1]*sin(jd[i].zkj-jd[k].zkj));aa[i]=aa[i]+H;bb[i]=bb[i]+J;}ykb[2*i-1][2*j-1]=-Ui*(aa[i]-Ui*(G[i1][i1]*sin(jd[i].zkj-jd[i].zkj)-B[i1][i1]*cos(jd[i].zkj-jd[i].zkj)));/*H*/ykb[2*i][2*j-1]=Ui*(bb[i]-Ui*(G[i1][i1]*cos(jd[i].zkj-jd[i].zkj)+B[i1][i1]*sin(jd[i].zkj-jd[i].zkj)));/*J*/ykb[2*i-1][2*j]=ykb[2*i][2*j-1]+2*Ui*Ui*G[i1][i1];/*N*/ykb[2*i][2*j]=-ykb[2*i-1][2*j-1]-2*Ui*Ui*B[i1][i1];/*L*/}}else /*求j>pq时的H、J */{ ykb[2*i-1][pq+j]=Ui*Uj*(G[i1][j1]*sin(zi-zj)-B[i1][j1]*cos(zi-zj)); /* H */ykb[2*i][pq+j]=-Ui*Uj*(G[i1][j1]*cos(zi-zj)+B[i1][j1]*sin(zi-zj)); /* J */}}for(i=pq+1;i<=n-1;i++) /*形成pv节点子阵*/ for(j=1;j<n;j++){int i1=jd[i].num;int j1=jd[j].num;double Ui=jd[i].U;double Uj=jd[j].U;double zi=jd[i].zkj;double zj=jd[j].zkj;if(j<=pq) /*求j<=pq时的H、N */{ykb[pq+i][2*j-1]=Ui*Uj*(G[i1][j1]*sin(zi-zj)-B[i1][j1]*cos(zi-zj)); /* H */ykb[pq+i][2*j]=Ui*Uj*(G[i1][j1]*cos(zi-zj)+B[i1][j1]*sin(zi-zj)); /* N */ }else /*求j>pq时的H*/{if(i!=j) /*求i!=j时的H*/ykb[pq+i][pq+j]=Ui*Uj*(G[i1][j1]*sin(zi-zj)-B[i1][j1]*cos(zi-zj)); /* H */else /*求i=j时的H*/{aa[i]=0;for(k=1;k<=n;k++){int k1=jd[k].num;H=0;H=jd[k].U*(G[i1][k1]*sin(jd[i].zkj-jd[k].zkj)-B[i1][k1]*cos(jd[i].zkj-jd[k].zkj));aa[i]=aa[i]+H;}ykb[pq+i][pq+j]=-Ui*(aa[i]-Ui*(G[i1][i1]*sin(jd[i].zkj-jd[i].zkj)-B[i1][i1]*cos(jd[i].zkj-jd[i].zkj))); /*H*/ }}}/*------------------------------输出雅克比矩阵--------------------------------*/fprintf(fp2,"\n\n 雅克比矩阵为: ");for(i=1;i<=(2*pq+pv);i++){fprintf(fp2,"\n");for(j=1;j<=2*pq+pv;j++){fprintf(fp2," %f",ykb[i][j]);}}}void Solve_Equations() /* 求解修正方程组(LU分解法)*/{double l[Nl][Nl]={0}; //定义L矩阵double u[Nl][Nl]={0}; //定义U矩阵double y[Nl]={0}; //定义数组Ydouble x[Nl]={0}; //定义数组Xdouble a[Nl][Nl]={0}; //定义系数矩阵double b[Nl]={0}; //定义右端项double sum=0;int i,j,k,s;int n;n=2*pq+pv;for(i=0; i<n; i++){for(j=0; j<n; j++){a[i][j]=ykb[i+1][j+1];}}for(i=0; i<n; i++){b[i]=D[i+1];}for(i=0; i<n; i++) /*初始化矩阵l*/{for(j=0; j<n; j++){if(i==j) l[i][j] = 1;}}for(i=0;i<n;i++) /*开始LU分解*/{ u[0][i]=(float)(a[0][i]);} /*第一步:对矩阵U的首行进行计算*/ for(k=0;k<n-1;k++) /*第二步:逐步进行LU分解*/ { for(i=k+1;i<n;i++) /*对L的第k列进行计算*/{ for(s=0,sum=0;s<n;s++){ if(s!=k)sum+=l[i][s]*u[s][k];}l[i][k]=(float)((a[i][k]-sum)/u[k][k]);}for(j=k+1;j<n;j++) /*对U的第k+1行进行计算*/ { for(s=0,sum=0;s<n;s++){ if(s!=k+1)sum+=l[k+1][s]*u[s][j];}u[k+1][j]=(float)((a[k+1][j]-sum));}}y[0]=b[0] ; /*回代法计算数组Y*/for(i=1;i<n;i++){ for(j=0,sum=0;j<i;j++){ sum+=y[j]*l[i][j];}y[i]=(float)(b[i]-sum);}x[n-1]=(float)(y[n-1]/u[n-1][n-1]); /*回代法计算数组X*/for(i=n-2;i>=0;i--){ for(j=n-1,sum=0;j>i;j--){ sum+=x[j]*u[i][j];}x[i]=(float)((y[i]-sum)/u[i][i]);}for(i=1; i<=n; i++){d[i]=x[i-1];}max=fabs(d[1]); /*选出最大的修正量的值*/for(i=1;i<=n;i++)if((fabs(d[i]))>max)max=fabs(d[i]);}void Niudun_Lafuxun(){int z=1;fprintf(fp2,"\n --------------极坐标形式的牛顿-拉夫逊迭代法结果:--------------\n");do{ max=1;if((z<Nl)&&(max>=eps)){fprintf(fp2,"\n 迭代次数: %d\n",z); /*开始迭代计算*/ }Calculate_Unbalanced_Para();Form_Jacobi_Matric();Solve_Equations();for(i=1;i<=pq;i++){jd[i].zkj+=d[2*i-1];jd[i].U+=d[2*i]*jd[i].U;}for(i=pq+1;i<=n-1;i++){jd[i].zkj+=d[pq+i];}fprintf(fp2,"\n\n 输出dδ,dU: "); /*输出修正量的值*/for(c=1;c<=n;c++){for(a=1;a<=n;a++){if(jd[a].num==c)break;}fprintf(fp2,"\n");if(jd[a].ty==1)fprintf(fp2," 节点为%2d dδ=%8.5f dU=%8.5f",c,d[2*a-1],d[2*a]);if(jd[a].ty==2)fprintf(fp2," 节点为%2d dδ=%8.5f",c,d[pq+a]);}fprintf(fp2,"\n\n 输出迭代过程中的电压值: ");for(c=1;c<=n;c++){for(a=1;a<=n;a++){if(jd[a].num==c)break;}fprintf(fp2,"\n U[%d]=%f",c,jd[a].U);fprintf(fp2,"∠%f",jd[a].zkj);}fprintf(fp2,"\n\n ------------------------------------------------------------------------------");z++;} while((z<Nl)&&(max>=eps)); /*判断是否达到精度要求*/}void Powerflow_Result(){int n1=jd[n].num;fprintf(fp2,"\n\n==============================================================================\n \n");fprintf(fp2," ******潮流计算结果******");fprintf(fp2,"\n\n==============================================================================\n \n");fprintf(fp2,"\n 各节点电压值: "); /*输出各节点的电压值*/for(c=1;c<=n;c++){for(a=1;a<=n;a++){if(jd[a].num==c)break;}fprintf(fp2,"\n U[%d]=%f",c,jd[a].U);fprintf(fp2,"∠%f",jd[a].zkj);}rr=tt=0; /*计算节点的注入功率*/for(i=1;i<=n;i++){int i1=jd[i].num;ji(jd[i].U,-jd[i].zkj,G[n1][i1],-B[n1][i1]);rr+=c1;tt+=d1;}ji(jd[n].U,jd[n].zkj,rr,tt);fprintf(fp2,"\n\n 各节点注入功率:\n");for(i=1;i<=pq;i++){int i1=jd[i].num;fprintf(fp2," PQ节点: 节点%d S[%d]=%f", i1,i1,jd[i].p); /*PQ节点注入功率*/ if(jd[i].q>=0)fprintf(fp2,"+j%f\n",jd[i].q);elsefprintf(fp2,"-j%f\n",-jd[i].q);}for(i=pq+1;i<=n-1;i++){int i1=jd[i].num;fprintf(fp2," PV节点: 节点%d S[%d]=%f", i1,i1,jd[i].p); /*PV节点注入功率*/ if(jd[i].q>=0)fprintf(fp2,"+j%f\n",jd[i].q);elsefprintf(fp2,"-j%f\n",-jd[i].q);}fprintf(fp2," 平衡节点: 节点%d",jd[n].num,jd[n].num); /*平衡节点注入功率*/fprintf(fp2," S[%d]=%f",n1,c1);if(d1>=0)fprintf(fp2,"+j%f",d1);elsefprintf(fp2,"-j%f",-d1);fprintf(fp2,"\n\n 线路功率:\n");rr=tt=0;for(i=1;i<=m;i++){int i1=zl[i].p1; /*计算线路功率*/int j1=zl[i].p2;aa[i]=bb[i]=P=Q=0;for(a=1;a<=n;a++){if(jd[a].num==i1)break;}for(b=1;b<=n;b++){if(jd[b].num==j1)break;}mozhi(zl[i].r,zl[i].x);if(mo==0)continue;shang(1,0,zl[i].r,zl[i].x);ji(jd[a].U/zl[i].kx/zl[i].kx,-jd[a].zkj,c2,-d2); /*考虑非标准变比*/P+=c1;Q+=d1;ji(jd[b].U/zl[i].kx,-jd[b].zkj,c2,-d2);P-=c1;Q-=d1;ji(jd[a].U,jd[a].zkj,P,Q);fprintf(fp2," 线路%d: %d--%d 的功率为: %f",i,i1,j1,c1);if(d1>=0)fprintf(fp2,"+j%f\n",d1);elsefprintf(fp2,"-j%f\n",-d1);aa[i]+=c1;bb[i]+=d1;P=Q=0;ji(jd[b].U,-jd[b].zkj,c2,-d2); /*考虑非标准变比*/ P+=c1;Q+=d1;ji(jd[a].U/zl[i].kx,-jd[a].zkj,c2,-d2);P-=c1;Q-=d1;ji(jd[b].U,jd[b].zkj,P,Q);fprintf(fp2," 线路%d: %d--%d 的功率为: %f",i,j1,i1,c1);if(d1>=0)fprintf(fp2,"+j%f\n",d1);elsefprintf(fp2,"-j%f\n",-d1);aa[i]+=c1;bb[i]+=d1;rr+=aa[i];tt+=bb[i];}fprintf(fp2,"\n\n 线路损耗功率:\n"); /*计算线路功率损耗*/for(i=1;i<=m;i++){int i1=zl[i].p1;int j1=zl[i].p2;fprintf(fp2," 线路%d损耗的功率为: %f",i,aa[i]);if(bb[i]>=0)fprintf(fp2,"+j%f\n",bb[i]);elsefprintf(fp2,"-j%f\n",-bb[i]);}fprintf(fp2,"\n\n 网络总损耗功率为: %f",rr); /*计算网络总损耗*/if(tt>=0)fprintf(fp2,"+j%f\n",tt);elsefprintf(fp2,"-j%f\n",-tt);fprintf(fp2,"\n==============================================================================\n ");fprintf(fp2,"\n\n ********* 潮流计算结束*********");}void main(){printf("请仔细阅读附录里的输入文件使用说明以便于你正确输入!\n");data(); /*读取数据*/Form_Y(); /*形成节点导纳矩阵*/for(i=1;i<=pq;i++) /* U、zkj附初值*/{jd[i].U=1; jd[i].zkj=0;}for(i=pq+1;i<n;i++){jd[i].U=jd[i].U; jd[i].zkj=0;}Niudun_Lafuxun(); /*牛顿--拉夫逊迭代*/Powerflow_Result();printf("潮流计算结果存放于output.txt文件中!\n");}附录:输入文件按以下规则输入节点数,支路数,PQ节点数,PV节点数,精度节点编号,节点类型(1为PQ节点,2为PV节点,3为平衡节点)节点输入有功功率,无功功率(节点电压纵分量,横分量)支路编号,非标准变比(若没有则填1即可),相关节点,相关节点,支路电阻,支路电抗。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言电力系统潮流计算是研究电力系统稳态运行情况的一种计算,它根据给定的运行件及系统接线情况确定整个电力系统各部分的运行状态。
在电力系统规划设计和现有电力系统运行方式的研究中,都需要利用潮流计算来定量分析、比较供电方案或运行方式的合理性、可靠性和经济性。
本次课程设计任务是闭式网络的潮流计算,用到的方法为牛顿拉夫逊极坐标法潮流计算。
牛顿法是数学中解决非线性方程式的典型方法,有较好的收敛性。
解决电力系统潮流计算问题是以导纳距阵为基础的,因此,只要在迭代过程中尽可能保持方程式系数距阵的稀疏性,就可以大大提高牛顿法潮流程序的放率。
自从20 世纪60 年代中期利用了最佳顺序消去法以后,牛顿法在收敛性、内存要求、速度方面都超过了阻抗法,成为直到目前仍在广泛采用的优秀方法。
目录1任务书 (2)2.模型简介及等值电路 (3)3.设计原理 (4)4.修正方程的建立 (7)5.程序流程图及MATLAB程序编写 (9)6.结果分析 (15)7.设计总结 (25)8.参考文献 (26)《电力系统分析》课程设计任务书2 模型简介及等值电路2.1课程设计模型:模型3电力网络接线如下图所示,各支路阻抗标幺值参数如下:Z12=0.02+j0.06,Z13=0.08+j0.24,Z23=0.06+j0.18,Z24=0.06+j0.12,Z25=0.04+j0.12,Z34=0.01+j0.03,Z45=0.08+j0.24,k=1.1。
该系统中,节点1为平衡节点,保持11.060V j=+为定值;节点2、3、4都是PQ节点,节点5为PV节点,给定的注入功率分别为:20.200.20S j=+,3-0.45-0.15S j=,40.400.05S j=--,50.500.00S j=-+,51.10V =。
各节点电压(初值)标幺值参数如下:节点 1 2 3 4 5Ui(0)=ei(0)+jfi(0)1.06+j0.0 1.0+j0.0 1.0+j0.0 1.0+j0.0 1.1+j0.0 计算该系统的潮流分布。
计算精度要求各节点电压修正量不大于10-5。
图2-12.2模型分析节点类型介绍按变量的不同,一般将节点分为三种类型。
1 PQ节点这类节点的有功功率和无功功率是给定的,节点(,)Vδ是待求量。
通常变电所都是这一类型节点。
由于没有发电设备,故其发电功率为零。
有些情况下,系统中某些发电厂输出的功率在一段时间内是固定时,该发电厂母线也作为PQ节点。
因此,电力系统中绝大多数节点属于这一类型。
2 PV节点这类节点有功功率P和电压幅值V是给定的,节点的无功功率Q和电压的相位δ是待求量。
这类节点必须有足够的可调无功容量,用以维持给定的电压幅值,因此又称为电压控制节点。
一般选择有一定无功储备的发电厂和具有可调无功电源设备的变电所作为PV节点。
3 平衡节点在潮流分布算出以前,网络中的功率损耗是未知的,因此,网络中至少有一个节点的有功功率P不能给定,这个节点承担了系统系统的有功功率平衡,故称之为平衡节点。
1.2、各节电参数:由模型中所给列出下表:各节点电压和注入功率(初值)标幺值参数如下:各节点之间的导纳:y12=5.000-j15.000,y13=1.2500-j3.7500,y22=0.2750-j0.8250,y23=1.667-j5.000,y24=3.333-j6.667,y25=2.7500-j8.2500,y34=10.0000-j30.0000,y55=-0.25+j0.751.3 等值电路模型由于计算时一般将平衡节点放到最大编号,故在本模型中将节点2、3、4、5、1分别替换为节点1、2、3、4、5,也即是4换为PV节点,5为平衡节点。
将变压器用等值电路,由此绘制等值电路如下:y12=1.667-j5,y13=3.333-j6.667,y14=2.75-j8.25,y15=5-j15,y52=1.25-j3.75,y23=10-j30,y34=1.25-j3.75,y11=0.275-j0.825,y44=-0.25+j0.75。
2.3 等值电路模型在图2-2中,将图2-1中的编号重新编排,节点2、3、4、5、1替换为1、2、3、4、5。
则各节点之间的导纳变为y12=1.667-j5,y13=3.333-j6.667,y14=2.75-j8.25,y15=5-j15,y52=1.25-j3.75,y23=10-j30,y34=1.25-j3.75,y11=0.275-j0.825,y44=-0.25+j0.75。
3 设计原理本题采用了题目要求的牛顿-拉夫逊潮流计算的方法。
牛顿法是数学中解决非线性方程式的典型方法,有较好的收敛性。
解决电力系统潮流计算问题是以导纳距阵为基础的,因此,只要在迭代过程中尽可能保持方程式系数距阵的稀疏性,就可以大大提高牛顿法潮流程序的放率。
3.1潮流计算的定解条件题中所给图表示一个五节点的简单电力系统,n 个节点电力系统的潮流方程的一般形式是..1n i ij ij j iP jQ V Y V =-=∑ (1,2,3,...)i n =或..1nj i i i ij j V P jQ V Y =+=∑ (1,2,3,...)i n =3.2潮流计算的约束条件(1)所有节点电压必须满足min max i i V V V ≤≤(2)所有电源节点的有功功率和无功功率必须满足min max min max}Gi Gi Gi Gi Gi Gi P P P Q Q Q ≤≤≤≤(3)某些节点之间的电压应满足max i j i j δδδδ-<-3.3牛顿-拉夫逊的基本原理设欲求解的非线性代数方程为()0f x =设方程的真实解为x ,则必有()0f x =。
用牛顿-拉夫逊法求方程真实解x 的步骤如下:首先选取余割合适的初始估值(0)x 作为方程(0)()0f x =的解,若恰巧有(0)()0f x =,则方程的真实解即为(0)x x =若(0)()0f x ≠,则做下一步。
取(1)(0)(0)x x x =+∆ 则(1)(0)(0)()()f x f x x =+∆其中(0)x∆为初始估值的增量,即(0)(1)(0)x x x ∆=-。
设函数()f x 具有任意阶导数(1)(0)(0)(0)'(0)(0)''(0)(0)2()()()()[()]/2...f x f x x f x f x x f x x =+∆=+∆+∆+若所取的(0)x ∆足够小,则含(0)2()x ∆的项及其余的一切高阶项均可略去,并使其等于零,即:(1)(0)(0)(0)'(0)(0)()()()()0f x f x x f x f x x =+∆≈+∆= 故得(0)(0)'(0)()()f x xf x ∆=-可见,只要'(0)()f x ≠0,即可根据上式求出第一次的修正估值(1)x ,若恰巧有(1)()f x =0,则方程的真实解即为(1)x x =。
若(1)()0f x ≠,则用上述方法由(1)x 再确定第二次的修正估值。
如此反复叠代下去,直到求得真实解x 为止。
设第K 次的估值为第(K+1)次的修正估值,则有()(1)()'()()()k k k k f x xxf x +=-迭代过程的收敛数据为1()()k f x ε<或2()k x ε∆<其中,1ε,2ε为预先给定的小正数。
4 修正方程的建立极坐标表示的牛拉法修正方程为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∆∆∆∆∆∆∆∆∆∆∆∆δδδδn Pnn np n n n n pn pp P P P P n p n p np n p n P U U U U H H N H N H H H N H N H J J L J L J H H N H N H J J L J L J H H N H N H P P Q P Q P 2221112211221122222221212222222121111212111111121211112211// 式中留出了(n-m )行空格和(n-m )列空列。
式中的有功,无功功率不平衡量Q Pii∆∆.分别由式(3-1a ),式(3-1b )可得为∑==+-=∆nj j ij ij ij ij i i B G U U P P 1j i sin cos )(δδ∑==--=∆nj j ij ij ij ij i i B G U U Q Q 1j i cos sin )(δδ (3-1a ,b )而式中雅可比矩阵的各个元素则分别为 j i P H δ∂∂=ij ;j j i ij U U P N ∂∂=;j i Q J δ∂∂=ij ; j jiij U U Q L ∂∂= (3-2) 式(4-44)中将i U ∆改为/i i U U ∆只是为使公式(4-46)中个偏导数的表示形式上更相似,为求取这些偏导数,可将i P 、i Q 分别展开如下()()2121cos sin sin cos j ni iii i j ij ij ij ij j j i j ni iii i j ij ij ij ij j j iP U G U U G B Q U B U U G B δδδδ==≠==≠=++=-+-∑∑ (3-3a,b )计及cos cos()sin()sin ()sin sin()cos()cos ()cos cos()sin()sin ()sin sin()cos()cos ()iji j i j ijj i j ij i j i j ij j i j ij i j i j ij i i j ij i j i j ij i i j δδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδ∂∂-⎫==-=∂-∂-∂∂-==--=-∂-∂-⎬∂∂-==--=-∂∂-∂∂-==-=∂∂-⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭(3-4)j i ≠时,由于对特定的j ,只有该特定节点的j δ,从而特定的ij i j δδδ=-是变量,由式(4-46)到式(4-48)可得()()sin cos cos sin i ij i j ij ij ij ij j iij i j ij ij ij ij i P H U U G B Q J U U G B δδδδδδ∂⎫==-⎪∂⎪⎬∂⎪==-+⎪∂⎭(3-5a )相似的,由于对特定的j ,只有该特定节点的j U 是变量,可得()()cos sin sin cos i ij i j ij ij ij ij i iij i j ij ij ij ij jP N U U G B U Q L U U G B U δδδδ∂⎫==+⎪∂⎪⎬∂⎪==-⎪∂⎭ (3-5b ) j=i 时,由于i δ是变量,所有ij i j δδδ=-都是变量,可得()()11sin cos cos sin j niii i j ij ij ij ij j i j i j niii i j ij ij ij ij j i j i P H U U G B Q J U U G B δδδδδδ==≠==≠⎫∂==--⎪∂⎪⎪⎬∂⎪==+⎪∂⎪⎭∑∑ (3-5c ) 相似的,由于i U 是变量,可得()()2121cos sin 2sin cos 2j niii i j ij ij ij ij i ii j i j i j niii i j ij ij ij ij i ii j i j i P N U U G B U G U Q L U U G B U B U δδδδ==≠==≠⎫∂==++⎪∂⎪⎪⎬∂⎪==--⎪∂⎪⎭∑∑ (3-5d )5 设计流程图及程序的编写程序中用到的符号所代表的意义:Y 代表导纳矩阵JJ 代表雅克比矩阵∆pp代表有功功率的不平衡量P i∆qq 代表无功功率的不平衡量Q i∆Uuu 代表各节点电压和相角的不平衡量δ∆U 代表各节点的电压S 代表线路的功率Q4 代表PV节点的注入无功功率K 代表迭代次数N1 代表PQ节点和PV节点的总数m,n代表系统中的节点总数,把平衡节点标为最大号S5 平衡节点功率d 变压器对地导纳%The following program for load calculation is based on MATLAB6.5 %以下部分为输入原始数据(到标示‘///’标志为止)。