编程计算潮流
㈠ 如何用matlab分析潮流计算
一、课程设计的目的与要求 目的:培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识 要求:基本要求: 1.编写潮流计算程序; 2.在计算机上调试通过; 3.运行程序并计算出正确结果; 4.写出课程设计报告 二、设计步骤: 1.根据给定的参数或工程具体要求(如图),收集和查阅资料;学习相关软件(软件自选:本设计选择Matlab进行设计)。
2.在给定的电力网络上画出等值电路图。 3.运用计算机进行潮流计算。 4.编写设计说明书。 三、设计原理 1. 牛顿-拉夫逊原理 牛顿迭代法是取x0 之后,在这个基础上,找到比x0 更接近的方程的跟,一步一步迭代,从而找到更接近方程根的近似跟。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0 的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。电力系统潮流计算,一般来说,各个母线所供负荷的功率是已知的,各个节点电压是未知的(平衡节点外)可以根据网络结构形成节点导纳矩阵,然后由节点导纳矩阵列写功率方程,由于功率方程里功率是已知的,电压的幅值和相角是未知的,这样潮流计算的问题就转化为求解非线性方程组的问题了。为了便于用迭代法解方程组,需要将上述功率方程改写成功率平衡方程,并对功率平衡方程求偏导,得出对应的雅可比矩阵,给未知节点赋电压初值,一般为额
课程设计报告
2 定电压,将初值带入功率平衡方程,得到功率不平衡量,这样由功率不平衡量、雅可比矩阵、节点电压不平衡量(未知的)构成了误差方程,解误差方程,得到节点电压不平衡量,节点电压加上节点电压不平衡量构成新的节点电压初值,将新的初值带入原来的功率平衡方程,并重新形成雅可比矩阵,然后计算新的电压不平衡量,这样不断迭代,不断修正,一般迭代三到五次就能收敛。 牛顿—拉夫逊迭代法的一般步骤: (1)形成各节点导纳矩阵Y。 (2)设个节点电压的初始值U和相角初始值e 还有迭代次数初值为0。 (3)计算各个节点的功率不平衡量。 (4)根据收敛条件判断是否满足,若不满足则向下进行。 (5)计算雅可比矩阵中的各元素。 (6)修正方程式个节点电压 (7)利用新值自第(3)步开始进入下一次迭代,直至达到精度退出循环。 (8)计算平衡节点输出功率和各线路功率 2. 网络节点的优化 1)静态地按最少出线支路数编号 这种方法由称为静态优化法。在编号以前。首先统计电力网络个节点的出线支路数,然后,按 出线支路数有少到多的节点顺序编号。当由n 个节点的出线支路相同时,则可以按任意次序对这n 个节点进行编号。这种编号方法的根据是导纳矩阵中,出线支路数最少的节点所对应的行中非零元素也 2)动态地按增加出线支路数最少编号在上述的方法中,各节点的出线支路数是按原始网络统计出 来的,在编号过程中认为固定不变的,事实上,在节点消去过程中,每消去一个节点以后,与该节点相连的各节点的出线支路数将发生变化(增加,减少或保持不变)。因此,如果每消去一个节点后,立即修正尚未编号节点的出线支路数,然后选其中支路数最少的一个节点进行编号,就可以预期得到更好的效果,动态按最少出线支路数编号方法的特点就是按出线最少原则编号时考虑了消去过程中各节点出线支路数目的变动情况。 3. MATLAB编程应用 Matlab 是“Matrix Laboratory”的缩写,主要包括:一般数值分析,矩阵运算、数字信号处理、建模、系统控制、优化和图形显示等应用程序。由于使用Matlab 编程运算与人进行科学计算的思路和表达方式完全一致,所以不像学习高级语言那样难于掌握,而且编程效率和计算效率极高,还可在计算机上直接输出结果和精美的图形拷贝,所以它的确为一高效的科研助手。
㈡ 题号:72编程计算潮流(电力系统分析)
n=5;
nl=5;
isb=1;
pr=0.00001;
B1=[120.03i01.050;230.08+0.3i0.5i10;240.1+0.35i010;340.04+0.25i0.5i10;350.015i01.051];
B2=[001.051.0501;03.7+1.3i1.05002;02+1i1.05002;01.6+0.8i1.05002;501.051.0503];
X=[10;20;30;40;50];
na=3;
Y=zeros(n);YI=zeros(n);e=zeros(1,n);f=zeros(1,n);V=zeros(1,n);O=zeros(1,n);
fori=1:n
ifX(i,2)~=0;
p=X(i,1);
Y(p,p)=1./X(i,2);
end
end
fori=1:nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=B1(i,2);q=B1(i,1);
end
Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));
YI(p,q)=YI(p,q)-1./B1(i,3);
Y(q,p)=Y(p,q);
YI(q,p)=YI(p,q);
Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;
YI(q,q)=YI(q,q)+1./B1(i,3);
Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;
YI(p,p)=YI(p,p)+1./B1(i,3);
end
G=real(Y);B=imag(YI);BI=imag(Y);
fori=1:n
S(i)=B2(i,1)-B2(i,2);
BI(i,i)=BI(i,i)+B2(i,5);
end
P=real(S);Q=imag(S);
fori=1:n
e(i)=real(B2(i,3));
f(i)=imag(B2(i,3));
V(i)=B2(i,4);
end
fori=1:n
ifB2(i,6)==2
V(i)=sqrt(e(i)^2+f(i)^2);
O(i)=atan(f(i)./e(i));
end
end
fori=2:n
ifi==n
B(i,i)=1./B(i,i);
elseIC1=i+1;
forj1=IC1:n
B(i,j1)=B(i,j1)./B(i,i);
end
B(i,i)=1./B(i,i);
fork=i+1:n
forj1=i+1:n
B(k,j1)=B(k,j1)-B(k,i)*B(i,j1);
end
end
end
end
p=0;q=0;
fori=1:n
ifB2(i,6)==2
p=p+1;k=0;
forj1=1:n
ifB2(j1,6)==2
k=k+1;
A(p,k)=BI(i,j1);
end
end
end
end
fori=1:na
ifi==na
A(i,i)=1./A(i,i);
elsek=i+1;
forj1=k:na
A(i,j1)=A(i,j1)./A(i,i);
end
A(i,i)=1./A(i,i);
fork=i+1:na
forj1=i+1:na
A(k,j1)=A(k,j1)-A(k,i)*A(i,j1);
end
end
end
end
ICT2=1;ICT1=0;kp=1;kq=1;K=1;DET=0;ICT3=1;
whileICT2~=0|ICT3~=0
ICT2=0;ICT3=0;
fori=1:n
ifi~=isb
C(i)=0;
fork=1:n
C(i)=C(i)+V(k)*(G(i,k)*cos(O(i)-O(k))+BI(i,k)*sin(O(i)-O(k)));
end
DP1(i)=P(i)-V(i)*C(i);
DP(i)=DP1(i)./V(i);
DET=abs(DP1(i));
ifDET>=pr
ICT2=ICT2+1;
end
end
end
Np(K)=ICT2;
ifICT2~=0
fori=2:n
DP(i)=B(i,i)*DP(i);
ifi~=n
IC1=i+1;
fork=IC1:n
DP(k)=DP(k)-B(k,i)*DP(i);
end
else
forLZ=3:i
L=i+3-LZ;
IC4=L-1;
forMZ=2:IC4
I=IC4+2-MZ;
DP(I)=DP(I)-B(I,L)*DP(L);
end
end
end
end
fori=2:n
O(i)=O(i)-DP(i);
end
kq=1;L=0;
fori=1:n
ifB2(i,6)==2
C(i)=0;L=L+1;
fork=1:n
C(i)=C(i)+V(k)*(G(i,k)*sin(O(i)-O(k))-BI(i,k)*cos(O(i)-O(k)));
end
DQ1(i)=Q(i)-V(i)*C(i);
DQ(L)=DQ1(i)./V(i);
DET=abs(DQ1(i));
ifDET>=pr
ICT3=ICT3+1;
end
end
end
elsekp=0;
ifkq~=0;
L=0;
fori=1:n
ifB2(i,6)==2
C(i)=0;L=L+1;
fork=1:n
C(i)=C(i)+V(k)*(G(i,k)*sin(O(i)-O(k))-BI(i,k)*cos(O(i)-O(k)));
end
DQ1(i)=Q(i)-V(i)*C(i);
DQ(L)=DQ1(i)./V(i);
DET=abs(DQ1(i));
end
end
end
end
Nq(K)=ICT3;
ifICT3~=0
L=0;
fori=1:na
DQ(i)=A(i,i)*DQ(i);
ifi==na
forLZ=2:i
L=i+2-LZ;
IC4=L-1;
forMZ=1:IC4
I=IC4+1-MZ;
DQ(I)=DQ(I)-A(I,L)*DQ(L);
end
end
else
IC1=i+1;
fork=IC1:na
DQ(k)=DQ(k)-A(k,i)*DQ(i);
end
end
end
L=0;
fori=1:n
ifB2(i,6)==2
L=L+1;
V(i)=V(i)-DQ(L);
end
end
kp=1;
K=K+1;
else
kq=0;
ifkp~=0
K=K+1;
end
end
fori=1:n
Dy(K-1,i)=V(i);
end
end
disp('迭代次数')
disp(K);
disp('每次没有达到精度要求的有功功率个数为');
disp(Np);
disp('每次没有达到精度要求的无功功率个数为');
disp(Nq);
fork=1:n
E(k)=V(k)*cos(O(k))+V(k)*sin(O(k))*j;
O(k)=O(k)*180./pi;
end
disp('各节点的电压标么值E为');
disp(E);
disp('各节点的电压V大小');
disp(V);
disp('各节点的电压相角O');
disp(O);
forp=1:n
C(p)=0;
forq=1:n
C(p)=C(p)+conj(Y(p,q))*conj(E(q));
end
S(p)=E(p)*C(p);
end
disp('各节点的功率为');
disp(S);
disp('各条支路的首端功率为');
fori=1:nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=B1(i,2);q=B1(i,1);
end
Si(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*conj(1./(B1(i,3)*B1(i,5))));
disp(Si(p,q));
end
disp('各条支路的末端功率为');
fori=1:nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=B1(i,2);q=B1(i,1);
end
Sj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)./B1(i,5))-conj(E(p)))*conj(1./(B1(i,3)*B1(i,5))));
disp(Sj(q,p));
end
disp('各条支路的功率损耗为');
fori=1:nl
ifB1(i,6)==0
p=B1(i,1);q=B1(i,2);
elsep=B1(i,2);q=B1(i,1);
end
DS(i)=Si(p,q)+Sj(q,p);
disp(DS(i));
end
fori=1:K
Cs(i)=i;
forj=1:n
Dy(K,j)=Dy(K-1,j);
end
end
disp('每次迭代后各节点的电压值如图所示');
plot(Cs,Dy)
xlabel('迭代次数')
ylabel('电压')
title('电压迭代次数曲线');
㈢ 电力系统上机潮流计算程序
已发送,望采纳
㈣ MATLAB简单潮流计算程序
MATLAB简单潮流计算程序如下:
function lianxuchaoliu
clear;
clc;
n=9;%节点数;
nl=9;%支路数;
isb=1;%平衡节点号;
pr=0.00001;%误差精度;
㈤ 怎么用MATLAB编程高斯赛德尔迭代法,主要是解决潮流问题
...找很久了 我也是课设的内容 但软件没学过 这两天正自己啃呢 但书上没有具体提到潮流的问题 不知怎么解决 楼主有相关资料希望发给我[email protected]
㈥ 电力系统分析用matlab做潮流计算的具体步骤,程序怎么写,可以举个例子吗
也不知道你现在什么水平,步骤的话随便一本电力系统书上都有,关键看你用matlab怎么实现了,matlab其实跟c语言挺像的,c语言学过的话就应该不难。最开始输入的至少得包括支路数据和节点数据吧,主要就是形成和求解雅克比了。最简单的,写个m文件,在matlab命令窗口输出结果的那种全弄下来怎么也得写几篇,一步步来吧,专业不行就补补专业,编程不行就学编程。
㈦ 如果电力系统中某一发电机开断求开断发电机潮流计算,用matlab如何编程
直接用matpower进行改写,设个循环,设置gen矩阵的status参数即可实现开断。当然效率低点,不过也算是可行的。
㈧ matlab编程潮流计算的count值与什么有关
比如一个正确的潮流计算 一般用牛拉法是 迭代6次,PQ分解法是 迭代12次。
若潮流出现发散情况,迭代到20次,dP和dQ仍然不能收敛到你要的精度(比如0.0001),此时我们判定潮流发散,若不设一个迭代上限,可想而知,程序会一直迭代下去,此时数值已完全失去意义。
㈨ 潮流计算编程
1