潮流计算matlab程序
matlab潮流计算仿真方法
matlab潮流计算仿真方法
MATLAB 是一种强大的编程语言和环境,可用于执行各种仿真和计算任务,包括电力系统潮流计算。以下是一个简单的 MATLAB 潮流计算仿真方法的
示例:
1. 定义系统参数:首先,你需要定义电力系统的参数,如发电机、负荷、变压器等。这些参数通常包括额定电压、额定功率、电抗、电阻等。
2. 建立系统模型:使用这些参数,你可以在 MATLAB 中建立电力系统的模型。这通常涉及到定义节点和支路,以及为它们分配相应的参数。
3. 编写潮流计算函数:接下来,你需要编写一个用于执行潮流计算的函数。这个函数应该能够接收系统的模型和参数,并返回计算出的潮流结果,如电压、电流、功率等。
4. 运行仿真:最后,你可以运行仿真并调用你编写的潮流计算函数。这将返回计算出的潮流结果,你可以使用这些结果进行进一步的分析或可视化。
这只是一个简单的示例,实际上在编写 MATLAB 潮流计算仿真方法时可能
需要考虑更多因素,例如系统的约束条件、初始条件、迭代算法的收敛性等。
如果你需要具体的 MATLAB 代码示例或更详细的指导,我建议你查阅MATLAB 的官方文档或相关的教程和文献。
基于MATLAB的潮流计算源程序代码(优.选)
%*************************电力系统直角坐标系下的牛顿拉夫逊法潮流计算**********
clear
clc
load E:\data\IEEE014_Node.txt
Node=IEEE014_Node;
weishu=size(Node);
nnum=weishu(1,1); %节点总数
load E:\data\IEEE014_Branch.txt
branch=IEEE014_Branch;
bwei=size(branch);
bnum=bwei(1,1); %支路总数
Y=(zeros(nnum));
Sj=100;
%********************************节点导纳矩阵*******************************
for m=1:bnum;
s=branch(m,1); %首节点
e=branch(m,2); %末节点
R=branch(m,3); %支路电阻
X=branch(m,4); %支路电抗
B=branch(m,5); %支路对地电纳
k=branch(m,6);
if k==0 %无变压器支路情形
Y(s,e)=-1/(R+j*X); %互导纳
Y(e,s)=Y(s,e);
end
if k~=0 %有变压器支路情形
Y(s,e)=-(1/((R+j*X)*k));
Y(e,s)=Y(s,e);
Y(s,s)=-(1-k)/((R+j*X)*k^2);
Y(e,e)=-(k-1)/((R+j*X)*k); %对地导纳
end
Y(s,s)=Y(s,s)-j*B/2;
电力系统潮流计算matlab程序
电力系统潮流计算matlab程序电力系统潮流计算是电力系统运行和规划中的重要环节,它用于计
算电力系统中各节点的电压、功率和电流等参数。随着电力系统规模
的不断扩大和复杂性的增加,传统的手工计算方法已经无法满足需求,因此,利用计算机编程进行潮流计算成为了一种必要的选择。
Matlab是一种功能强大的科学计算软件,它提供了丰富的数学函数
和工具箱,可以方便地进行电力系统潮流计算。下面我将介绍一下如
何使用Matlab编写电力系统潮流计算程序。
首先,我们需要建立电力系统的节点模型。节点模型是电力系统中
各节点的电压、功率和电流等参数的数学表示。在Matlab中,我们可
以使用矩阵来表示节点模型。假设电力系统有n个节点,我们可以定
义一个n×n的复数矩阵Y来表示节点之间的导纳关系,其中Y(i,j)表示
节点i和节点j之间的导纳。同时,我们还需要定义一个n×1的复数向
量V来表示各节点的电压,其中V(i)表示节点i的电压。
接下来,我们需要编写潮流计算的主程序。主程序的主要功能是根
据节点模型和潮流计算算法,计算出各节点的电压、功率和电流等参数。在Matlab中,我们可以使用循环语句和矩阵运算来实现潮流计算。具体的计算过程可以参考电力系统潮流计算的算法。
在编写主程序之前,我们还需要定义一些输入参数,如电力系统的
节点数、发电机节点和负荷节点等。这些参数可以通过用户输入或者
读取文件的方式获取。同时,我们还需要定义一些输出参数,如各节
点的电压、功率和电流等。这些参数可以通过矩阵运算和循环语句计算得到,并输出到文件或者显示在屏幕上。
潮流计算matlab程序
clear;
%各节点参数:节点编号,类型,电压幅值,电压相位,注入有功,注入无功%类型:1=PQ节点,2=PV节点,3=平衡节点
%本程序中将最后一个节点设为平衡节点
R_1=[1 1 1.0 0 0.2 0.2j;
2 1 1.0 0 -0.45 -0.15j;
3 1 1.0 0 -0.45 -0.05j;
4 1 1.0 0 -0.6 -0.1j;
5 3 1.0 0 0 0];
%支路号首端节点末端节点支路导纳
R_2=[1 5 2 1.25-3.75j;
2 2
3 10.00-30.00j;
3 3
4 1.25-3.75j;
4 1 4 2.50-7.50j;
5 1 5 5.00-15.00j;
6 1 2 1.667-5.00j];
n=5;L=6;%需要改变的到此为止
i=0;j=0;a=0;precision=1;k=0;
Y=zeros(n,n);u=zeros(1,n);delt=zeros(1,n);P=zeros(1,n);Q=zeros(1,n);
G=[];B=[];PP=[];uu=[];U=[];dp=[];dq=[];
for a=1:L
i=R_2(a,2);
j=R_2(a,3);
Y(i,j)=-R_2(a,4);
Y(j,i)=Y(i,j);
end
for a=1:n
for b=1:n
if a~=b
Y(a,a)=Y(a,a)+Y(a,b);
end
end
end
for i=1:n
for j=1:n
if i==j
Y(i,j)=-Y(i,j);
end
end
end
Y %形成导纳矩阵
for i=1:n
电力系统潮流计算牛顿拉夫迅法与PQ分解法通用MATLAB计算程序
此程序经40余同学使用检验,无误。
这是一个电气狗熬两个礼拜图书馆的成果,根据华中科技大学《电力系统分析》中原理编写,可用牛顿-拉夫逊和PQ分解法计算给定标幺值条件的潮流。本人水平有限,仅供参考,欢迎一起找Bug。
2018/07/06 说明:由于本人变压器建模与PSASP不同,本人使用模型如下图,参数输入时请按该模型计算。
2018/06/18 主程序更新:增加补偿电容参数
主程序
% file name:chaoliu_lj.m
% auther: 山东科技大学罗江
% function:使用牛顿-拉夫逊法、PQ分解法计算潮流
% updata:2018/6/18 13:22 增加补偿电容参数
%节点类型标号
%PQ节点 1
%PV节点 2
%slack节点 3
%能计算给定标幺值网络,有且仅有一个平衡节点的潮流
%注意:母线标号顺序要求:PQ节点-PV节点-平衡节点
%若某元件不存在,其导纳为0,阻抗为inf
clear %清除工作空间变量
clc %清屏%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%
%数据输入(标幺值)
SB=100; %基准容量,单位MVA
%母线基准电压
Bus=[115 10.5 115 115];
%交流线参数:I侧母线J侧母线阻抗1/2接地导纳
Line=[4 1 0.06125+0.09527i 0;
4 3 0.08469+0.12703i 0;
1 3 0.13989+0.15501i 0];
%变压器参数:I侧母线J侧母线阻抗变比%变压器阻抗归算到I侧
基于MATLAB进行潮流计算
基于MATLAB进行潮流计算
本文介绍了基于MATLAB软件的潮流计算方法。电力系统潮流计算方法分为手算潮流和计算机潮流计算两类。手算潮流主要适用于规模较小的辐射型电力潮流计算,而计算机潮流计算有两种途径:编程实现网络方程的迭代求解和借助电力系统分析仿真软件搭建系统模型完成潮流计算。MATLAB具有强大的矩阵运算功能和电力系统仿真平台,可以为实现潮流计算提供更便捷的手段。本文采用极坐标形式牛顿─拉夫逊法进行潮流计算,为其他形式的潮流计算提供借鉴。
Abstract: The power flow n method can be divided into two categories: hand n of tidal current and computer power flow XXX simplified equivalent circuits。making it XXX: programming XXX ns。or using power system XXX system model for power flow n。MATLAB are has strong matrix ns and its power system XXX-Raphson method of power flow n in polar coordinates with MATLAB are。and can serve as a reference for other forms of power flow n.
matlab潮流计算
附录1
使用牛顿拉夫逊法进行潮流计算的Matlab程序代码
% 牛拉法计算潮流程序
%-----------------------------------------------------------------------
% B1矩阵:1、支路首端号;2、末端号;3、支路阻抗;4、支路对地电纳
% 5、支路的变比;6、支路首端处于K侧为1,1侧为0
% B2矩阵:1、该节点发电机功率;2、该节点负荷功率;3、节点电压初始值
% 4、PV节点电压V的给定值;5、节点所接的无功补偿设备的容量
% 6、节点分类标号:1为平衡节点(应为1号节点);2为PQ节点;3为PV节点;
%------------------------------------------------------------------------
clear all;
format long;
n=input('请输入节点数:nodes=');
nl=input('请输入支路数:lines=');
isb=input('请输入平衡母线节点号:balance=');
pr=input('请输入误差精度:precision=');
B1=input('请输入由各支路参数形成的矩阵:B1=');
B2=input('请输入各节点参数形成的矩阵:B2=');
Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);sida=zeros(1,n);S1=zeros(nl); %------------------------------------------------------------------
潮流计算(matlab)实例计算
潮流计算(matlab)实例计算
潮流例题:根据给定的参数或工程具体要求(如图)
本设计选择Matlab 进行设计)。
2.在给定的电力网络上画出等值电路图。
3.运用计算机进行潮流计算。
4.编写设计说明书。
一、设计原理
1.牛顿- 拉夫逊原理
牛顿迭代法是取x0 之后,在这个基础上,找到比x0 更接近的方程的跟,一步一步迭代,从而找到
更接近方程根的近似跟。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0 的单根
附
近具有平方收敛,而且该法还可以用来求方程的重根、复根。电力系统潮流计算,一般来说,各个母线所供负荷的功率是已知的,各个节点电压是未知的(平衡节点外)可以根据网络结构形成节点导纳矩阵,然后由节点导纳矩阵列写功率方程,由于功率方程里功率是已知的,电压的幅值和相角是未知的,这样潮流计算的问题就转化为求解非线性方程组的问题了。为了便于用迭代法解方程组,需要将上述功率方程改写成功率平衡方程,并对功率平衡方程求偏导,得出对应的雅可比矩阵,给未知节点赋电压初值,一般为额定电压,将初值带入功率平衡方程,得到功率不平衡量,这样由功率不平衡量、雅可比矩阵、节点电压不
,收集和查阅资料;学习相关软件(软件自选:
潮流计算(matlab)实例计算
平衡量(未知的)构成了误差方程,解误差方程,得到节点电压不平衡量,节点电压加上节点电压不平衡量构成新的节点电压初值,将新的初值带入原来的功率平衡方程,并重新形成雅可比矩阵,然后计算新的电压不平衡量,这样不断迭代,不断修正,一般迭代三到五次就能收敛。
Matlab实现潮流计算程序
程序代码如下:
111111.
%读入数据
clc
clear
filename='123.txt';
a=textread(filename)
n=a(1,1);
pinghengjd=a(1,2);
phjddianya=a(1,3);
jingdu=a(1,4);
b=zeros(1,9);
j1=0;
[m1,n1]=size(a);
for i1=1:m1
if a(i1,1)==0
j1=j1+1;
b(j1)=i1;
end
end
b;
%矩阵分块
a1=a(b(1)+1:b(2)-b(1)+1,1:n1);
a2=a(b(2)+1:b(3)-1,1:n1);
a3=a(b(3)+1:b(4)-1,1:n1);
a4=a(b(4)+1:b(5)-1,1:n1);
a5=a(b(5)+1:b(6)-1,1:n1);
%设置初值
vcz=1;
dcz=0;
kmax=20;
k1=0;
%求节点导纳矩阵
a11=zeros(4,6);
for i0=1:3
for j0=1:6
a11(i0,j0)=a1(i0,j0);
a11(4,j0)=a2(1,j0);
end
end
a11;
linei=a11(1:4,2);
linej=a11(1:4,3);
liner=a11(1:4,4);
linex=a11(1:4,5);
lineb=a11(1:4,6);
branchi=0;
branchj=0;
branchb=0;
G=zeros(4,4);
B=zeros(4,4);
for k=1:4
i2=linei(k,1);
j2=linej(k,1);
r=liner(k,1);
基于MATLAB进行潮流计算
基于MATLAB进行潮流计算
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(基于MATLAB进行潮流计算)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为基于MATLAB进行潮流计算的全部内容。
基于MATLAB 进行潮流计算
学生:王仕龙 2011148213
指导老师:李咸善
摘要:电力系统潮流计算方法有两类,即手算潮流和计算机潮流计算。手算潮流主要借助于形成简化的等值电路来实现,这种方法尤其适用于规模不大的辐射型电力潮流计算.计算机潮流计算的实现有两种途径:其一是编程实现网络方程的迭代求解;其二是借助与电力系统分析仿真软件,搭建系统模型来完成潮流计算。MATLAB 具有强大的矩阵运算功能,同时其具有
电力系统仿真平台也为直观地实现潮流计算提供了更便捷的手段[1]
。本文是基于MATLAB 软件,采用极坐标形式牛顿─拉夫逊法进行潮流计算,为其他形式的潮流计算有借鉴的作用。
关键词: 电力系统;计算机潮流计算 ;MATLAB ;牛顿─拉夫逊法
Abstract:The power flow calculation method has two kinds ,which are the hand calculation of tidal current and computer power flow calculation.Hand calculation tidal current is mainly realized by means of the formation of simplified equivalent circuit 。This method is especially suitable for small scale radiation power flow calculation 。There are two ways to realize the computer power flow calculation 。The first one is through the programming iteration for solving network equation,the second one is with the help of analysis of power system simulation software to build the system model complete the power flow calculation 。The software of MATLAB has strong matrix function ,.At the same time ,It's power system simulation platform provides a more convenient means to realize power flow calculation intuitively [1].This paper is based on the software of MATLAB to calculate the power flow calculation by adopting the form of Newton-Raphson method of power flow calculation of polar coordinates.And it can be the role of reference of other forms of power flow calculation 。
matlab电力系统潮流计算程序
matlab电力系统潮流计算程序
电力系统潮流计算是电力系统分析的关键步骤之一,用于确定电力系统各节点的电压和相角分布。以下是一个简单的MATLAB电力系统潮流计算的基本步骤和代码示例:
1.定义电力系统参数:
-定义系统节点数量、支路数据、发电机数据、负荷数据等电力系统参数。
```matlab
%电力系统参数
busdata=[1,1.05,0,0,0,0,0,0;
2,1.02,0,0,0,0,0,0;
%...其他节点数据
];
linedata=[1,2,0.02,0.06,0.03;
%...其他支路数据
];
gendata=[1,2,100,0,999,1.05,0.95;
%...其他发电机数据
];
loaddata=[1,50,20;
%...其他负荷数据
];
```
2.构建潮流计算矩阵:
-利用节点支路导纳、节点负荷和发电机功率等信息构建潮流计算的阻抗矩阵。
```matlab
Ybus=buildYbus(busdata,linedata);
```
3.迭代求解潮流方程:
-利用迭代算法(如牛顿-拉夫森法)求解潮流方程,更新节点电压和相角。
```matlab
[V,delta]=powerflow(Ybus,gendata,loaddata,busdata);
```
4.结果分析和可视化:
-分析计算结果,可视化电压和相角分布。
```matlab
plotVoltageProfile(busdata,V,delta);
```
这只是一个简单的潮流计算示例。具体的程序实现可能涉及更复杂的算法和工程细节,取决于电力系统的复杂性和精确性要求。您可能需要根据实际情况和数据格式进行调整和改进。在实际工程中,也可以考虑使用专业的电力系统仿真软件。
潮流计算方法
Qi Lii Vi Vi V j (Gij sin ij Bij cos ij ) 2Vi 2 Bii Vi 2 Bii Qi ji i j i
直流潮流与牛拉法的结合
1.通过直流潮流计算各节点的相角。 2.将结果作为牛拉法初值进行计算。
形成导纳矩阵
Leabharlann Baidu
2.对角线元素: for n=1:nbus for k=1:nbr if n1(k)==n Y(n,n) = Y(n,n)+Y1(k)/(a(k)^2) + Bc(k); elseif n2(k)==n Y(n,n) = Y(n,n)+Y1(k) +Bc(k); else, end end end
潮流计算方法 —计算机算法
————
需求分析:
使用MATLAB软件计算美国电气服务公司 IEEE30节点系统(图见课本P136页图6.16) 各节点的电压幅值和相角的潮流分布,并比较 各种算法的优劣。
总体思路:
1.直接使用“牛顿——拉夫逊”法,通过图像 显示每次迭代后的误差并记录程序运行时间。 2.直接使用“PQ分解法”,通过图像显示每次 迭代后的误差并记录程序运行时间。 3.首先使用直流潮流计算,计算各节点电压的 相角,并将计算结果作为 “牛顿——拉夫逊” 法的初值,通过图像显示每次迭代后的误差并 记录程序运行时间。
MATPOWER潮流计算使用说明
MATPOWER潮流计算使用说明
一、MATPOWER安装和加载数据
2.打开MATLAB软件,并在命令行上输入以下命令来加载MATPOWER软
件包:
```matlab
addpath(genpath('<MATPOWER安装路径>'))
```
注意,需要将`"<MATPOWER安装路径>"`替换为你的MATPOWER软件的
安装路径。
3.加载示例数据集。MATPOWER提供了一些示例数据集,可以直接使
用这些数据集进行潮流计算。
```matlab
case9
```
这将加载一个名为`case9`的数据集,它包含一个9节点的电力系统。
二、设置潮流计算参数
在进行潮流计算之前,需要设置一些潮流计算的参数,包括:
1.潮流计算算法:MATPOWER提供了不同的潮流计算算法,如牛顿-拉
夫逊法(NR)和次梯度法(SC)等。可以使用以下命令来设置潮流计算算法:
mpopt = mpoption('pf.alg', '<算法名称>')
```
这里`<算法名称>`可以是`'NR'`或`'SC'`。
2.潮流计算收敛条件:通过设置收敛条件,可以控制潮流计算的准确性和计算时间。以下是一些设置收敛条件的命令:
```matlab
mpopt = mpoption(mpopt, 'pf.tol', <收敛容限>)
```
这里`<收敛容限>`是一个小的正数,用于判断潮流计算是否收敛。默认值为1e-6
```matlab
mpopt = mpoption(mpopt, 'pf.nr.max_it', <最大迭代次数>)
MATpower潮流计算软件的使用
MATpower潮流计算软件的使⽤
MATpower软件的使⽤
⼀、MATpower软件的使⽤⽅法
在MATLAB软件中的命令窗⼝输⼊runpf(‘程序名’)就可以通过MATpower 已经编好的程序计算潮流,⽽函数runpf的参数是相应需计算潮流的数据⽂件。
数据⽂件主要⽤来定义和返回⼀下四个变量。
1、baseMVAbaseMVA是⼀个标量,⽤来设置基准容量。对于计算中采⽤有
名值,可以根据实际情况设置,如设置100MV A;对于计算中采⽤标⼳
值,⼀般设置为1
2、busbus变量是⼀个矩阵,⽤来设置电⽹中各节点参数,该矩阵内的参数
如下:
%% bus data
% bus_i type P d Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
其中,第1列参数即bus_i⽤来设置母线编号,范围为1~29997;第2列参数type⽤来设置母线类型,1为PQ节点,2为PV节点,3为平
衡节点;第3列参数Pd⽤来设置母线注⼊负荷的有功功率;第4列参
数Qd⽤来设置母线注⼊负荷的⽆功功率;第5列参数Gs⽤来设置与母
线并联的电导;第6列参数Bs⽤来设置与母线并联的电纳;第7列参数
area⽤来设置电⽹断⾯号,可设置范围为1~100,⼀般设置为1;第8
列参数Vm⽤来设置母线电压的幅值初值;第9列参数Va⽤来设置母线
电压的相⾓初值;第10列参数baseKV⽤来设置该母线的基准电压;第
11列参数zone⽤来设置省耗分区号,可设置范围为1~999,⼀般设置为
1;第12列参数Vmax⽤来设置⼯作时母线电压最⾼幅值;第13列参数
matlab潮流计算
使用牛顿拉夫逊法进行潮流计算的 Matlab 程序代码
% 牛拉法计算潮流程序
% ----------------------------------------------------------------------
% B1 矩阵: 1、支路首端号; 2、末端号; 3、支路阻抗; 4、支路对地电纳 % 5、支路的变比; 6、支路首端处于 K 侧为 1, 1 侧为 0
% B2 矩阵: 1、该节点发电机功率; 2、该节点负荷功率; 3、节点电压初始值 % 4、 PV 节点电压 V 的给定值; 5、节点所接的无功补偿设备的容量 % 6、节点分类标号: 1 为平衡节点(应为 1 号节点); 2 为 PQ 节点; 3 为 PV 节点;
% ---------------------------------------------------------------------- clear all;
format long;
n=input(' 请输入节点数 :nodes='); nl=input(' 请输入支路数 :lines=');
isb=input(' 请输入平衡母线节点号 :balance='); pr=input(' 请输入误差精度 :precision='); B1=input(' 请输入由各支路参数形成的矩阵 :B1='); B2=input(' 请输入各节点参数形成的矩阵 :B2=');
Y=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);sida=zeros(1,n);S1=zeros(nl); % for i=1:nl if B1(i,6)==0 p=B1(i,1);q=B1(i,2); else
matlab潮流计算
jds=IEEE(1,1);%节点数
phjdh=IEEE(1,2);%平衡节点号
phv=IEEE(1,3);%平衡节点电压
jd=IEEE(1,4);%精度
IN=size(IEEE);
aa=0;
ln=1;
for li=3:IN(1)
%读取线路参数
if IEEE(li,1)>0
Line(ln,:)=IEEE(li,:); ln=ln+1;
end
if IEEE(li,1)==0
break
end
end
LI=li;
%读取变压器参数
cn=1;
for ci=LI+1:IN(1)
if IEEE(LI+1,1)==0
trans=0;
end
if IEEE(ci,1)>0
trans(cn,:)=IEEE(ci,:); cn=cn+1;
end
if IEEE(ci,1)==0
break
end
end
if ci==LI+1
CI=ci+1;
else CI=ci;
end
%接地支路数
jdn=1;
for jdi=CI+1:IN(1)
if IEEE(CI+1,1)==0
jdzls=0;
end
if IEEE(jdi,1)>0
jdzls(jdn,:)=IEEE(jdi,:);
jdn=jdn+1;
end
if IEEE(jdi,1)==0
break
end
end
if jdi==CI+1
JDI=jdi+1;
else JDI=jdi;
end
%读取节点功率数据
ppn=1;
for ppi=JDI+1:IN(1)
if IEEE(ppi,1)>0
jdgl(ppn,:)=IEEE(ppi,:);
ppn=ppn+1;
end
if IEEE(ppi,1)==0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
clear;
%各节点参数:节点编号,类型,电压幅值,电压相位,注入有功,注入无功%类型:1=PQ节点,2=PV节点,3=平衡节点
%本程序中将最后一个节点设为平衡节点
R_1=[1 1 1.0 0 0.2 0.2j;
2 1 1.0 0 -0.45 -0.15j;
3 1 1.0 0 -0.45 -0.05j;
4 1 1.0 0 -0.6 -0.1j;
5 3 1.0 0 0 0];
%支路号首端节点末端节点支路导纳
R_2=[1 5 2 1.25-3.75j;
2 2
3 10.00-30.00j;
3 3
4 1.25-3.75j;
4 1 4 2.50-7.50j;
5 1 5 5.00-15.00j;
6 1 2 1.667-5.00j];
n=5;L=6;%需要改变的到此为止
i=0;j=0;a=0;precision=1;k=0;
Y=zeros(n,n);u=zeros(1,n);delt=zeros(1,n);P=zeros(1,n);Q=zeros(1,n);
G=[];B=[];PP=[];uu=[];U=[];dp=[];dq=[];
for a=1:L
i=R_2(a,2);
j=R_2(a,3);
Y(i,j)=-R_2(a,4);
Y(j,i)=Y(i,j);
end
for a=1:n
for b=1:n
if a~=b
Y(a,a)=Y(a,a)+Y(a,b);
end
end
end
for i=1:n
for j=1:n
if i==j
Y(i,j)=-Y(i,j);
end
end
end
Y %形成导纳矩阵
for i=1:n
for j=1:n
G(i,j)=real(Y(i,j));
B(i,j)=imag(Y(i,j));
end
end
for a=1:n
u(a)=R_1(a,3);
P(a)=R_1(a,5);
Q(a)=R_1(a,6);
delt(a)=R_1(a,4);
end
while precision>0.0001 %判断是否满足精度要求
for a=1:n-1
for b=1:n
pt(b)=u(a)*u(b)*(G(a,b)*cos(delt(a)-delt(b))+B(a,b)*sin(delt(a)-delt(b)));
qt(b)=u(a)*u(b)*(G(a,b)*sin(delt(a)-delt(b))-B(a,b)*cos(delt(a)-delt(b))); end
pt,qt
pi(a)=sum(pt);qi(a)=sum(qt); %计算PQ节点的注入功率
dp(a)=P(a)-pi(a);
dq(a)=Q(a)-qi(a); %计算PQ节点的功率不平衡量
end
for a=1:n-1
for b=1:n-1
if a==b
H(a,a)=-qi(a)-u(a)^2*B(a,a); N(a,a)=pi(a)+u(a)^2*G(a,a);
J(a,a)=pi(a)-u(a)^2*G(a,a); L(a,a)=qi(a)-u(a)^2*B(a,a);
JJ(2*a-1,2*a-1)=H(a,a); JJ(2*a-1,2*a)=N(a,a);
JJ(2*a,2*a-1)=J(a,a); JJ(2*a,2*a)=L(a,a);
else
H(a,b)=u(a)*u(b)*(G(a,b)*sin(delt(a)-delt(b))-B(a,b)*cos(delt(a)-delt(b)));
J(a,b)=-u(a)*u(b)*(G(a,b)*cos(delt(a)-delt(b))+B(a,b)*sin(delt(a)-delt(b)));
N(a,b)=-J(a,b);L(a,b)=H(a,b);
JJ(2*a-1,2*b-1)=H(a,b);JJ(2*a-1,2*b)=N(a,b);
JJ(2*a,2*b-1)=J(a,b); JJ(2*a,2*b)=L(a,b);
end
end
end %计算jocbi各项,并放入统一矩阵JJ中,对JJ下标统一编号
JJ
for a=1:n-1
PP(2*a-1)=dp(a);
PP(2*a)=dq(a);
end %按统一矩阵形成功率不平衡
uu=inv(JJ)*PP';precision=max(abs(uu)); %判断是否收敛
for b=1:n-1
delt(b)=delt(b)+uu(2*b-1);
u(b)=u(b)+uu(2*b)*u(b); %将结果分解为电压幅值和角度
end %求解修正方程,得电压幅值变化量(标幺值)和角度变化量k=k+1;
end
for a=1:n
U(a)=u(a)*(cos(delt(a))+j*sin(delt(a)));
end
for b=1:n
I(b)=Y(n,b)*U(b);%求平衡节点的注入电流
end
S5=U(n)*sum(conj(I))%求平衡节点的注入功率
for a=1:n
for b=1:n
S(a,b)=U(a)*(conj(U(a))-conj(U(b)))*conj(-Y(a,b));
end
end %求节点i,j节点之间的功率,方向为由i指向j,
S %显示支路功率