第一篇:潮流计算作业A4范文
电力系统潮流计算综述
学院:电气工程学院 专业:电力系统及其自动化 学号:s*** 姓名:张雪
摘 要
电力系统潮流计算是电力系统分析中最基本的一项计算。本文对电力系统潮流计算进行了综述。首先简单回顾了潮流计算的发展历史,对当前基于计算机的各种潮流算法的原理及其优缺点,作了简要介绍和比较,并介绍了它们采用的一些特别技术及程序设计技巧;接着简要分析了三种新型的潮流计算方法的计算原理及优缺点,它们分别是基于人工智能的潮流计算方法、基于L1范数和现代内点理论的电力系统潮流计算方法、基于符号分析的潮流计算方法等。除此之外还介绍了配电系统潮流计算算法。
关键词:电力系统;潮流计算;综述;新型潮流计算方法;配电系统 1 概述
电力系统潮流计算是研究电力系统稳态运行的一项基本运算。它根据给定系统的网络结构及运行条件来确定整个系统的运行状态:主要是各节点电压(幅值和相角),网络中功率分布及功率损耗等。它既是对电力系统规划设计和运行方式的合理性、可靠性及经济性进行定量分析的依据,又是电力系统静态和暂态稳定计算的基础。潮流计算经历了一个由手工,利用交、直流计算台到应用数字电子计算机的发展过程。现在的潮流算法都以计算机的应用为前提。1956年ward等人编制成实用的计算机潮流计算程序,标志着电子计算机开始在电力系统潮流计算中应用。基于导纳矩阵的高斯—塞德尔法是电力系统中最早得到应用的潮流计算方法。因它对病态条件(所谓具有病态条件的系统是指:重负荷系统;包含有负电抗支路的系统;具有较长辐射型线路的系统;长线路与短线路接在同一节点,且其长度比值又很大的系统;或平衡节点位于网络远端的系统)特别敏感,又发展了基于阻抗阵的高斯—塞德尔法,但此法中阻抗阵是满阵占大量内存,而限制了其应用。1961年VanNes等人提出用牛顿法求解系统潮流问题,经后人的不断改进,而得到广泛应用并出现了多种变型以满足不同的需要,如快速解耦法、直流法、保留非线性算法等。同时,60年代初开始出现运用非线性规划的最优潮流算法。60年代末Dom-8mel和Tinney提出最优潮流的简化梯度法,70年代有人提出海森矩阵法,80年代SunDl提出最优潮流牛顿算法,还可把解耦技术应用于最优潮流,从而形成解耦型最优潮流牛顿算法,还可把解祸技术应用于最优潮流,从而形成解耦型最优潮流牛顿算法。随着直流输电技术的发展,交直流联合电力系统的潮流计算方法相应出现。另外,其它各种潮流算法如最小化潮流算法、随机潮流算法等也不断涌现。至于用于特殊用途的潮流算法如谐波潮流、适于低压配电网的潮流算法也得到了较快的发展。
潮流算法多种多样,但一般要满足四个基本要求:(i)可靠收敛;(ii)计算速
2n个变量作为已知量而预先给以指定。也即对每个节点,要给定其两个变量的值作为已知条件,而另两个变量作为待求量。
按照电力系统的实际运行条件,根据预先给定的变量的不同,电力系统中的节点又可分为PQ节点、PV节点及Vθ节点或平衡节点三种类型。对应于这些节点,分别对其注入有功、无功功率,有功功率及电压模值以及电压模值和相角加以指定;并且对平衡节点来说,其电压相角一般作为系统电压相角的基准(即θ=0)。
交流电力系统中的复数电压变量可以用两种坐标形式来表示
UiUieji
(3)或
Uieijfi
(4)而复数导纳为
YijGijjBij
(5)将(3)、式(4)以及式(5)代入以导纳矩阵为基础的式(1),并将实部与虚部分开,可得到以下两种形式的潮流方程。
潮流方程的直角坐标形式为:
Piei(GijeiBijfj)fi(GijfjBijej)
(6)
jiji
(i1,2,n
Qifi(GijeiBijfj)ei(GijfjBijej)
(7)
jiji(i1,2,n)
潮流方程的极坐标形式为:
PosijUj(GiciUijjiBn
i j
(8)isji
(i1,2, ,n
QiUiUj(GijsinijBijcosij)
(9)
ji
(i1,2, ,n以上各式中,ji 表示∑号后的标号为j节点必须直接和节点i相联,并包括j=i的情况。这两种形式的潮流方程统称为节点功率方程,是牛顿-拉夫逊等潮流算法所采用的主要数学模型。
对于以上潮流方程中的有关运行变量,还可以按其性质的不同加以分类,这对于进行例如灵敏度分析以及最优潮流的研究等都是比较方便的。
每个节点的注入功率是该节点的电源输入功率PGt、QGt和负荷需求功率PLi、QLi的代数和。负荷需求的功率取决于用户,是无法控制的,所以称之为不可控
456
较对称系统以三倍数增加。(ii)序分量法(或对称分量法)。采用对称分量坐标,将系统各量分为正、负、零序分量,并对系统中不对称元件的序分量之间的耦合,通过加电流源补偿的方法使之解耦。2.5.3 交直流联合电力系统的潮流计算
交直流联合电力系统的潮流计算是根据交流系统各节点给定的负荷和发电情况,结合直流系统指定的控制方式,通过计算来确定整个系统的运行状态它和纯交流电力系统相比,有以下特点:(i)增加直流电力系统变量,与交流电力系统变量通过换流站中交直流换流器建立联系;(ii)换流器一方面实现了交直流电力系统间的有功功率传递,另一方面又从系统中吸取无功;(iij)直流系统的运行须对各个换流器的运行控制方式加以指定,直流系统的状态量是给定的直流控制量和换流器交流端电压的函数。
主要有联合求解法和交替求解法两种计算方法,前者是将交流系统潮流方程组和直流系统的方程组联立起来,统一求解出交流及直流系统中所有未知变量。后者则将交流系统潮流方程组和直流系统的方程组分开来求解,求解直流系统方程组时各换流站的交流母线电压由交流系统潮流的解算结果提供;而在进行交流系统潮流方程组的解算时,将每个换流站处理成接在相应交流节点上的一个等效的有功、无功负荷,其数值则取自直流系统潮流的解算结果。这样交替迭代计算,直到收敛。2.5.4 随机潮流
把潮流计算的已知量和待求量都作为随机变量来处理,最后求得各节点电压及支路潮流等的概率统计特性。此法最早是用直流模型,后发展为线性化的交流模型及采用最小二乘法并保留非线性的交流模型。其突出优点是通过一次计算就提供了系统运行和规划的全面信息。
除上述之外,还有其它一些用途不同的特殊潮流问题,如谐波潮流、动态潮流等,在此不一一列举。2.6 潮流概念的推广 2.6.1 状态估计
实质是一种广义潮流计算。一般潮流计算时,已知量和方程式数等于未知量数。而在状态估计中,已知量和方程式数大于待求未知量数,利用冗余变量,在实际测量系统有偏差的情况下获得表征系统实际运行状态的状态量。主要方法有最小二乘估计法、支路潮流状态估计法、递推状态估计法等。
2.6.2 最优潮流
所谓最优潮流,就是当系统的结构参数及负荷情况给定时,通过控制变量的优选,所找到的能满足所有指定的约束条件,并使系统的某一性能指标或目标函数达到最优时的潮流分布.最优潮流计算是电力系统优化规划与运行的基础,它将成为能量管理系统(EMS)中的核心应用软件之一。其数学模型可表示为:
minf(u,x)s.t.g(u,x)0
(19)
h(u,x)0选用不同的目标函数的控制变量,加上相应的约束条件,就构成不同应用目的的最优潮流问题。最优潮流的求解方法主要有:
(1)最优潮流的简化梯度算法
此法采用了简化梯度,并应用拉格朗日乘子和罚函数将等式和不等式约束加在目标函数中,从而把有约束问题变为无约束问题。优点是原理简单,设计简便。缺点是迭代点向最优点接近时走的是曲折路线,罚因子的选择比较困难。
(2)最优潮流的牛顿算法 对最优潮流问题:
minf(x)0
(20)
s.t.g(x)
h(x)0先不考虑不等式约束,构造拉格朗日函数:L(x,)f(x)Tg(x),定义向量Zx,,则应用海森矩阵法求最优解点Z*的迭代方程为:W△z=-d,式中:W,d分别为L对于Z的海森矩阵及梯度向量。本方法的关键是充分开发并在迭代过程中保持W矩阵的高度稀疏性,另外在求解时采用特殊的稀疏技巧。对不等式约束的处理有两种方法:(i)罚函数法;(ii)不等式约束化为等式方程法。
(3)解耦最优潮流
把最优潮流的整体最优化问题分解为有功优化和无功优化两个子优化问题。它有一个特别的优点是容许根据两个子优化问题各自的特性而采用不同的求解方法。几种新型的潮流计算方法 3.1 潮流计算的人工智能方法
近年来,人工智能作为一种新兴的方法,越来越广泛的应用到电力系统潮流计算中。该方法不像传统方法那样依赖于精确的数学模型,这种方法只能基于对自然界和人类本身活动的有效类比而获得启示。具有代表性的有遗传法、模拟退
值为一不为零的正值。因此,即使是在病态系统的情况下,计算过程不会发散。国内专家学者对解决此问题也进行了许多有益的探讨。
提出了一种基于内点非线性规划的潮流计算模型和算法。基于L1范数的计算原理,潮流方程的求解可以转化为求解一个新的非线性规划模型L1LF,并结合现代内点算法来进行求解。和过去的模型相比,该模型非常的简洁、直观,易于编程。与现代内点算法相结合的求解过程表现出了良好的收敛性和快速性,计算结果准确、可靠,计算各种病态系统均可良好的收敛,基于L1范数的数学规划模型将传统电力系统潮流的直接迭代求解转化为对一简单规划问题的求解后,对系统运行中各部分的控制可更加简便。增加适当的不等式约束和相关控制变,即可获得近似于最优潮流的计算模型,可方便的进行潮流计算中的调整。3.3 电力系统潮流计算的符号分析方法
随着电力系统规模的扩大,电力系统的实时计算问题显得日益重要,但长期以来受算法的计算效率所限,潮流计算的速度难以得到实质性的突破。根据电力网络在实际运行中的特点,结合网络图论理论提出了运用符号分析方法求解电力网络潮流的新思路,有望克服传统数值计算方法在收敛性、冗余项对消、计算机有效字长效应等方面的不足。
基于符号分析方法的潮流计算方法通过建立电力网络的拓扑模型生成拓扑网络的全部树和2-树,应用网络的k-树树支导纳乘积对电力网络的节点电压方程进行拓扑求解,进而得出所求变量(即各节点电压)的符号表达式(即关于元件参数符号的显式表达式)。这种方法避免了求解非线性方程,不必进行行列式的展开和代数余子式的计算,而且不需要写出行列式和代数余子式,克服了传统数值计算的不足。同时它还带来一个附加的好处,即在构造函数时自然地产生并行处,以及由它的拓扑性质带来的电力网络运行方式改变后计算的灵活性。这些特点将在电力系统的在线计算、静态安全分析等领域发挥明显优势。另外,传统的潮流计算方法都是纯“数值计算”,利用这些方法计算出来的结果是数字而不是函数,它们的特点是逐点进行完整的数值计算,因此不可避免地存在收敛性问题、冗余项对消问题、计算机有效字长效应问题和相近数值求差时发生的浮点运算误差问题。
基于符号分析方法的潮流计算方法在电力系统在线静态安全分析、短路计算、灵敏度计算等领域中也可推广使用。4 配电系统潮流计算算法的研究 4.1 线性规划
1121314-
第二篇:电力系统分析潮流计算大作业
电力系统分析潮流计算大作业
(源程序及实验报告)
源程序如下:
采用直角坐标系的牛顿-拉夫逊迭代 function chaoliujisuan()m=3;%m=PQ节点个数 v=1;%v=PV节点个数
P=[-0.8055-0.18 0];%P=PQ节点的P值 Q=[-0.5320-0.12 0];%Q=PQ节点的Q值 PP=[0.5];%PP=PV节点的P值 V=[1.0];%V=PV节点的U值
E=[1 1 1 1.0 1.0]';%E=PQ,PV,Vθ节点e的初值
F=[0 0 0 0 0]';%F=PQ,PV,Vθ节点f的初值 G=[
6.3110-3.5587-2.7523 0 0;
-3.5587 8.5587-5
0 0;
-2.7523-5
7.7523 0 0;
0
0
0
0 0;
0
0
0
0 0
];B=[
-20.4022 11.3879
9.1743
0
0;
11.3879-31.00937 15
4.9889 0;
9.1743
-28.7757 0
4.9889;
0
4.9889
0
5.2493 0;
0
0
4.9889
0
-5.2493
];Y=G+j*B;X=[];%X=△X n=m+v+1;%总的节点数
FX=ones(2*n-2,1);%F(x)矩阵
F1=zeros(n-1,n-1);%F(x)导数矩阵 a=0;%记录迭代次数
EF=zeros(n-1,n-1);%最后的节点电压矩阵 while max(FX)>=10^(-5)for i=1:m %PQ节点
FX(i)=P(i);%△P FX(n+i-1)=Q(i);%△Q
for w=1:n FX(i)= FX(i)-E(i)*G(i,w)*E(w)+E(i)*B(i,w)*F(w)-F(i)*G(i,w)*F(w)-F(i)*B(i,w)*E(w);%△P
FX(n+i-1)=FX(n+i-1)-F(i)*G(i,w)*E(w)+F(i)*B(i,w)*F(w)+E(i)*G(i,w)*F(w)+E(i)*B(i,w)*E(w);%△Q
end end for i=m+1:n-1 %PV节点 FX(i)=PP(i-m);%△P FX(n+i-1)=V(i-m)^2-E(i)^2-F(i)^2;%△Q
for w=1:n FX(i)= FX(i)-E(i)*G(i,w)*E(w)+E(i)*B(i,w)*F(w)-F(i)*G(i,w)*F(w)-F(i)*B(i,w)*E(w);%△P
end end
for i=1:m %PQ节点
for w=1:n-1
if i~=w
F1(i,w)=-(G(i,w)*E(i)+B(i,w)*F(i));
F1(i,n+w-1)=B(i,w)*E(i)-G(i,w)*F(i);
F1(n+i-1,w)=B(i,w)*E(i)-G(i,w)*F(i);
F1(n+i-1,n+w-1)=G(i,w)*E(i)+B(i,w)*F(i);
else
F1(i,w)=-G(i,i)*E(i)-B(i,i)*F(i);
F1(i,n+w-1)=B(i,i)*E(i)-G(i,i)*F(i);
F1(n+i-1,w)=B(i,i)*E(i)-G(i,i)*F(i);
F1(n+i-1,n+w-1)=G(i,i)*E(i)+B(i,i)*F(i);
for k=1:n
F1(i,w)=F1(i,w)-G(i,k)*E(k)+B(i,k)*F(k);
F1(i,n+w-1)= F1(i,n+w-1)-G(i,k)*F(k)-B(i,k)*E(k);
F1(n+i-1,w)=F1(n+i-1,w)+G(i,k)*F(k)+B(i,k)*E(k);
F1(n+i-1,n+w-1)=F1(n+i-1,n+w-1)-G(i,k)*E(k)+B(i,k)*F(k);
end
end
end end for i=m+1:n-1 %PV节点
for w=1:n-1
if i~=w
F1(i,w)=-(G(i,w)*E(i)+B(i,w)*F(i));
F1(i,n+w-1)=B(i,w)*E(i)-G(i,w)*F(i);
F1(n+i-1,w)=0;
F1(n+i-1,n+w-1)=0;
else
F1(i,w)=-G(i,i)*E(i)-B(i,i)*F(i);
F1(i,n+w-1)=B(i,i)*E(i)-G(i,i)*F(i);
F1(n+i-1,w)=-2*E(i);
F1(n+i-1,n+w-1)=-2*F(i);
for k=1:n
F1(i,w)=F1(i,w)-G(i,k)*E(k)+B(i,k)*F(k);
F1(i,n+w-1)= F1(i,n+w-1)-G(i,k)*F(k)-B(i,k)*E(k);
end
end
end end X=inv(F1)*(-FX);for i=1:n-1
E(i)=E(i)+X(i);
F(i)=F(i)+X(n+i-1);end a=a+1;fprintf('第%d次迭代后的节点电压分别为:n',a);disp(E+j*F);fprintf('第%d次迭代后功率偏差△P △Q电压偏差△V的平方分别为:n',a);disp(FX);end
disp('收敛后的节点电压用极坐标表示为:');EF=E+j*F;for i=1:n-1 fprintf('%d号节点电压的幅值为:',i)
disp(abs(EF(i)));fprintf('%d号节点电压的相角度数为',i)
disp(angle(EF(i))*180/pi);end PPH=0;for i=1:n
PPH=PPH+EF(n)*conj(Y(n,i))*conj(EF(i));end fprintf('平衡节点的功率');disp(PPH);
运行结果:
运行结果复制如下:
第1次迭代后的节点电压分别为:
1.00340.1019i
1.03390.0017i
1.0000
第1次迭代后功率偏差△P △Q电压偏差△V的平方分别为:
-0.8055
-0.1800
0
0.5000
-0.3720
0.2474
0.3875
0
第2次迭代后的节点电压分别为:
0.98360.1038i
1.01830.0035i
1.0000
第2次迭代后功率偏差△P △Q电压偏差△V的平方分别为:
0.0512
-0.0222
-0.0403
0.0002
-0.1012
-0.0219
-0.0099
-0.0000
第3次迭代后的节点电压分别为:
0.98310.1038i
1.01800.0035i
1.0000
第3次迭代后功率偏差△P △Q电压偏差△V的平方分别为:
0.0008
-0.0003
-0.0005
-0.0001
-0.0021
-0.0004
-0.0003
-0.0000
第4次迭代后的节点电压分别为:
0.98310.1038i
1.01800.0035i
1.0000
第4次迭代后功率偏差△P △Q电压偏差△V的平方分别为:
1.0e-005 *
0.0280
-0.0083
-0.0164
-0.0121
-0.1085
-0.0199
-0.0135
-0.0005
收敛后的节点电压用极坐标表示为: 1号节点电压的幅值为:
0.9916
1号节点电压的相角度数为-7.4748
2号节点电压的幅值为:
1.0175
2号节点电压的相角度数为-5.8548
3号节点电压的幅值为:
1.0229
3号节点电压的相角度数为-5.5864
4号节点电压的幅值为:
1.0000
4号节点电压的相角度数为-0.2021
平衡节点的功率 0.4968-10.3280i
第三篇:潮流计算--电力系统大作业(C++编写)
程序设计所涉及二叉树解释
任意一棵树或一个森林都能唯一地对应一棵二叉树,由此而编写本程序。本程序采用类二叉树为整体结构,二叉树类下定义节点类,每一条支路均为树的一个节点,支路所有的参数均作为节点的属性,并给节点加入属性“支路编号”,并以支路编号为依据构建二叉树,这就要求提前根据二叉树结构给每一个支路编号。
支路编号原则:左子树上所有编号均小于其双亲的编号,右子树上所有编号均大于其双亲的编号,为了便于查看,本程序在节点较少时编号从1开始,逐个递加至支路数;当支路较多时,可不必拘泥于逐个递加,只要满足支路编号原则即可。
例如习题3-4:
123118kV113kV8.5+j20.5Wj2.82×10-4S1.22+j20.2Wj2.82×10-4SDST=0.17+j1.7MVA40+j30MVA20+j15MVA
程序二叉树结构示意图:
本二叉树中节点1即支路1为题目中节点1与节点2之间的部分; 本二叉树中节点2即支路2为题目中节点2与节点3之间的部分; 对于习题3-3:
程序二叉树结构示意图:
本二叉树中节点2即支路2为题目中节点1与节点2之间的部分; 本二叉树中节点1即支路1为题目中节点2与节点3之间的部分; 本二叉树中节点3即支路3为题目中节点2与节点4之间的部分.拓展:
如下多支路网络:
对于三节点网络需先进行以下网络处理转化为标准二叉树,而后进行计算;
图中三角形表明该项阻抗为零,为纯导线,并进行相应参数补充进行计算。
程序说明文档
******************************************************************************************************************************************************* 本程序测试使用方法:在E盘根目录下建立输入文件:
输入文件名:input.txt;
将所附算例对应输入文件内容复制粘贴至上述文件中,在VC++6.0环境下运行cpp文件得出结果。
输出文件在E盘根目录下
输出文件名为:data.txt;******************************************************************************************************************************************************* 程序功能说明:本程序可以计算任意长度线型开始网络潮流;
支持多电压等级下的计算;
可在除供电节点外任意节点引出负载;
*******************************************************************************************************************************************************
输入格式说明:以支路为基本单位,按潮流方向输入数据:
以下例示意:
//支路个数
1,110,118,8.5,20.5,0.000564,0,0,1,0,0
//线路等效的支路
2,11,110,1.22,20.2,0,40,30,10,0.17,1.7
//变压器等效的支路
.//按此方式知道输入所有的支路
.//输入从上到下的顺序为潮流在
.//线型开式网络中的流动方向
/*
第一行输入支路个数,回车
第二行至后输入各个支路参数,回车分隔不同支路;
各行输入的支路参数顺序是:
支路编号,末端电压,始端电压,线路等效电阻,线路等效感抗,线路等效容纳,末端输入有功,末端输入无功,变比,变压器有功励磁损耗,变压器无功励磁损耗
对于线路等效电路:变压器有功/无功损耗输入零,变比输入1;
对于变压器等效电路:所有的参数均归算至高压侧,Rt,Xt对应输入线路等效电阻/感抗的位置,线路等效容抗为零;
对于个节点的引出负荷:输入至以此节点为末节点的支路的末端输入有功/无功部分;
*/ ******************************************************************************************************************************************************** 输出文件格式说明:输出的内容包括
(1)支路信息:每个支路元件的始端有功、无功和末端有功、无功;有功损耗无功损耗;电压损耗;
(2)全网信息:全网的总电源有功、总负荷有功、有功损耗、网损率;
(3)迭代信息:每次完整迭代后的所有内容;
具体在输出文件中都明确标出。
********************************************************************************************************************************************************* 程序中变量定义说明:
类中定义的变量
class line_part{
//定义支路类
double U[2];
//支路电压降落:U[0]电压降落横分量,U[1]电压降落纵分量
double k;
//变压器变比
double val;
//支路排序
double U_end;
//支路末端电压
double U_begin;
//支路首段电压
double X[3];
//支路等效阻抗: X[0]电阻,X[1]感抗,X[2]容纳
double S_end[2];
//支路末端功率:S_end[0]有功,S_end[1]无功
double S_begin[2];
//支路首段功率:S_begin[0]有功,S_begin[1]无功
double S0[2];
//变压器励磁损耗:S0[0]有功,S0[1]无功
double S_org[2];
//支路末端负载:S_org[0]有功,S_org[1]无功
line_part *lchild,*rchild;
//支路的后继两个支路 }
class BinTree{
//定义树类
void PreOrder(){PreOrder(root);};
//树的先序遍历修改电压
void PostOrder(){PostOrder(root);};
//树的后序遍历修改潮流
void display(){display(root);};
//树的先序遍历显示数据
line_part *root;
//树的根,是一个支路类
};主函数中定义的数据
ofstream outfile;
//输出数据流定
ifstream infile;
//输入数据流定
const int M(a);
//支路个数常量
主程序(复制粘贴到C++就能用)
**************************************************************************************************************************************************************
#include
double p_cost_all=0;
double sqr(double x){
//平方计算函数 return x*x;};
class line_part{
//定义支路类 private:
double val;
//支路排序
double U_end;
//支路末端电压
double U_begin;
//支路首段电压
double X[3];
//支路等效阻抗: X[0]电阻,X[1]感抗,X[2]容纳
double S_end[2];
//支路末端功率:S_end[0]有功,S_end[1]无功
double S_begin[2];
//支路首段功率:S_begin[0]有功,S_begin[1]无功
double S0[2];
//变压器励磁损耗:S0[0]有功,S0[1]无功
double S_org[2];
//支路末端负载:S_org[0]有功,S_org[1]无功
line_part *lchild,*rchild;public:
double U[2];
//支路电压降落:U[0]电压降落横分量,U[1]电压降落纵分量
double k;
//变压器变比
public: line_part(){ val=0;U_end=0;U_begin=0;X[0]=0;X[1]=0;
X[2]=0;S_end[0]=S_org[0]=0;S_end[1]=S_org[1]=0;
S_begin[0]=0;S_begin[1]=0;k=1;
S0[0]=0;S0[1]=0;U[0]=0;U[1]=0;
lchild = rchild= NULL;}
line_part(double vall,double u_end=0,double u_begin=0,double r=0,double x=0,double b=0,double Pe=0,double Xe=0,double K=0,double P0=0,double Q0=0){
val=vall;
U_end=u_end;
U_begin=u_begin;
X[0]=r;
X[1]=x;
X[2]=b;
S_end[0]=S_org[0]=Pe;
S_end[1]=S_org[1]=Xe;
S_begin[0]=0;
S_begin[1]=0;
k=K;
S0[0]=P0;
S0[1]=Q0;
U[0]=0;
U[1]=0;
lchild = rchild= NULL;
};friend class BinTree;
friend void pass_U(line_part*a,line_part*b,line_part*c);
//电压传递函数
friend void pass_w(line_part*a,line_part*b,line_part*c);
//功率传递函数
friend void pass_U2(line_part*a,line_part*b);
//电压传递函数
friend void pass_w2(line_part*a,line_part*b);
//功率传递函数
void Sbegin(){
(U_end)*X[2]/2))/sqr(Uend);;-sqr(U_begin)*X[2]/2-sqr(U_end)*X[2]/2;};void Uend(){
double U_heng(0),U_zong(0);
X[2]/2-S0[1];1])/U_begin;
//U_heng即是△u2 0])/U_begin;
//U_zong即是δu2 sqr(U_zong))/k;
double get_val(){
};
//支路首段功率计算函数 double Uend,I2;Uend=k*U_end;I2=(sqr(S_end[0])+sqr(S_end[1]-sqrS_begin[0]=S_end[0]+I2*X[0]+S0[0]S_begin[1]=S_end[1]+I2*X[1]+S0[1]
//支路末端电压计算函数 double p_begin,q_begin;p_begin=S_begin[0]-S0[0];q_begin=S_begin[1]+sqr(U_begin)*U_heng=(p_begin*X[0]+q_begin*X[U_zong=(p_begin*X[1]-q_begin*X[U_end=sqrt(sqr(U_begin-U_heng)+U[0]=U_heng;U[1]=U_zong;};
//返回支路编号 if(this==0){return-1;}else{ if(val>0&&val<100){return val;} else return-1;}
double get_Uend(){
//返回支路末端电压
return U_end;};
double get_Ubegin(){
//返回支路首段电压
return U_begin;};
double get_Pbegin(){
//返回支路首段有功
return S_begin[0];};
double get_Pend(){
//返回支路末端有功
return S_end[0];};
double get_Qbegin(){
//返回支路首段无功
return S_begin[1];};
double get_Qend(){
//返回支路末端无功
return S_end[1];};
double get_Pcost(){
//返回支路有功损耗
return S_begin[0]-S_end[0];};
double get_Qcost(){
//返回支路无功损耗
return S_begin[1]-S_end[1];};line_part *get_lchild(){
//返回支路无功损耗
return lchild;};line_part *get_rchild(){
//返回支路无功损耗
return rchild;};};
void pass_U(line_part *a,line_part *b,line_part *c){(*c).U_begin=(*a).U_end;(*b).U_begin=(*a).U_end;};void pass_w(line_part *a,line_part *b,line_part *c){(*a).S_end[0]=(*b).S_begin[0]+(*c).S_begin[0]+(*a).S_org[0];(*a).S_end[1]=(*b).S_begin[1]+(*c).S_begin[1]+(*a).S_org[1];};void pass_U2(line_part *a,line_part *b){(*b).U_begin=(*a).U_end;};void pass_w2(line_part *a,line_part *b){(*a).S_end[0]=(*b).S_begin[0]+(*a).S_org[0];(*a).S_end[1]=(*b).S_begin[1]+(*a).S_org[1];};
class BinTree{ public:
friend void pass_U(line_part*,line_part*,line_part*);
//电压传递函数
pass_w(line_part*,line_part*,line_part*);
line_part(0,0,0,0,0,0,0,0,0,0,0);root = aa;}
vall,double u_end=0,double u_begin=0,double r=0, Pe=0,double Xe=0, P0=0,double Q0=0){ egin,r,x,b,Pe,Xe,K,P0,Q0);
private:
*&t,double vall,double u_end,double u_begin,double r, Pe,double Xe, Q0);
};
friend void //功率传递函数 BinTree(){line_part *aa=new line_part *Getroot(){return root;} void insertline_part(double
double x=0,double b=0,double
double K=0,double insertline_part(root,vall,u_end,u_b} void PreOrder(){PreOrder(root);};void PostOrder(){PostOrder(root);};void display(){display(root);};line_part *root;void insertline_part(line_part
double x,double b,double
double K,double P0,double void PreOrder(line_part *&t);void PostOrder(line_part *t);void display(line_part *&t);
void BinTree::insertline_part(line_part *&t, double vall,double u_end=0,double u_begin=0,double r=0,double x=0,double b=0,double Pe=0,double Xe=0,double K=0,double P0=0,double Q0=0){
//插入节点
double ass=t->get_val();if(t==0||t->get_val()<=0){
t=new line_part(vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} else if(vall
insertline_part(t->lchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} else {
insertline_part(t->rchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} };/////////////////////////////////////////////////////////////////////////////////////////////////////////////// void BinTree::display(line_part *&t){
if(t->get_val()>0&&t->get_val()<100){
display(t->lchild);
display(t->rchild);
ofstream outfile1;
outfile1.open(“e:data.txt”,ios::ate);
p_cost_all +=t->get_Pcost();
double U;
// 计算并存放各个节点的电压相角(始端为零)
U=atan2(t->U[1],(t->get_Ubegin()-t->U[0]))/3.1415926*180;
outfile1<<“支路”<
”<
outfile1<<“
”<<“首端电压”<<“
”< outfile1<<“ ”<<“末端电压”<<“ ”< //计算并存放各个支double U_cost; //计算并存放各个支路的电压损耗 U_cost=t->get_Ubegin()-t->get_Uend(); outfile1<<“ ”<<“电压损耗”<<“ outfile1<<” “<<”始端有功“<<” 首端电压 outfile1<<“ ”<<“始端无功”<<“ 路的末端电压 outfile1<<” “<<”末端有功“<<” 首端电压 outfile1<<“ ”<<“末端无功”<<“ 路的末端电压 double P_cost; 的有功损耗 P_cost=t->get_Pcost(); outfile1<<” “<<”有功损耗“<<” double Q_cost; 的无功损耗 Q_cost=t->get_Qcost(); outfile1<<“ ”<<“无功损耗”<<“ outfile1.close(); ”< //计算并存放各个支“< //计算并存放各个支 //计算并存放各个支路 “< //计算并存放各个支路 ”< };///////////////////////////////////////////////////////////////////////////////////////////////////////////////// void BinTree::PreOrder(line_part *&t){ //先序遍历二叉树修改电压 0) get_lchild()->get_val()<100) get_rchild()->get_val()<100) get_rchild()->get_val()<100) if(t->get_val()>0&&t->get_val()<10{ if(t->get_lchild()->get_val()>0&&t-> { if(t->get_rchild()->get_val()>0&&t-> { t->Uend(); pass_U(t,t->lchild,t->rchild); t->lchild->Uend(); t->rchild->Uend(); } else{ t->Uend(); pass_U2(t,t->lchild); t->lchild->Uend();} } else { if(t->get_rchild()->get_val()>0&&t-> { t->Uend(); pass_U2(t,t->rchild); t->rchild->Uend(); } else{} } PreOrder(t->lchild);PreOrder(t->rchild); } };void BinTree::PostOrder(line_part *t){ //后序遍历二叉树修改潮流 if(t->get_val()>0&&t->get_val()<100) get_lchild()->get_val()<100) get_rchild()->get_val()<100) get_rchild()->get_val()<100) { PostOrder(t->lchild);PostOrder(t->rchild);if(t->get_lchild()->get_val()>0&&t-> { if(t->get_rchild()->get_val()>0&&t-> { t->lchild->Sbegin(); t->rchild->Sbegin(); pass_w(t,t->lchild,t->rchild); t->Sbegin(); } else{ t->lchild->Sbegin(); pass_w2(t,t->lchild); t->Sbegin();} } else { if(t->get_rchild()->get_val()>0&&t-> { t->rchild->Sbegin(); pass_w2(t,t->rchild); t->Sbegin(); } else{} }; void main(){ ofstream outfile; //输入数据流定义 infile>>a; cout<<“节点个数 ”< const int M(a); 量 double *A=new double[10*M];支路数据数组 while(l<11*M){ } } //输出数据流定义 outfile.open(“e:data.txt”);outfile.clear();outfile.close();ifstream infile;infile.open(“e:input.txt”); int a;int l(0);char b; //支路节点数常 //输入流输入各 infile>>A[l]; infile.get(b);l++;};outfile.open(“e:data.txt”,ios::ate);outfile<<“节点个数 ”< i=0;i *i+1],A[11*i+2],A[11*i+3],A[11*i+4],*i+8],A[11*i+9],A[11*i+10]); 如下“< outfile.close(); BinTree elec;for(int //添加节点 elec.insertline_part(A[11*i+0],A[11 A[11*i+5],A[11*i+6],A[11*i+7],A[11} for(i = 0;i<5;i++){ outfile.open(”e:data.txt“,ios::ate);outfile< outfile< elec.PostOrder(); elec.PreOrder();elec.display(); outfile.open(“e:data.txt”,ios::ate); “< ”< “< ”< outfile< line_part *ee=new line_part();ee=elec.Getroot(); double aa =ee->get_Pbegin(); outfile<<“全网的总电源有功 outfile.close(); outfile.open(”e:data.txt“,ios::ate);double bb;bb =aa-p_cost_all; outfile<<”全网的总负荷有功 outfile<<“全网的总有功损耗 double cc; cc = p_cost_all/aa*100; outfile<<”全网的网损率 outfile.close(); p_cost_all=0.0; } }; **************************************************************************************************************************************************************习题3-3 input: 3 2,35,38.5,1.2,2.4,0,3,2,1,0,0 1,35,35,1,2,0,5,3,1,0,0 3,35,35,2,4,0,2,3,1,0,0 习题3-4 Input: 最大负荷 2 1,110,118,8.5,20.5,0.000564,0,0,1,0,0 2,11,110,1.22,20.2,0,40,30,10,0.17,1.7 最小负荷 2 1,110,113,8.5,20.5,0.000564,0,0,1,0,0 2,11,110,1.22,20.2,0,20,15,10,0.17,1.7 科学技术学院 毕业设计(论文)开题报告 题 目: 电力系统潮流分析计算机辅助设计 学 科 部: 信息学科部 专 业: 电气工程及其自动化 班 级: 电气082班 学 号: 7022808070 姓 名: 黄义军 指导教师: 刘爱国 填表日期: 2011 年 月 日 一、选题的依据及意义: 电力系统潮流计算是研究电力系统稳态运行情况的一种基本电气计算。它的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等。电力系统潮流计算的结果是电力系统稳定计算和故障分析的基础。 潮流计算经历了一个由手工, 利用交、直流计算台到应用数字电子计算机的发展过程。现在的潮流算法都以计算机的应用为前提。 利用电子计算机进行潮流计算从20世纪50年代中期就已经开始。此后,潮流计算曾采用了各种不同的方法,这些方法的发展主要是围绕着对潮流计算的一些基本要求进行的。一般要满足四个基本要求: a)可靠收敛 b)计算速度快 c)使用方便灵活 d)内存占用量少 它们也是对潮流算法进行评价的主要依据。 在电力系统运行方式和规划方案的研究中,都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。同时,为了实时监控电力系统的运行状态,也需要进行大量而快速的潮流计算。因此,潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。在系统规划设计和安排系统的运行方式时,采用离线潮流计算;在电力系统运行状态的实时监控中,则采用在线潮流计算。 二、国内外研究现状及发展趋势(含文献综述): 在用数字计算机求解电力系统潮流问题的开始阶段,人们普遍采用以节点导纳矩阵为基础的高斯-赛德尔迭代法(一下简称导纳法)。这个方法的原理比较简单,要求的数字计算机的内存量也比较小,适应当时的电子数字计算机制作水平和电力系统理论水平,于是电力系统计算人员转向以阻抗矩阵为主的逐次代入法(以下简称阻抗法)。 20世纪60年代初,数字计算机已经发展到第二代,计算机的内存和计算速度发生了很大的飞跃,从而为阻抗法的采用创造了条件。阻抗矩阵是满矩阵,阻抗法要求计算机储存表征系统接线和参数的阻抗矩阵。这就需要较大的内存量。而且阻抗法每迭代一次都要求顺次取阻抗矩阵中的每一个元素进行计算,因此,每次迭代的计算量很大。 阻抗法改善了电力系统潮流计算问题的收敛性,解决了导纳法无法解决的一些系统的潮流计算,在当时获得了广泛的应用,曾为我国电力系统设计、运行和研究作出了很大的贡献。但是,阻抗法的主要缺点就是占用计算机的内存很大,每次迭代的计算量很大。当系统不断扩大时,这些缺点就更加突出。为了克服阻抗法在内存和速度方面的缺点,后来发展了以阻抗矩阵为基础的分块阻抗法。这个方法把一个大系统分割为几个小的地区系统,在计算机内只需存储各个地区系统的阻抗矩阵及它们之间的联络线的阻抗,这样不仅大幅度的节省了内存容量,同时也提高了计算速度。 克服阻抗法缺点的另一途径是采用牛顿-拉夫逊法(以下简称牛顿法)。牛顿法是数学中求解非线性方程式的典型方法,有较好的收敛性。解决电力系统潮流计算问题是以导纳矩阵为基础的,因此,只要在迭代过程中尽可能保持方程式系数矩阵的稀疏性,就可以大大提高牛顿潮流程序的计算效率。自从20世纪60年代中期采用了最佳顺序消去法以后,牛顿法在收敛性、内存要求、计算速度方面都超过了阻抗法,成为直到目前仍被广泛采用的方法。 在牛顿法的基础上,根据电力系统的特点,抓住主要矛盾,对纯数学的牛顿法进行了改造,得到了P-Q分解法。P-Q分解法在计算速度方面有显著的提高,迅速得到了推广。 牛顿法的特点是将非线性方程线性化。20世纪70年代后期,有人提出采用更精确的模型,即将泰勒级数的高阶项也包括进来,希望以此提高算法的性能,这便产生了保留非线性的潮流算法。另外,为了解决病态潮流计算,出现了将潮流计算表示为一个无约束非线性规划问题的模型,即非线性规划潮流算法。 近20多年来,潮流算法的研究仍然非常活跃,但是大多数研究都是围绕改进牛顿法和P-Q分解法进行的。此外,随着人工智能理论的发展,遗传算法、人工神经网络、模糊算法也逐渐被引入潮流计算。但是,到目前为止这些新的模型和算法还不能取代牛顿法和P-Q分解法的地位。由于电力系统规模的不断扩大,对计算速度的要求不断提高,计算机的并行计算技术也将在潮流计算中得到广泛的应用,成为重要的研究领域。 三、本课题研究内容 1.熟悉电力系统潮流计算的相关理论。 2.在综合分析各种电力系统特点的基础上,运用所学专业知识,提出一种合理高效的潮流计算算法。 3.熟练运用程序设计语言如C语言。 4.通过软件编程实现所提出的算法,并通过典型系统进行验证。 四、本课题研究方案 1、确定一种计算方法,如牛顿-拉夫逊法。 2、结合C语言,编写一套适用的程序完成潮流计算。 3、选取一典型模型进行验证,试验程序是否可靠。 五、研究目标、主要特色及工作进度: 研究目标:提出一种合理高效的潮流计算算法,在保证电力系统供电可靠性和电能质量的前提下,尽可能提高潮流计算的效率,降低人力资源消耗。从而提高电力系统运行的经济性。进度安排: 第1周: 收集相关参考资料和相关文献。 第2周: 总结整理资料,熟习课题。 第3周: 提出初步设计方案。 第4周: 熟悉电力系统潮流计算的相关理论及计算机语言。 第5周: 实习 第6周: 写实习报告 第7周: 确定一种计算方法。 第8周: 提出一种合理的程序设计方法。 第9周: 画出设计程序整体流程图。 第10周: 将整体程序模块化,并定义出每个模块的功能。 六、参考文献: [1] Tankut Yalcinoz, Onur Ko¨ ksoy.A multiobjective optimization method to environmental economic diaspatch.2007,29(1):42-50 [2] X.S.Han,H.B.Gooi.Effective economic dispatch model and algorithm.Electrical Power and Energy Systems.2007, 29(1):113-120 [3] 何仰赞,温增银.电力系统分析.武汉:华中科技大学出版社,2002 [4] 王锡凡,方万良,杜正春.现代电力系统分析.北京:科学出版社,2003 [5] 宋文南,李树鸿,张尧.电力系统潮流计算.天津:天津大学出版社,1990 [6] 王晶,翁国庆,张有冰.电力系统的MATLAB6/SIMULINK仿真与应用.西安:西安电子科技大学出版社,2008.[7] 王祖佑.电力系统稳态运行计算机分析.北京:水利电力出版社,1987.[8] 周全仁,张清益.电网计算与程序设计.长沙:湖南科学技术出版社,1983.[9] 许主平,周少武,邹军安。电力系统计算机辅助设计。北京:中国电力出版社,2001。 南 京 理 工 大 学 《电力系统稳态分析》 课程报告 姓名 XX 学 号: 5*** 自动化学院 电气工程 基于牛顿-拉夫逊法的潮流计算例题编程报学院(系): 专 业: 题 目: 任课教师 硕士导师 告 杨伟 XX 2015年6月10号 基于牛顿-拉夫逊法的潮流计算例题编程报告 摘要:电力系统潮流计算的目的在于:确定电力系统的运行方式、检查系统中各元件是否过压或者过载、为电力系统继电保护的整定提供依据、为电力系统的稳定计算提供初值、为电力系统规划和经济运行提供分析的基础。潮流计算的计算机算法包含高斯—赛德尔迭代法、牛顿-拉夫逊法和P—Q分解法等,其中牛拉法计算原理较简单、计算过程也不复杂,而且由于人们引入泰勒级数和非线性代数方程等在算法里从而进一步提高了算法的收敛性和计算速度。同时基于MATLAB的计算机算法以双精度类型进行数据的存储和运算, 数据精确度高,能进行潮流计算中的各种矩阵运算,使得传统潮流计算方法更加优化。 一 研究内容 通过一道例题来认真分析牛顿-拉夫逊法的原理和方法(采用极坐标形式的牛拉法),同时掌握潮流计算计算机算法的相关知识,能看懂并初步使用MATLAB软件进行编程,培养自己电力系统潮流计算机算法编程能力。 例题如下:用牛顿-拉夫逊法计算下图所示系统的潮流分布,其中系统中5为平衡节点,节点5电压保持U=1.05为定值,其他四个节点分别为PQ节点,给定的注入功率如图所示。计算精度要求各节点电压修正量不大于10-6。 二 牛顿-拉夫逊法潮流计算 1 基本原理 牛顿法是取近似解x(k)之后,在这个基础上,找到比x(k)更接近的方程的根,一步步地迭代,找到尽可能接近方程根的近似根。牛顿迭代法其最大优点是在方程f(x)=0的单根附近时误差将呈平方减少,而且该法还可以用来求方程的重根、复根。电力系统潮流计算,一般来说,各个母线所供负荷的功率是已知的,各个节点的电压是未知的(平衡节点外)可以根据网络结构形成节点导纳矩阵,然后由节点导纳矩阵列写功率方程,由于功率方程里功率是已知的,电压的幅值和相角是未知的,这样潮流计算的问题就转化为求解非线性方程组的问题了。为了便于用迭代法解方程组,需要将上述功率方程改写成功率平衡方程,并对功率平衡方程求偏导,得出对应的雅可比矩阵,给未知节点赋电压初值,将初值带入功率平衡方程,得到功率不平衡量,这样由功率不平衡量、雅可比矩阵、节点电压不平衡量(未知的)构成了误差方程,解误差方程,得到节点电压不平衡量,节点电压加上节点电压不平衡量构成节点电压新的初值,将新的初值带入原来的功率平衡方程,并重新形成雅可比矩阵,然后计算新的电压不平衡量,这样不断迭代,不断修正,一般迭代三到五次就能收敛。2 基本步骤和设计流程图 形成了雅克比矩阵并建立了修正方程式,运用牛顿-拉夫逊法计算潮流的核心问题已经解决,已有可能列出基本计算步骤并编制流程图。由课本总结基本步骤如下: 1)形成节点导纳矩阵Y; 2)设各节点电压的初值,如果是直角坐标的话设电压的实部e和虚部f;如果是极坐标的话则设电压的幅值U和相角a; 3)将各个节点电压的初值代入公式求修正方程中的不平衡量以及修正方程的系数矩阵的雅克比矩阵; 4)解修正方程式,求各节点电压的变化量,即修正量; 5)计算各个节点电压的新值,即修正后的值; 6)利用新值从第(3)步开始进入下一次迭代,直至达到精度退出循环; 7)计算平衡节点的功率和线路功率,输出最后计算结果; ① 公式推导 ② 流程图 三 matlab编程代码 clear; % 如图所示1,2,3,4为PQ节点,5为平衡节点 y=0; % 输入原始数据,求节点导纳矩阵 y(1,2)=1/(0.07+0.21j); y(4,5)=0;y(1,3)=1/(0.06+0.18j); y(1,4)=1/(0.05+0.10j); y(1,5)=1/(0.04+0.12j); y(2,3)=1/(0.05+0.10j); y(2,5)=1/(0.08+0.24j); y(3,4)=1/(0.06+0.18j); for i=1:5 for j=i:5 y(j,i)=y(i,j); end end Y=0; % 求节点导纳矩阵中互导纳 for i=1:5 for j=1:5 if i~=j Y(i,j)=-y(i,j); end end end % 求节点导纳矩阵中自导纳 for i=1:5 Y(i,i)=sum(y(i,:)); end Y % Y为导纳矩阵 G=real(Y); B=imag(Y);% 输入原始节点的给定注入功率 S(1)=0.3+0.3j; S(2)=-0.5-0.15j; S(3)=-0.6-0.25j; S(4)=-0.7-0.2j; S(5)=0; P=real(S); Q=imag(S); % 赋初值,U为节点电压的幅值,a为节点电压的相位角 U=ones(1,5); U(5)=1.05; a=zeros(1,5); x1=ones(8,1); x2=ones(8,1); k=0; while max(x2)>1e-6 for i=1:4 for j=1:4 H(i,j)=0; N(i,j)=0; M(i,j)=0; L(i,j)=0; oP(i)=0; oQ(i)=0; end end % 求有功、无功功率不平衡量 for i=1:4 for j=1:5 oP(i)=oP(i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); oQ(i)=oQ(i)-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j))); end oP(i)=oP(i)+P(i); oQ(i)=oQ(i)+Q(i); end x2=[oP,oQ]'; % x2为不平衡量列向量 % 求雅克比矩阵 % 当i~=j时,求H,N,M,L for i=1:4 for j=1:4 if i~=j H(i,j)=-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j))); N(i,j)=-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); L(i,j)=H(i,j); M(i,j)=-N(i,j); end end end % 当i=j时,求H,N,M,L for i=1:4 for j=1:5 if i~=j H(i,i)=H(i,i)+U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)));N(i,i)=N(i,i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); M(i,i)=M(i,i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); L(i,i)=L(i,i)-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j))) end end N(i,i)=N(i,i)-2*(U(i))^2*G(i,i); L(i,i)=L(i,i)+2*(U(i))^2*B(i,i); end J=[H,N;M,L] % J为雅克比矩阵 x1=-((inv(J))*x2); % x1为所求△x的列向量 % 求节点电压新值,准备下一次迭代 for i=1:4 oa(i)=x1(i); oU(i)=x1(i+4)*U(i); end for i=1:4 a(i)=a(i)+oa(i); U(i)=U(i)+oU(i); end k=k+1; end k,U,a % 求节点注入功率 i=5; for j=1:5 P(i)=U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j)))+P(i); Q(i)=U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)))+Q(i); end S(5)=P(5)+Q(5)*sqrt(-1); S % 求节点注入电流 I=Y*U' 四 运行结果 节点导纳矩阵 经过五次迭代后的雅克比矩阵 迭代次数以及节点电压的幅值和相角(弧度数) 节点注入功率和电流 五 结果分析 在这次学习和实际操作过程里:首先,对电力系统分析中潮流计算的部分特别是潮流计算的计算机算法中的牛顿-拉夫逊法进行深入的研读,弄明白了其原理、计算过程、公式推导以及设计流程。牛顿-拉夫逊法是求解非线性方程的迭代过程,其计算公式为FJX,式中J为所求函数的雅可比矩阵;X为需要求的修正值;F为不平衡的列向量。利用x(*)=x(k+1)+X(k+1)进行多次迭代,通过迭代判据得到所需要的精度值即准确值x(*)。六 结论 通过这个任务,自己在matlab编程,潮流计算,word文档的编辑功能等方面均有提高,但也暴漏出一些问题:理论知识储备不足,对matlab的性能和特点还不能有一个全面的把握,对word软件也不是很熟练,相信通过以后的学习能弥补这些不足,达到一个新的层次。第四篇:潮流计算毕业论文
第五篇:电力系统潮流计算