MATLAB计算24点游戏代码

时间:2019-05-12 23:55:50下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《MATLAB计算24点游戏代码》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《MATLAB计算24点游戏代码》。

第一篇:MATLAB计算24点游戏代码

clear,closeall clc a=5;b=7;c=10;

d=4;%这里输入需要计算的四个数字a,b,c,d f=[a b c d];tic;g=perms(f);[m,n]=size(g);h='+-*/';fori=1:24 for k1=1:4 for k2=1:4 for k3=1:4

str11=[num2str(g(i,1)),h(k1),num2str(g(i,2)),h(k2),num2str(g(i,3)),h(k3),num2str(g(i,4))];

str22=['(',num2str(g(i,1)),h(k1),num2str(g(i,2)),')',h(k2),num2str(g(i,3)),h(k3),num2str(g(i,4))];

str33=['(',num2str(g(i,1)),h(k1),num2str(g(i,2)),h(k2),num2str(g(i,3)),')',h(k3),num2str(g(i,4))];

str44=['(',num2str(g(i,1)),h(k1),num2str(g(i,2)),')',h(k2),'(',num2str(g(i,3)),h(k3),num2str(g(i,4)),')',];A=str2num(str11);B=str2num(str22);C=str2num(str33);D=str2num(str44);if A==24||B==24||C==24||D==24 break else end end

if A==24||B==24||C==24||D==24 break else end end

if A==24||B==24||C==24||D==24 break else end end

if A==24||B==24||C==24||D==24 break else end end

if A==24

answer=str11;elseif B==24

answer=str22;elseif C==24

answer=str33;elseif D==24

answer=str44;else

answer='无解';end

disp(['计算方法',num2str(answer)])time=toc;

disp(['计算耗时',num2str(time),'s'])

第二篇:24点游戏代码

// +-* /---/ // 0 1 2 3 4 5

#include #include

int treat(float a,float b,float c,float d);float myF(int flag,float m,float n);void myPrint(int type,int i,int j,int k,float a,float b,float c,float d);

int time,temp=0;void main(){ int i,j,k,t,again,res,flag;float num[4];again=1;while(again==1){

printf(“nPlease Enter 4 nums(1~13):n”);

i=0;

flag=0;

while(flag==0)

{

i++;

// printf(“Input num-%dn”,i);

for(i=0;i<4;i++)

{

scanf(“%f”,&num[i]);

if(num[i]<1 || num[i]>13 || num[i]!=int(num[i]))

flag++;

}

if(flag!=0)

{

printf(“Error input againn”,i);

flag=0;

}

else

flag=1;

}

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(j!=i)

for(k=0;k<4;k++)

if(k!=j && k!=i)

for(t=0;t<4;t++)

if(t!=i && t!=j && t!=k)

{

res=treat(num[i],num[j],num[k],num[t]);

} if(res==0)

printf(“nNo answern”);else;// printf(“time=%dnn”,time);printf(“n1: Go onn2: Quitn”);scanf(“%d”,&again);} }

int treat(float a,float b,float c,float d){ int i,j,k;float sum1,sum2,sum3;for(i=0;i<4;i++)

for(j=0;j<6;j++)

for(k=0;k<6;k++)

{

if((!(i==3 && b==0))&&(!(j==3 && c==0))&&(!(k==3 && d==0)))

{

sum1=myF(i,a,b);

sum2=myF(j,sum1,c);

sum3=myF(k,sum2,d);

if(fabs(sum3-24)<0.1)

{

temp++;

myPrint(1,i,j,k,a,b,c,d);

// printf(“sum1:myF(%d,%2.0f,%2.0f)sum1=%fn”,i,a,b,sum1);

// printf(“sum2:myF(%d,%2.0f,%2.0f)sum2=%fn”,j,c,d,sum2);

// printf(“1:myF(%d,myF(%d,myF(%d,%2.0f,%2.0f),%2.0f),%2.0f)

sum3=%fnn”,k,j,i,a,b,c,d,sum3);

}

}

if(k==2)

{

sum1=myF(i,a,b);

sum2=myF(j,c,d);

sum3=sum1*sum2;

if(fabs(sum3-24)<0.1)

{

temp++;

myPrint(2,i,j,k,a,b,c,d);

// printf(“sum1:myF(%d,%2.0f,%2.0f)sum1=%fn”,i,a,b,sum1);

// printf(“sum2:myF(%d,%2.0f,%2.0f)sum2=%fn”,j,c,d,sum2);

// printf(“2:myF(%d,myF(%d,%2.0f,%2.0f),myF(%d,%2.0f,%2.0f))

sum3=%fnn”,k,i,a,b,j,c,d,sum3);

}

}

if(k==3)

{

sum1=myF(i,a,b);

sum2=myF(j,c,d);

if(sum2!=0)

{

sum3=sum1/sum2;

if(fabs(sum3-24)<0.1)

{

temp++;

myPrint(3,i,j,k,a,b,c,d);

// printf sum1=%fn“,i,a,b,sum1);

// printf sum2=%fn”,j,c,d,sum2);

// printf(“3:myF(%d,myF(%d,%2.0f,%2.0f),myF(%d,%2.0f,%2.0f))

}

}

}

} if(temp==0)

return 0;else

return 1;}

float myF(int flag,float m,float n){

// time++;if(flag==0)

return(m+n);if(flag==1)

return(m-n);if(flag==2)

(”sum1:myF(%d,%2.0f,%2.0f)(“sum2:myF(%d,%2.0f,%2.0f)sum3=%fnn”,k,i,a,b,j,c,d,sum3);

return(m*n);if(flag==3)

if(n==0)

return 30000;

else

return(m/n);if(flag==4)

return(n-m);if(flag==5)

if(m==0)

return 30000;

else

return(n/m);return 0;}

void myPrint(int type,int i,int j,int k,float a,float b,float c,float d){ char sigle[6];

sigle[0]='+';

sigle[1]='-';

sigle[2]='*';

sigle[3]='/';

sigle[4]='-';

sigle[5]='/';if(type==1){

if(j==4 || j==5)

{

if(k==4 || k==5)

printf(“%2.0f %c(%2.0f %c =24n”,d,sigle[k],c,sigle[j],a,sigle[i],b);

else

printf(“(%2.0f %c(%2.0f %c =24n”,c,sigle[j],a,sigle[i],b,sigle[k],d);

}

else if(k==4 || k==5)

{

printf(“%2.0f %c((%2.0f %c =24n”,d,sigle[k],a,sigle[i],b,sigle[j],c);

}

else

printf(“((%2.0f %c %2.0f)%c =24n”,a,sigle[i],b,sigle[j],c,sigle[k],d);}

(%2.0f %2.0f))%2.0f)%2.0f)%c %2.0f))

%c %2.0f

%c %2.0f)

%c %2.0f if(type==2 || type==3){ // if(k==4 || k==5)// printf(“(%2.0f %c(%2.0f %c %2.0f)=24n”,c,sigle[j],d,sigle[k],a,sigle[i],b);// else

printf(“(%2.0f %c %2.0f)%c =24n”,a,sigle[i],b,sigle[k],c,sigle[j],d);} }

%2.0f)%c

(%2.0f %c %2.0f)

第三篇:Q学习走迷宫MATLAB代码

gamma = 0.4;%%设置初值 Q = zeros(6, 6);R = [-1-1-1-1 0-1;-1-1-1 0-1 100;-1-1-1 0-1-1;-1 0 0-1 0-1;0-1-1 0-1 100;-1 0-1-1 0 100];now = 2;seq = [];for now = 1:1:6

for i = 0:1:20 %%打乱路径顺序,选取随机的路径 rcolumn = R(now, :);

rcolumn(rcolumn ==-1)= [];num = randperm(size(rcolumn,2));

next = find(R(now,:)== rcolumn(num(1)), 1);seq = [seq next];

Qmax = max(Q(next,:));%%更新Q函数

Q(now, next)= R(now, next)+ gamma * Qmax gamma = gamma*0.99;%%由随即策略渐渐变为随机策略 now = next;% for i = 0:1:5

% Qmax = max(Q(now, :));

% next = find(Q(now, :)== Qmax, 1);% seq = [seq next];% now = next;% end

第四篇:用matlab电力系统潮流计算

题目:潮流计算与matlab

教学单位 电气信息学院

姓 名 学 号

年 级

专 业 电气工程及其自动化

指导教师

职 称 副教授

摘 要

电力系统稳态分析包括潮流计算和静态安全分析。本文主要运用的事潮流计算,潮流计算是电力网络设计与运行中最基本的运算,对电力网络的各种设计方案及各种运行方式进行潮流计算,可以得到各种电网各节点的电压,并求得网络的潮流及网络中的各元件的电力损耗,进而求得电能损耗。本位就是运用潮流计算具体分析,并有MATLAB仿真。

关键词: 电力系统 潮流计算 MATLAB

Abstract Electric power system steady flow calculation and analysis of the static safety analysis.This paper, by means of the calculation, flow calculation is the trend of the power network design and operation of the most basic operations of electric power network, various design scheme and the operation ways to tide computation, can get all kinds of each node of the power grid voltage and seek the trend of the network and the network of the components of the power loss, and getting electric power.The standard is to use the power flow calculation and analysis, the specific have MATLAB simulation.Key words: Power system;Flow calculation;MATLAB simulation

目 录 任务提出与方案论证....................................................................................................................................2 2 总体设计........................................................................................................................................................3 2.1潮流计算等值电路.............................................................................................................................3 2.2建立电力系统模型.............................................................................................................................3 2.3模型的调试与运行.............................................................................................................................3 3 详细设计........................................................................................................................................................4 3.1 计算前提............................................................................................................................................4 3.2手工计算.............................................................................................................................................7 4设计图及源程序...........................................................................................................................................11 4.1MATLAB仿真.......................................................................................................................................11 4.2潮流计算源程序...............................................................................................................................11 5 总结.............................................................................................................................................................31 参考文献..........................................................................................................................................................32 任务提出与方案论证

潮流计算是在给定电力系统网络结构、参数和决定系统运行状态的边界条件的情况下确定系统稳态运行状态的一种基本方法,是电力系统规划和运营中不可缺少的一个重要组成部分。可以说,它是电力系统分析中最基本、最重要的计算,是系统安全、经济分析和实时控制与调度的基础。常规潮流计算的任务是根据给定的运行条件和网路结构确定整个系统的运行状态,如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等。潮流计算的结果是电力系统稳定计算和故障分析的基础。在电力系统运行方式和规划方案的研究中,都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。同时,为了实时监控电力系统的运行状态,也需要进行大量而快速的潮流计算。因此,潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。在系统规划设计和安排系统的运行方式时,采用离线潮流计算;在电力系统运行状态的实时监控中,则采用在线潮流计算。是电力系统研究人员长期研究的一个课题。它既是对电力系统规划设计和运行方式的合理性、可靠性及经济性进行定量分析的依据,又是电力系统静态和暂态稳定计算的基础。

潮流计算经历了一个由手工到应用数字电子计算机的发展过程,现在的潮流算法都以计算机的应用为前提用计算机进行潮流计算主要步骤在于编制计算机程序,这是一项非常复杂的工作。对系统进行潮流分析,本文利用 MATLAB中的SimpowerSystems工具箱设计电力系统,在simulink 环境下,不仅可以仿真系统的动态过程,还可以对系统进行稳态潮流分析。

总体设计

SimpowerSystems使用Simulink环境,可以将该系统中的发电机、变压器,线路等模型联结起来,形成电力系统仿真模拟图。在加人测量模块,并对各元件的参数进行设置后,用measurement和sink中的仪器可以观察各元件的电压、电流、功率的大小。

2.1潮流计算等值电路

10MWYN,d11463MWVA15MWGGGG120MW10kVp015.7kWps73kWI%0.50Vs%10.5YN,d1116MWVA463MW“xd0.134x20.161x0.060cosN0.8510kVp011kWps50kWI%0.550Vs%10.5YN,d11210MWVA35kV32km25MW110kV80km25MW110kV70km110kVYN,d11220MWVA20MWGGG415MW”xd0.136x20.16x0.0730cosN0.8p018.6kWps89kWI%0.530MW0Vs%10.510kVp015.7kWps73kWI%0.5GG0V%10.5sYN,d11216MWVA63MWVAp044kWps121kW10kVI%0.350Vs%10.5GG35MWYN,Y,d11210MVA10kVGGG312MW150MW“xd0.128x20.154x0.0540cosN0.85225MW”xd0.128x20.157x0.05910cosN0.8x0.136x20.161x0.0750cosN0.8“d

2.2建立电力系统模型

在Simulink中按照电力系统原型选择元件进行建模。所建立的模型和建立的方法在详细设计中详述。

在电力系统模型的建立工程中主要涉及到的是:元器件的选择及其参数的设置;发电机选型;变压器选择;线路的选择;负荷模型的选择;母线选择。

2.3模型的调试与运行

建立系统模型,并设置好参数以后,就可以在Simulink环境下进行仿真运行。运行的具体结果和分析也在详细设计中详述。

30km35kV0km31p044kWps121kWI%0.350Vs%10.5p013.2kWps63kWI0%0.55V%10.5s(12)80MWVs(23)%6.55MWVs(13)%17.53 详细设计

3.1 计算前提

首先是发电机的参数计算,先对5个发电厂简化为5台发电机来计算。发电机G1:

P141560MWQ160tan(arccos0.8)45MVar发电机G2:

P2463252MWQ2252tan(arccos0.85)156MVar发电机G3:

P331236MWQ336tan(arccos0.8)27MVar发电机G4:

P415050MWQ450tan(arccos0.85)31MVar发电机G5:

P522550MWQ550tan(arccos0.8)37.5MVar

其次是变电站的参数计算,我们还是对7个变电站简化为7台变压器来计算。变压器T1:

2psVN7311023RT1101033.450232SN(1610)2Vs%VN10.51102XT1101079.406SN16103S01p0j变压器T2:(双并联)

I0%SN(0.0157j0.0800)MVA 100RT2XT221psVN18911023101031.3462322SN2(2010)21Vs%VN110.51102101031.7625 32SN22010S022(p0j变压器T3:(四并联)

I0%SN)(0.0372j0.2000)MVA100 1psVN2112111023RT3101030.0922324SN4(6310)XT31Vs%VN2110.5110210105.042 4SN463103I0%SN)(0.1760j0.8820)MVA100S034(p0j变压器T4:(双并联)

1RT11.725021 XT4XT139.70302S042S01(0.0314j0.1600)MVART4变压器T5:

RT54RT30.3680XT54XT320.168S051S03(0.0440j0.2205)MVA41633523100.386 322(1010)

变压器T6:(两个三绕组变压器并联)

RT61RT62RT631[Vs(12)%Vs(13)%Vs(23)%]10.7521Vs2%[Vs(12)%Vs(23)%Vs(13)%]0.25

21Vs3%[Vs(13)%Vs(23)%Vs(12)%]6.752Vs1%21Vs1%VNXT61106.5842SNXT62XT6321Vs2%VN100.1532SN21Vs3%VN104.134 2SNS062(P06j变压器T7:(双并联)

I0%10)(0.0264j0.1100)MVA 100 RT7XT721psVN1503523101030.3062322SN2(1010)21Vs%VN110.535210106.4312SN210103

S072(p0jI0%SN)(0.0220j0.1100)MVA100再次是传输线参数计算,5条传输线的具体计算如下。

根据教材查得r00.21/km x00.4/km b02.810S/km 6线路L1:

线路L2:

线路L3:(双回路)

线路L4:

线路L5:(双回路)RL1r0l10.21408.4XL1x0l10.44016B6L1b0l12.810401.12104S Q1L12BL1V2N0.6776MVarRL2r0l20.2113027.3XL2x0l20.413052B6L2b0l22.8101303.64104S Q1L22BL2V2N2.2022MVarR12rl1L30320.21707.35X11L32x0l320.47014 BL32b40l322.8106703.9210SQ1L32B2L3VN2.3716MVarRL4r0l40.216012.6XL4x0l40.46024BL4b0l42.8106601.68104S Q12L42BL4VN1.0164MVar

11RL5r0l50.21202.12211XL5x0l50.4204 22BL52b0l522.8106201.12104S1QL5BL3VN20.0686MVar23.2手工计算

FLR1:

P2102ST12(RT1jXT1)(3.450j74.406)(0.0285j0.6562)MVA2VN110Sa10MWST1S01jQL1(10.0442j0.1142)MVAP2Q210.044220.11422SL1(RL1jXL1)(8.4j16)(0.070j0.1334)MVAVN21102ST2P2Q2402452(RT2jXT2)(1.346j31.7625)(0.4032j9.5156)MVAVN21102FLR2SbSG120ST260j45200.4032j9.5156(39.5968j35.4844)MVAScSbSa25jQL1SL1(4.4826j35.9144)MVA:

ST3P2Q225221562(RT3jXT3)(0.092j5.042)(0.6679j36.6024)MVA22VN110PQ4.493134.1048(RjX)(27.3j52)(2.67j5.0854)MVAL2L222VN1102222Sc'(4.4931j34.1048)MVASL2FLRSdSG2Sc'120ST3S03jQL2SL2(132.9792j149.229)MVA3:

ST4P2Q262272(RT4jXT4)(1.725j39.703)(0.1091j2.5101)MVAVN21102P2Q2133.59552149.99562(RL3jXL3)(7.35j14)(24.51j46.682)MVA22VN110'Sd(133.5955j149.9956)MVASL3'SeSG3Sd3025ST4S04jQL3SL3(89.945j130.0151)MVAFLR4: ST5P2Q2502312(RT5jXT5)(0.368j20.168)(0.1052j5.7687)MVA22VN110P2Q292.74872133.99372(RL4jXL4)(12.6j24)(27.654j52.674)MVA22VN110Se'(92.7481j133.9937)MVASL4SfSG4Se'80ST5S05jQL4SL4(34.9449j107.3469)MVAFLR5: 152ST72(0.306j6.431)(0.0562j1.1812)MVA35Sh15ST7S07jQL5(15.0782j0.3422)MVA15.078220.34222SL5(2.1j4)(0.3899j0.743)MVA352SiShSL5S06jQL55(20.4945j1.1266)MVA 15237.52ST63(0.386j4.34)(0.514j5.7793)MVA35220.650520.54512ST62(0.386j0.153)(0.1345j0.0533)MVA23526.336298.73692ST61(0.386j6.584)(3.2905j56.1256)MVA352SgSfST61SG5ST62ST63Si35(25.5114j194.12)MVA计算每一个FLR的功率分布和电压分布计算如下: FLR1:

VT2PRQX401.3464531.762512.8970kVVN115 Vb115VT2102.1030kVPRQX10.04428.40.144216VL10.8489kVVb102.1030VaVbVL1101.2541kVFLR2:

功率分布:

SL2ZZZ*T3*L2*SdT3(VbVN)ZZL2****VN(0.092j5.042)(132.9792j149.229)1418.6727.392j57.042T3(4.8812j13.8097)MVAST3ZZZ*L2*L2*SdT3(VbVN)ZZL2VN(27.3j52)(132.9792j149.229)1418.6727.392j57.042T3(108.687j122.62)MVA 电压分布:

Sc1SL2SL2(4.8812j13.8097)(2.67j5.0854)(7.5512j8.7243)MVA7.551227.38.7243522.424kV102.1030VdVbVL2102.103(2.424)104.527kVVL2功率分布:

FLR3:

SL3ZZZ*T4*L3*SeT4(VG3Vd)ZZL3****VN(1.725j39.703)(89.945j130.0151)1037.9279.075j53.73T4(59.444j16.846)MVAST4ZZZ*L3*L3*SeT4(VbVN)ZZL3VN(7.35j14)(89.945j130.0151)1037.9279.075j53.73T4(31.811j60.1256)MVA 电压分布:

Se1SL3SL3(59.444j19.846)(24.51j46.682)(83.954j26.836)MVA83.9547.3526.836149.404kV105.5643VeVdVL396.16kVVL3功率分布:

FLR4:

SL4ZZZ*T5*L4*SfT5(VG3Vd)ZZL4****VN=(0.368j20.168)(34.9449j107.3469)1037.92712.968j44.168T5(20.843j19.689)MVAST4ZZZ*L4*L4*SfT5(VG3Vd)ZZL4VN=(12.6j24)(34.9449j107.3469)1037.92712.968j44.168T5(1.398j44.389)MVA 电压分布:

Se1SL3SL3(59.444j16.846)(24.51j46.682)(83.954j63.528)MVA83.95412.663.5282424.464kV105.5643VeVdVL381.10kVVL4FLR5: 这里我们先将f点和发电机G5当做电源,经过ZT61和ZT63构成两端供电网络以g点作为运算负荷进行计算。ST6ST4(0.386j4.134)(20.2656j70.9293)(22.093837)35(3.900j25.1175)MVA0.772j10.718(0.386j6.584)(20.2656j70.9293)(22.093837)35(16.5061j91.7905)MVA0.772j10.718电压分布:

ST631ST63ST63(16.6421j97.5698)MVA16.64210.38697.56984.13410.9186kV37Vg37VT6326.0814VVT6320.26560.38670.9293(0.153)0.1162kV

26.0814ViVgVT6226.1976VT6220.49452.11.126641.815kV26.1976VhViVL524.3826VL5

4设计图及源程序

4.1MATLAB仿真

相关的原始数据输入格式如下:

1、B1是支路参数矩阵,第一列和第二列是节点编号。节点编号由小到大编写。

2、对于含有变压器的支路,第一列为低压侧节点编号,第二列为高压侧节点编号,将变压器的串联阻抗置于低压侧处理,第三列为支路的串列阻抗参数,第四列为支路的对地导纳参数,第五烈为含变压器支路的变压器的变比,第六列为变压器是否是否含有变压器的参数,其中“1”为含有变压器,“0”为不含有变压器。

3、B2为节点参数矩阵,其中第一列为节点注入发电功率参数;第二列为节点负荷功率参数;第三列为节点电压参数;第六列为节点类型参数,其中“1”为平衡节点,“2”为PQ节点,“3”为PV节点参数。

4、X为节点号和对地参数矩阵。其中第一列为节点编号,第二列为节点对地参数。

4.2潮流计算源程序

%本程序的功能是用牛顿——拉夫逊法进行11节点潮流计算 clear;n=11;%input('请输入节点数:n=');nl=11;%input('请输入支路数:nl=');isb=1;%input('请输入平衡母线节点号:isb=');pr=0.00001;%input('请输入误差精度:pr=');B1=[1

0.03512+0.08306i

0.13455i

0;

0.0068+0.18375i

0

1.02381

1;

0.05620+0.13289i

0.05382i

0;

0.00811+0.24549i

0

1.02381

1;

0.05620+0.13289i

0.05382i

0;

0.04215+0.09967i

0.04037i

0;

0.0068+0.18375i

0

1.02381

1;

0.02810+0.06645i

0.10764i

0;

0.05620+0.13289i

0.05382i

0;0.00811+0.24549i

0

1;

0.03512+0.08306i

0.13455i

0] B2=[0

0

1.1

1.1

0

1;

0

0

0

0

2;

0

0.343+0.21256i

0

0

2;

0

0

0

0

2;

0

0.204+0.12638i

0

0

2;

0

0

0

0

2;

0

0.306+0.18962i

0

0

2;

0

0

0

0

2;

0.5

0

1.1

1.1

0

3;

0

0.343+0.21256i

0

0

2;

0

0

0

0

2];% 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节点;

%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

%左节点处于1侧

p=B1(i,1);q=B1(i,2);

else

%左节点处于K侧

p=B1(i,2);q=B1(i,1);

end

Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));%非对角元

Y(q,p)=Y(p,q);

%非对角元

Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;%对角元K侧

Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;

%对角元1侧

end %求导纳矩阵

disp('导纳矩阵 Y=');disp(Y)%---------------------------G=real(Y);B=imag(Y);

%分解出导纳阵的实部和虚部

for i=1:n

%给定各节点初始电压的实部和虚部

e(i)=real(B2(i,3));

f(i)=imag(B2(i,3));

V(i)=B2(i,4);

%PV节点电压给定模值

end for i=1:n

%给定各节点注入功率

S(i)=B2(i,1)-B2(i,2);

%i节点注入功率SG-SL

B(i,i)=B(i,i)+B2(i,5);%i节点无功补偿量

end %===================== P=real(S);Q=imag(S);

%分解出各节点注入的有功和无功功率 ICT1=0;IT2=1;N0=2*n;N=N0+1;a=0;%迭代次数ICT1、a;不满足收敛要求的节点数IT2 while IT2~=0

% N0=2*n 雅可比矩阵的阶数;N=N0+1扩展列

IT2=0;a=a+1;

for i=1:n

if i~=isb

%非平衡节点

C(i)=0;D(i)=0;

for j1=1:n

C(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);%Σ(Gij*ej-Bij*fj)

D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);%Σ(Gij*fj+Bij*ej)

end

P1=C(i)*e(i)+f(i)*D(i);%节点功率P计算eiΣ(Gij*ej-Bij*fj)+fiΣ(Gij*fj+Bij*ej)

Q1=C(i)*f(i)-e(i)*D(i);%节点功率Q计算fiΣ(Gij*ej-Bij*fj)-eiΣ(Gij*fj+Bij*ej)%求i节点有功和无功功率P',Q'的计算值

V2=e(i)^2+f(i)^2;

%电压模平方

%========= 以下针对非PV节点来求取功率差及Jacobi矩阵元素 =========

if B2(i,6)~=3

%非PV节点

DP=P(i)-P1;

%节点有功功率差

DQ=Q(i)-Q1;

%节点无功功率差

%=============== 以上为除平衡节点外其它节点的功率计算 ================= %================= 求取Jacobi矩阵 ===================

for j1=1:n

if j1~=isb&j1~=i

%非平衡节点&非对角元

X1=-G(i,j1)*e(i)-B(i,j1)*f(i);% dP/de=-dQ/df

X2=B(i,j1)*e(i)-G(i,j1)*f(i);% dP/df=dQ/de

X3=X2;

% X2=dp/df X3=dQ/de

X4=-X1;

% X1=dP/de X4=dQ/df

p=2*i-1;q=2*j1-1;

J(p,q)=X3;J(p,N)=DQ;m=p+1;

% X3=dQ/de J(p,N)=DQ节点无功功率差

J(m,q)=X1;J(m,N)=DP;q=q+1;

% X1=dP/de J(m,N)=DP节点有功功率差

J(p,q)=X4;J(m,q)=X2;

% X4=dQ/df X2=dp/df

elseif j1==i&j1~=isb %非平衡节点&对角元

X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de

X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/df

X3=D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dQ/de

X4=-C(i)+G(i,i)*e(i)+B(i,i)*f(i);% dQ/df

p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;%扩展列△Q

m=p+1;

J(m,q)=X1;q=q+1;J(p,q)=X4;J(m,N)=DP;%扩展列△P

J(m,q)=X2;

end

end

else

%=============== 下面是针对PV节点来求取Jacobi矩阵的元素 ===========

DP=P(i)-P1;

% PV节点有功误差

DV=V(i)^2-V2;

% PV节点电压误差

for j1=1:n

if j1~=isb&j1~=i

%非平衡节点&非对角元

X1=-G(i,j1)*e(i)-B(i,j1)*f(i);

% dP/de

X2=B(i,j1)*e(i)-G(i,j1)*f(i);

% dP/df

X5=0;X6=0;

p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;% PV节点电压误差

m=p+1;

J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;

% PV节点有功误差

J(m,q)=X2;

elseif j1==i&j1~=isb %非平衡节点&对角元

X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de

X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/df

X5=-2*e(i);

X6=-2*f(i);

p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;% PV节点电压误差

m=p+1;

J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;

% PV节点有功误差

J(m,q)=X2;

end

end

end

end

end %========= 以上为求雅可比矩阵的各个元素及扩展列的功率差或电压差 =====================

for k=3:N0

% N0=2*n(从第三行开始,第一、二行是平衡节点)

k1=k+1;N1=N;

% N=N0+1 即 N=2*n+1扩展列△P、△Q 或 △U

for k2=k1:N1

% 从k+1列的Jacobi元素到扩展列的△P、△Q 或 △U

J(k,k2)=J(k,k2)./(J(k,k)+eps);% 用K行K列对角元素去除K行K列后的非对角元素进行规格化

end

J(k,k)=1;

% 对角元规格化K行K列对角元素赋1

%==================== 回代运算

=======================================

if k~=3

% 不是第三行

k > 3

k4=k-1;

for k3=3:k4

% 用k3行从第三行开始到当前行的前一行k4行消去

for k2=k1:N1 %

k3行后各行上三角元素

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算(当前行k列元素消为0)

end

%用当前行K2列元素减去当前行k列元素乘以第k行K14 列元素

J(k3,k)=0;%当前行第k列元素已消为0

end

if k==N0

%若已到最后一行

break;

end

%================== 前代运算

==================================

for k3=k1:N0

% 从k+1行到2*n最后一行

for k2=k1:N1

% 从k+1列到扩展列消去k+1行后各行下三角元素

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算

end

%用当前行K2列元素减去当前行k列元素乘以第k行K2列元素

J(k3,k)=0;%当前行第k列元素已消为0

end

else

%是第三行k=3

%====================== 第三行k=3的前代运算 ========================

for k3=k1:N0

%从第四行到2n行(最后一行)

for k2=k1:N1

%从第四列到2n+1列(即扩展列)

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算(当前行3列元素消为0)

end

%用当前行K2列元素减去当前行3列元素乘以第三行K2列元素

J(k3,k)=0;%当前行第3列元素已消为0

end

end

end %====上面是用线性变换方式高斯消去法将Jacobi矩阵化成单位矩阵=====

for k=3:2:N0-1

L=(k+1)./2;

e(L)=e(L)-J(k,N);

%修改节点电压实部

k1=k+1;

f(L)=f(L)-J(k1,N);

%修改节点电压虚部

end

%------修改节点电压-----------

for k=3:N0

DET=abs(J(k,N));

if DET>=pr

%电压偏差量是否满足要求

IT2=IT2+1;%不满足要求的节点数加1

end

end

ICT2(a)=IT2;

%不满足要求的节点数

ICT1=ICT1+1;

%迭代次数 end %用高斯消去法解”w=-J*V“

disp('迭代次数:');disp(ICT1);disp('没有达到精度要求的个数:');disp(ICT2);for k=1:n

V(k)=sqrt(e(k)^2+f(k)^2);

%计算各节点电压的模值

sida(k)=atan(f(k)./e(k))*180./pi;

%计算各节点电压的角度

E(k)=e(k)+f(k)*j;

%将各节点电压用复数表示 end %=============== 计算各输出量 =========================== disp('各节点的实际电压标幺值E为(节点号从小到大排列):');disp(E);

%显示各节点的实际电压标幺值E用复数表示 disp('----------------------');disp('各节点的电压大小V为(节点号从小到大排列):');disp(V);

%显示各节点的电压大小V的模值 disp('----------------------');disp('各节点的电压相角sida为(节点号从小到大排列):');disp(sida);

%显示各节点的电压相角 for p=1:n

C(p)=0;

for q=1:n

C(p)=C(p)+conj(Y(p,q))*conj(E(q));%计算各节点的注入电流的共轭值

end

S(p)=E(p)*C(p);

%计算各节点的功率 S = 电压 X 注入电流的共轭值 end disp('各节点的功率S为(节点号从小到大排列):');disp(S);

%显示各节点的注入功率

disp('----------------------');disp('各条支路的首端功率Si为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

if B1(i,6)==0

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))));

Siz(i)=Si(p,q);

else

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))));

Siz(i)=Si(p,q);

end

disp(Si(p,q));

SSi(p,q)=Si(p,q);

ZF=['S(',num2str(p),',',num2str(q),')=',num2str(SSi(p,q))];

disp(ZF);

disp('----------------------');end disp('各条支路的末端功率Sj为(顺序同您输入B1时一致):');

for i=1:nl

p=B1(i,1);q=B1(i,2);

if B1(i,6)==0

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))));

Sjy(i)=Sj(q,p);

else

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))));

Sjy(i)=Sj(q,p);

end

disp(Sj(q,p));

SSj(q,p)=Sj(q,p);

ZF=['S(',num2str(q),',',num2str(p),')=',num2str(SSj(q,p))];

disp(ZF);

disp('----------------------');end disp('各条支路的功率损耗DS为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

DS(i)=Si(p,q)+Sj(q,p);

disp(DS(i));

DDS(i)=DS(i);

ZF=['DS(',num2str(p),',',num2str(q),')=',num2str(DDS(i))];

disp(ZF);

disp('----------------------');end

%本程序的功能是用牛顿——拉夫逊法进行10节点潮流计算 %本程序的功能是用牛顿——拉夫逊法进行潮流计算 clear;n=10;%input('请输入节点数:n=');nl=10;%input('请输入支路数:nl=');isb=1;%input('请输入平衡母线节点号:isb=');pr=0.00001;%input('请输入误差精度:pr=');B1=[1

0.03512+0.08306i

0.13455i

0;

0.0068+0.18375i

0

1.02381

1;

0.05620+0.13289i

0.05382i

0;

0.00811+0.24549i

0

1.02381

1;

0.05620+0.13289i

0.05382i

0;

0.04215+0.09967i

0.04037i

0;

0.0068+0.18375i

0

1.02381

1;

0.02810+0.06645i

0.10764i

0;0.00811+0.24549i

0

1;

0.03512+0.08306i

0.13455i

0] B2=[0

0

1.1

1.1

0

1;

0

0

0

0

2;

0

0.343+0.21256i

0

0

2;

0

0

0

0

2;

0

0.204+0.12638i

0

0

2;

0

0

0

0

2;

0

0.306+0.18962i

0

0

2;

0

0

0

0

2;

0.5

0

1.1

1.1

0

3;

0

0.343+0.21256i

0

0

2];% 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节点;

%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

%左节点处于1侧

p=B1(i,1);q=B1(i,2);

else

%左节点处于K侧

p=B1(i,2);q=B1(i,1);

end

Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));%非对角元

Y(q,p)=Y(p,q);

%非对角元

Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;%对角元K侧

Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;

%对角元1侧

end %求导纳矩阵

disp('导纳矩阵 Y=');disp(Y)%---------------------------G=real(Y);B=imag(Y);

%分解出导纳阵的实部和虚部

for i=1:n

%给定各节点初始电压的实部和虚部

e(i)=real(B2(i,3));

f(i)=imag(B2(i,3));

V(i)=B2(i,4);

%PV节点电压给定模值

end for i=1:n

%给定各节点注入功率

S(i)=B2(i,1)-B2(i,2);

%i节点注入功率SG-SL

B(i,i)=B(i,i)+B2(i,5);%i节点无功补偿量

end %===================== P=real(S);Q=imag(S);

%分解出各节点注入的有功和无功功率

ICT1=0;IT2=1;N0=2*n;N=N0+1;a=0;%迭代次数ICT1、a;不满足收敛要求的节点数IT2 while IT2~=0

% N0=2*n 雅可比矩阵的阶数;N=N0+1扩展列

IT2=0;a=a+1;

for i=1:n

if i~=isb

%非平衡节点

C(i)=0;D(i)=0;

for j1=1:n

C(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);%Σ(Gij*ej-Bij*fj)

D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);%Σ(Gij*fj+Bij*ej)

end

P1=C(i)*e(i)+f(i)*D(i);%节点功率P计算eiΣ(Gij*ej-Bij*fj)+fiΣ(Gij*fj+Bij*ej)

Q1=C(i)*f(i)-e(i)*D(i);%节点功率Q计算fiΣ(Gij*ej-Bij*fj)-eiΣ(Gij*fj+Bij*ej)%求i节点有功和无功功率P',Q'的计算值

V2=e(i)^2+f(i)^2;

%电压模平方

%========= 以下针对非PV节点来求取功率差及Jacobi矩阵元素 =========

if B2(i,6)~=3

%非PV节点

DP=P(i)-P1;

%节点有功功率差

DQ=Q(i)-Q1;

%节点无功功率差

%=============== 以上为除平衡节点外其它节点的功率计算 ================= %================= 求取Jacobi矩阵 ===================

for j1=1:n

if j1~=isb&j1~=i

%非平衡节点&非对角元

X1=-G(i,j1)*e(i)-B(i,j1)*f(i);% dP/de=-dQ/df

X2=B(i,j1)*e(i)-G(i,j1)*f(i);% dP/df=dQ/de

X3=X2;

% X2=dp/df X3=dQ/de

X4=-X1;

% X1=dP/de X4=dQ/df

p=2*i-1;q=2*j1-1;

J(p,q)=X3;J(p,N)=DQ;m=p+1;

% X3=dQ/de J(p,N)=DQ节点无功功率差

J(m,q)=X1;J(m,N)=DP;q=q+1;

% X1=dP/de J(m,N)=DP节点有功功率差

J(p,q)=X4;J(m,q)=X2;

% X4=dQ/df X2=dp/df

elseif j1==i&j1~=isb %非平衡节点&对角元

X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de

X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/df

X3=D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dQ/de

X4=-C(i)+G(i,i)*e(i)+B(i,i)*f(i);% dQ/df

p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;%扩展列△Q

m=p+1;

J(m,q)=X1;q=q+1;J(p,q)=X4;J(m,N)=DP;%扩展列△P

J(m,q)=X2;

end

end

else

%=============== 下面是针对PV节点来求取Jacobi矩阵的元素

===========

DP=P(i)-P1;

% PV节点有功误差

DV=V(i)^2-V2;

% PV节点电压误差

for j1=1:n

if j1~=isb&j1~=i

%非平衡节点&非对角元

X1=-G(i,j1)*e(i)-B(i,j1)*f(i);

% dP/de

X2=B(i,j1)*e(i)-G(i,j1)*f(i);

% dP/df

X5=0;X6=0;

p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;% PV节点电压误差

m=p+1;

J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;

% PV节点有功误差

J(m,q)=X2;

elseif j1==i&j1~=isb %非平衡节点&对角元

X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de

X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/df

X5=-2*e(i);

X6=-2*f(i);

p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;% PV节点电压误差

m=p+1;

J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;

% PV节点有功误差

J(m,q)=X2;

end

end

end

end

end %========= 以上为求雅可比矩阵的各个元素及扩展列的功率差或电压差 =====================

for k=3:N0

% N0=2*n(从第三行开始,第一、二行是平衡节点)

k1=k+1;N1=N;

% N=N0+1 即 N=2*n+1扩展列△P、△Q 或 △U

for k2=k1:N1

% 从k+1列的Jacobi元素到扩展列的△P、△Q 或 △U

J(k,k2)=J(k,k2)./J(k,k);% 用K行K列对角元素去除K行K列后的非对角元素进行规格化

end

J(k,k)=1;

% 对角元规格化K行K列对角元素赋1

%==================== 回代运算

=======================================

if k~=3

% 不是第三行

k > 3

k4=k-1;

for k3=3:k4

% 用k3行从第三行开始到当前行的前一行k4行消

for k2=k1:N1 %

k3行后各行上三角元素

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算(当前行k列元素消为0)

end

%用当前行K2列元素减去当前行k列元素乘以第k行K2列元素

J(k3,k)=0;%当前行第k列元素已消为0

end

if k==N0

%若已到最后一行

break;

end

%================== 前代运算

==================================

for k3=k1:N0

% 从k+1行到2*n最后一行

for k2=k1:N1

% 从k+1列到扩展列消去k+1行后各行下三角元素

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算

end

%用当前行K2列元素减去当前行k列元素乘以第k行K2列元素

J(k3,k)=0;%当前行第k列元素已消为0

end

else

%是第三行k=3

%====================== 第三行k=3的前代运算 ========================

for k3=k1:N0

%从第四行到2n行(最后一行)

for k2=k1:N1

%从第四列到2n+1列(即扩展列)

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算(当前行3列元素消为0)

end

%用当前行K2列元素减去当前行3列元素乘以第三行K2列元素

J(k3,k)=0;%当前行第3列元素已消为0

end

end

end %====上面是用线性变换方式高斯消去法将Jacobi矩阵化成单位矩阵=====

for k=3:2:N0-1

L=(k+1)./2;

e(L)=e(L)-J(k,N);

%修改节点电压实部

k1=k+1;

f(L)=f(L)-J(k1,N);

%修改节点电压虚部

end

%------修改节点电压-----------

for k=3:N0

DET=abs(J(k,N));

if DET>=pr

%电压偏差量是否满足要求

IT2=IT2+1;%不满足要求的节点数加1

end

end

ICT2(a)=IT2;

%不满足要求的节点数

ICT1=ICT1+1;

%迭代次数 end %用高斯消去法解”w=-J*V“ disp('迭代次数:');disp(ICT1);disp('没有达到精度要求的个数:');disp(ICT2);for k=1:n

V(k)=sqrt(e(k)^2+f(k)^2);

%计算各节点电压的模值

sida(k)=atan(f(k)./e(k))*180./pi;

%计算各节点电压的角度

E(k)=e(k)+f(k)*j;

%将各节点电压用复数表示 end %=============== 计算各输出量 =========================== disp('各节点的实际电压标幺值E为(节点号从小到大排列):');disp(E);

%显示各节点的实际电压标幺值E用复数表示 disp('----------------------');disp('各节点的电压大小V为(节点号从小到大排列):');disp(V);

%显示各节点的电压大小V的模值 disp('----------------------');disp('各节点的电压相角sida为(节点号从小到大排列):');disp(sida);

%显示各节点的电压相角 for p=1:n

C(p)=0;

for q=1:n

C(p)=C(p)+conj(Y(p,q))*conj(E(q));%计算各节点的注入电流的共轭值

end

S(p)=E(p)*C(p);

%计算各节点的功率 S = 电压 X 注入电流的共轭值 end disp('各节点的功率S为(节点号从小到大排列):');disp(S);

%显示各节点的注入功率

disp('----------------------');disp('各条支路的首端功率Si为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

if B1(i,6)==0

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))));

Siz(i)=Si(p,q);

else

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))));

Siz(i)=Si(p,q);

end

disp(Si(p,q));

SSi(p,q)=Si(p,q);

ZF=['S(',num2str(p),',',num2str(q),')=',num2str(SSi(p,q))];

disp(ZF);

disp('----------------------');end disp('各条支路的末端功率Sj为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

if B1(i,6)==0

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))));

Sjy(i)=Sj(q,p);

else

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))));

Sjy(i)=Sj(q,p);

end

disp(Sj(q,p));

SSj(q,p)=Sj(q,p);

ZF=['S(',num2str(q),',',num2str(p),')=',num2str(SSj(q,p))];

disp(ZF);

disp('----------------------');end disp('各条支路的功率损耗DS为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

DS(i)=Si(p,q)+Sj(q,p);

disp(DS(i));

DDS(i)=DS(i);

ZF=['DS(',num2str(p),',',num2str(q),')=',num2str(DDS(i))];

disp(ZF);

disp('----------------------');end

%本程序的功能是用牛顿——拉夫逊法进行12节点潮流计算 %本程序的功能是用牛顿——拉夫逊法进行潮流计算 clear;n=12;%input('请输入节点数:n=');nl=12;%input('请输入支路数:nl=');isb=1;%input('请输入平衡母线节点号:isb=');pr=0.00001;%input('请输入误差精度:pr=');B1=[1

0.03512+0.08306i

0.13455i

0;

0.0068+0.18375i

0

1.02381

1;

0.05620+0.13289i

0.05382i

0;

0.00811+0.24549i

0

1.02381

1;

0.05620+0.13289i

0.05382i

0;

0.04215+0.09967i

0.04037i

0;

0.0068+0.18375i

0

1.02381

1;

0.02810+0.06645i

0.10764i

0;

0.05620+0.13289i

0.05382i

0;0.00811+0.24549i

0

1;

0.03512+0.08306i

0.13455i

0;

0.03512+0.08306i

0.13455i

0] B2=[0

0

1.1

1.1

0

1;

0

0

0

0

2;

0

0.343+0.21256i

0

0

2;

0

0

0

0

2;

0

0.204+0.12638i

0

0

2;

0

0

0

0

2;

0

0.306+0.18962i

0

0

2;

0

0

0

0

2;

0.5

0

1.1

1.1

0

3;

0

0.343+0.21256i

0

0

2;

0

0

0

0

2;

0

0

0

0

2];% 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节点;

%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

%左节点处于1侧

p=B1(i,1);q=B1(i,2);

else

%左节点处于K侧

p=B1(i,2);q=B1(i,1);

end

Y(p,q)=Y(p,q)-1./(B1(i,3)*B1(i,5));%非对角元

Y(q,p)=Y(p,q);

%非对角元

Y(q,q)=Y(q,q)+1./(B1(i,3)*B1(i,5)^2)+B1(i,4)./2;%对角元K侧

Y(p,p)=Y(p,p)+1./B1(i,3)+B1(i,4)./2;

%对角元1侧

end %求导纳矩阵

disp('导纳矩阵 Y=');disp(Y)%---------------------------G=real(Y);B=imag(Y);

%分解出导纳阵的实部和虚部

for i=1:n

%给定各节点初始电压的实部和虚部

e(i)=real(B2(i,3));

f(i)=imag(B2(i,3));

V(i)=B2(i,4);

%PV节点电压给定模值

end for i=1:n

%给定各节点注入功率

S(i)=B2(i,1)-B2(i,2);

%i节点注入功率SG-SL

B(i,i)=B(i,i)+B2(i,5);%i节点无功补偿量

end %===================== P=real(S);Q=imag(S);

%分解出各节点注入的有功和无功功率 ICT1=0;IT2=1;N0=2*n;N=N0+1;a=0;%迭代次数ICT1、a;不满足收敛要求的节点数IT2 while IT2~=0

% N0=2*n 雅可比矩阵的阶数;N=N0+1扩展列

IT2=0;a=a+1;

for i=1:n

if i~=isb

%非平衡节点

C(i)=0;D(i)=0;

for j1=1:n

C(i)=C(i)+G(i,j1)*e(j1)-B(i,j1)*f(j1);%Σ(Gij*ej-Bij*fj)

D(i)=D(i)+G(i,j1)*f(j1)+B(i,j1)*e(j1);%Σ(Gij*fj+Bij*ej)

end

P1=C(i)*e(i)+f(i)*D(i);%节点功率P计算eiΣ(Gij*ej-Bij*fj)+fiΣ(Gij*fj+Bij*ej)

Q1=C(i)*f(i)-e(i)*D(i);%节点功率Q计算fiΣ(Gij*ej-Bij*fj)-eiΣ(Gij*fj+Bij*ej)%求i节点有功和无功功率P',Q'的计算值

V2=e(i)^2+f(i)^2;

%电压模平方

%========= 以下针对非PV节点来求取功率差及Jacobi矩阵元素 =========

if B2(i,6)~=3

%非PV节点

DP=P(i)-P1;

%节点有功功率差

DQ=Q(i)-Q1;

%节点无功功率差

%=============== 以上为除平衡节点外其它节点的功率计算 ================= %================= 求取Jacobi矩阵 ===================

for j1=1:n

if j1~=isb&j1~=i

%非平衡节点&非对角元

X1=-G(i,j1)*e(i)-B(i,j1)*f(i);% dP/de=-dQ/df

X2=B(i,j1)*e(i)-G(i,j1)*f(i);% dP/df=dQ/de

X3=X2;

% X2=dp/df X3=dQ/de

X4=-X1;

% X1=dP/de X4=dQ/df

p=2*i-1;q=2*j1-1;

J(p,q)=X3;J(p,N)=DQ;m=p+1;

% X3=dQ/de J(p,N)=DQ节点无功功率差

J(m,q)=X1;J(m,N)=DP;q=q+1;

% X1=dP/de J(m,N)=DP节点有功功率差

J(p,q)=X4;J(m,q)=X2;

% X4=dQ/df X2=dp/df

elseif j1==i&j1~=isb %非平衡节点&对角元

X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de

X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/df

X3=D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dQ/de

X4=-C(i)+G(i,i)*e(i)+B(i,i)*f(i);% dQ/df

p=2*i-1;q=2*j1-1;J(p,q)=X3;J(p,N)=DQ;%扩展列△Q

m=p+1;

J(m,q)=X1;q=q+1;J(p,q)=X4;J(m,N)=DP;%扩展列△P

J(m,q)=X2;

end

end

else

%=============== 下面是针对PV节点来求取Jacobi矩阵的元素 ===========

DP=P(i)-P1;

% PV节点有功误差

DV=V(i)^2-V2;

% PV节点电压误差

for j1=1:n

if j1~=isb&j1~=i

%非平衡节点&非对角元

X1=-G(i,j1)*e(i)-B(i,j1)*f(i);

% dP/de

X2=B(i,j1)*e(i)-G(i,j1)*f(i);

% dP/df

X5=0;X6=0;

p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;% PV节点电压误差

m=p+1;

J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;

% PV节点有功误差

J(m,q)=X2;

elseif j1==i&j1~=isb %非平衡节点&对角元

X1=-C(i)-G(i,i)*e(i)-B(i,i)*f(i);% dP/de

X2=-D(i)+B(i,i)*e(i)-G(i,i)*f(i);% dP/df

X5=-2*e(i);

X6=-2*f(i);

p=2*i-1;q=2*j1-1;J(p,q)=X5;J(p,N)=DV;% PV节点电压误差

m=p+1;

J(m,q)=X1;J(m,N)=DP;q=q+1;J(p,q)=X6;

% PV节点有功误差

J(m,q)=X2;

end

end

end

end

end %========= 以上为求雅可比矩阵的各个元素及扩展列的功率差或电压差 =====================

for k=3:N0

% N0=2*n(从第三行开始,第一、二行是平衡节点)

k1=k+1;N1=N;

% N=N0+1 即 N=2*n+1扩展列△P、△Q 或 △U

for k2=k1:N1

% 从k+1列的Jacobi元素到扩展列的△P、△Q

或 △U

J(k,k2)=J(k,k2)./(J(k,k)+eps);% 用K行K列对角元素去除K行K列后的非对角元素进行规格化

end

J(k,k)=1;

% 对角元规格化K行K列对角元素赋1

%==================== 回代运算

=======================================

if k~=3

% 不是第三行

k > 3

k4=k-1;

for k3=3:k4

% 用k3行从第三行开始到当前行的前一行k4行消去

for k2=k1:N1 %

k3行后各行上三角元素

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算(当前行k列元素消为0)

end

%用当前行K2列元素减去当前行k列元素乘以第k行K2列元素

J(k3,k)=0;%当前行第k列元素已消为0

end

if k==N0

%若已到最后一行

break;

end

%================== 前代运算

==================================

for k3=k1:N0

% 从k+1行到2*n最后一行

for k2=k1:N1

% 从k+1列到扩展列消去k+1行后各行下三角元素

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算

end

%用当前行K2列元素减去当前行k列元素乘以第k行K2列元素

J(k3,k)=0;%当前行第k列元素已消为0

end

else

%是第三行k=3

%====================== 第三行k=3的前代运算 ========================

for k3=k1:N0

%从第四行到2n行(最后一行)

for k2=k1:N1

%从第四列到2n+1列(即扩展列)

J(k3,k2)=J(k3,k2)-J(k3,k)*J(k,k2);%消去运算(当前行3列元素消为0)

end

%用当前行K2列元素减去当前行3列元素乘以第三行K2列元素

J(k3,k)=0;%当前行第3列元素已消为0

end

end

end %====上面是用线性变换方式高斯消去法将Jacobi矩阵化成单位矩阵=====

for k=3:2:N0-1

L=(k+1)./2;

e(L)=e(L)-J(k,N);

%修改节点电压实部

k1=k+1;

f(L)=f(L)-J(k1,N);

%修改节点电压虚部

end

%------修改节点电压-----------

for k=3:N0

DET=abs(J(k,N));

if DET>=pr

%电压偏差量是否满足要求

IT2=IT2+1;%不满足要求的节点数加1

end

end

ICT2(a)=IT2;

%不满足要求的节点数

ICT1=ICT1+1;

%迭代次数 end %用高斯消去法解”w=-J*V" disp('迭代次数:');disp(ICT1);disp('没有达到精度要求的个数:');disp(ICT2);for k=1:n

V(k)=sqrt(e(k)^2+f(k)^2);

%计算各节点电压的模值

sida(k)=atan(f(k)./e(k))*180./pi;

%计算各节点电压的角度

E(k)=e(k)+f(k)*j;

%将各节点电压用复数表示 end %=============== 计算各输出量 =========================== disp('各节点的实际电压标幺值E为(节点号从小到大排列):');disp(E);

%显示各节点的实际电压标幺值E用复数表示 disp('----------------------');disp('各节点的电压大小V为(节点号从小到大排列):');disp(V);

%显示各节点的电压大小V的模值 disp('----------------------');disp('各节点的电压相角sida为(节点号从小到大排列):');disp(sida);

%显示各节点的电压相角 for p=1:n

C(p)=0;

for q=1:n

C(p)=C(p)+conj(Y(p,q))*conj(E(q));%计算各节点的注入电流的共轭值

end

S(p)=E(p)*C(p);

%计算各节点的功率 S = 电压 X 注入电流的共轭值 end disp('各节点的功率S为(节点号从小到大排列):');disp(S);

%显示各节点的注入功率

disp('----------------------');disp('各条支路的首端功率Si为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

if B1(i,6)==0

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))));

Siz(i)=Si(p,q);

else

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))));

Siz(i)=Si(p,q);

end

disp(Si(p,q));

SSi(p,q)=Si(p,q);

ZF=['S(',num2str(p),',',num2str(q),')=',num2str(SSi(p,q))];

disp(ZF);

disp('----------------------');end disp('各条支路的末端功率Sj为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

if B1(i,6)==0

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))));

Sjy(i)=Sj(q,p);

else

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))));

Sjy(i)=Sj(q,p);

end

disp(Sj(q,p));

SSj(q,p)=Sj(q,p);

ZF=['S(',num2str(q),',',num2str(p),')=',num2str(SSj(q,p))];

disp(ZF);

disp('----------------------');end disp('各条支路的功率损耗DS为(顺序同您输入B1时一致):');for i=1:nl

p=B1(i,1);q=B1(i,2);

DS(i)=Si(p,q)+Sj(q,p);

disp(DS(i));

DDS(i)=DS(i);

ZF=['DS(',num2str(p),',',num2str(q),')=',num2str(DDS(i))];

disp(ZF);

disp('----------------------');end

如果源程序的运行结果需要作图可用下面的程序

figure(1);subplot(1,2,1);plot(V);xlabel('节点号');ylabel('电压标幺值');grid on;subplot(1,2,2);plot(sida);xlabel('节点号');ylabel('电压角度');grid on;figure(2);subplot(2,2,1);P=real(S);Q=imag(S);bar(P);xlabel('节点号');ylabel('节点注入有功');grid on;subplot(2,2,2);bar(Q);xlabel('节点号');ylabel('节点注入无功');grid on;subplot(2,2,3);P1=real(Siz);Q1=imag(Siz);bar(P1);xlabel('支路号');ylabel('支路首端注入有功');grid on;subplot(2,2,4);bar(Q1);xlabel('支路号');ylabel('支路首端注入无功');grid on;

总结

通过本次课程设计让我有复习了一次潮流计算的相关知识,跟家清晰了什么事潮流计算以及潮流计算的在电力系统的重要性。电力系统的稳定运行状况即是正常运行状况,是指电力系统在稳定运行条件下电压、功率的分布,也称为潮流分布。电力系统分析的潮流计算是电力系统分析的一个重要的部分。通过对电力系统潮流分布的分析和计算,可进一步对系统运行的安全性,经济性进行分析、评估,提出改进措施。同时潮流分布也是电力系统规划设计的一项基础工作。

整个计算过程的模型建立并不是十分复杂,但计算过程十分繁琐、计算量相当的大,而且由于枝节太多很容易算错。不过在计算潮流计算的过程中却对以往学过的电力系统分析的相关知识进行了一次较为深入的复习。而且整个计算对计算量的要求很大,锻炼了我们的计算能力。而且对细节的把握也得到了锻炼,做题的精细程度得到了提高。

参考文献

[1]何仰赞, 温增银《电力系统分析》(第三版)[M].华中科技大学,2002 [2]http://baike.baidu.com/view/627420.[3]王守相,刘玉田 电力系统潮流计算研究现状--《山东电力技术》1996年05期

[4]何仰赞,温增银.电力系统分析(上册)第三版[M].湖北:华中科技大学出版社,2002 [5] 刘同娟.MATLAB在电路分析中的应用.电气电子教学学报.2002 [6] 西安交通大学等.电力系统计算[M].北京:水利电力出版社,1993.12 [7] 李光琦.电力系统暂态分析[M].北京: 水利电力出版社,2002.5 [8]何仰赞,温增银.电力系统分析(下册)第三版[M].湖北:华中科技大学出版社,2002 [9]韦化,李滨,杭乃善,等.大规模水一火电力系统最优潮流的现代内点算法实现[J].中国电机工程学报,2003.23(6):13一l8.

[10]Chen Luo—nan,Suzuki Hideki,Katou Kazuo.Mean fieldtheory for optimal power flow[J].IEEE Transactions OilPower Systems,1997,12(4):1481·1486

第五篇:基于MATLAB的电力系统潮流计算

基于MATLAB的电力系统潮流计算

%简单潮流计算的小程序,相关的原始数据数据数据输入格式如下:

%B1是支路参数矩阵,第一列和第二列是节点编号。节点编号由小到大编写 %对于含有变压器的支路,第一列为低压侧节点编号,第二列为高压侧节点 %编号,将变压器的串联阻抗置于低压侧处理。%第三列为支路的串列阻抗参数。%第四列为支路的对地导纳参数。

%第五烈为含变压器支路的变压器的变比

%第六列为变压器是否是否含有变压器的参数,其中“1”为含有变压器,%“0”为不含有变压器。

%B2为节点参数矩阵,其中第一列为节点注入发电功率参数;第二列为节点 %负荷功率参数;第三列为节点电压参数;第六列为节点类型参数,其中 %“1”为平衡节点,“2”为PQ节点,“3”为PV节点参数。

%X为节点号和对地参数矩阵。其中第一列为节点编号,第二列为节点对地 %参数。

n=input('请输入节点数:n=');n1=input('请输入支路数:n1=');isb=input('请输入平衡节点号:isb=');pr=input('请输入误差精度:pr=');B1=input('请输入支路参数:B1=');B2=input('请输入节点参数:B2=');X=input('节点号和对地参数:X=');Y=zeros(n);Times=1;%置迭代次数为初始值 %创建节点导纳矩阵 for i=1:n1 if B1(i,6)==0 %不含变压器的支路 p=B1(i,1);q=B1(i,2);Y(p,q)=Y(p,q)-1/B1(i,3);Y(q,p)=Y(p,q);Y(p,p)=Y(p,p)+1/B1(i,3)+0.5*B1(i,4);Y(q,q)=Y(q,q)+1/B1(i,3)+0.5*B1(i,4);else %含有变压器的支路 p=B1(i,1);q=B1(i,2);Y(p,q)=Y(p,q)-1/(B1(i,3)*B1(i,5));Y(q,p)=Y(p,q);Y(p,p)=Y(p,p)+1/B1(i,3);Y(q,q)=Y(q,q)+1/(B1(i,5)^2*B1(i,3));end end Y OrgS=zeros(2*n-2,1);DetaS=zeros(2*n-2,1);%将OrgS、DetaS初始化

%创建OrgS,用于存储初始功率参数 h=0;j=0;for i=1:n %对PQ节点的处理 if i~=isb&B2(i,6)==2 h=h+1;for j=1:n OrgS(2*h-1,1)=OrgS(2*h-1,1)+real(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))-real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));end end end for i=1:n %对PV节点的处理,注意这时不可再将h初始化为0 if i~=isb&B2(i,6)==3 h=h+1;for j=1:n OrgS(2*h-1,1)=OrgS(2*h-1,1)+real(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))-real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));end end end OrgS %创建PVU 用于存储PV节点的初始电压 PVU=zeros(n-h-1,1);t=0;for i=1:n if B2(i,6)==3 t=t+1;PVU(t,1)=B2(i,3);end end PVU %创建DetaS,用于存储有功功率、无功功率和电压幅值的不平衡量 h=0;for i=1:n %对PQ节点的处理 if i~=isb&B2(i,6)==2 h=h+1;DetaS(2*h-1,1)=real(B2(i,2))-OrgS(2*h-1,1);DetaS(2*h,1)=imag(B2(i,2))-OrgS(2*h,1);end end t=0;for i=1:n %对PV节点的处理,注意这时不可再将h初始化为0 if i~=isb&B2(i,6)==3 h=h+1;t=t+1;DetaS(2*h-1,1)=real(B2(i,2))-OrgS(2*h-1,1);DetaS(2*h,1)=real(PVU(t,1))^2+imag(PVU(t,1))^2-real(B2(i,3))^2-imag(B2(i,3))^2;end end DetaS %创建I,用于存储节点电流参数 i=zeros(n-1,1);h=0;for i=1:n if i~=isb h=h+1;I(h,1)=(OrgS(2*h-1,1)-OrgS(2*h,1)*sqrt(-1))/conj(B2(i,3));end end I %创建Jacbi(雅可比矩阵)Jacbi=zeros(2*n-2);h=0;k=0;for i=1:n %对PQ节点的处理 if B2(i,6)==2 h=h+1;for j=1:n if j~=isb k=k+1;if i==j %对角元素的处理

Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k-1)=-Jacbi(2*h-1,2*k)+2*real(I(h,1));Jacbi(2*h,2*k)=Jacbi(2*h-1,2*k-1)-2*imag(I(h,1));else %非对角元素的处理

Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k-1)=-Jacbi(2*h-1,2*k);Jacbi(2*h,2*k)=Jacbi(2*h-1,2*k-1);end if k==(n-1)%将用于内循环的指针置于初始值,以确保雅可比矩阵换行

k=0;end end end end end k=0;for i=1:n %对PV节点的处理 if B2(i,6)==3 h=h+1;for j=1:n if j~=isb k=k+1;if i==j %对角元素的处理

Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k-1)=2*imag(B2(i,3));Jacbi(2*h,2*k)=2*real(B2(i,3));else %非对角元素的处理

Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k-1)=0;Jacbi(2*h,2*k)=0;end if k==(n-1)%将用于内循环的指针置于初始值,以确保雅可比矩阵换行

k=0;end end end end end Jacbi %求解修正方程,获取节点电压的不平衡量 DetaU=zeros(2*n-2,1);DetaU=inv(Jacbi)*DetaS;DetaU %修正节点电压 j=0;for i=1:n %对PQ节点处理 if B2(i,6)==2 j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j-1,1)*sqrt(-1);end end for i=1:n %对PV节点的处理 if B2(i,6)==3 j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j-1,1)*sqrt(-1);end end B2 %开始循环********************************************************************** while abs(max(DetaU))>pr OrgS=zeros(2*n-2,1);%!!初始功率参数在迭代过程中是不累加的,所以在这里必须将其初始化为零矩阵 h=0;j=0;for i=1:n if i~=isb&B2(i,6)==2 h=h+1;for j=1:n OrgS(2*h-1,1)=OrgS(2*h-1,1)+real(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))-real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));end end end for i=1:n if i~=isb&B2(i,6)==3 h=h+1;for j=1:n OrgS(2*h-1,1)=OrgS(2*h-1,1)+real(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))+imag(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));OrgS(2*h,1)=OrgS(2*h,1)+imag(B2(i,3))*(real(Y(i,j))*real(B2(j,3))-imag(Y(i,j))*imag(B2(j,3)))-real(B2(i,3))*(real(Y(i,j))*imag(B2(j,3))+imag(Y(i,j))*real(B2(j,3)));end end end OrgS %创建DetaS h=0;for i=1:n if i~=isb&B2(i,6)==2 h=h+1;DetaS(2*h-1,1)=real(B2(i,2))-OrgS(2*h-1,1);DetaS(2*h,1)=imag(B2(i,2))-OrgS(2*h,1);end end t=0;for i=1:n if i~=isb&B2(i,6)==3 h=h+1;t=t+1;DetaS(2*h-1,1)=real(B2(i,2))-OrgS(2*h-1,1);DetaS(2*h,1)=real(PVU(t,1))^2+imag(PVU(t,1))^2-real(B2(i,3))^2-imag(B2(i,3))^2;end end DetaS %创建I i=zeros(n-1,1);h=0;for i=1:n if i~=isb h=h+1;I(h,1)=(OrgS(2*h-1,1)-OrgS(2*h,1)*sqrt(-1))/conj(B2(i,3));end end I %创建Jacbi Jacbi=zeros(2*n-2);h=0;k=0;for i=1:n if B2(i,6)==2 h=h+1;for j=1:n if j~=isb k=k+1;if i==j Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k-1)=-Jacbi(2*h-1,2*k)+2*real(I(h,1));Jacbi(2*h,2*k)=Jacbi(2*h-1,2*k-1)-2*imag(I(h,1));else Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k-1)=-Jacbi(2*h-1,2*k);Jacbi(2*h,2*k)=Jacbi(2*h-1,2*k-1);end if k==(n-1)k=0;end end end end end k=0;for i=1:n if B2(i,6)==3 h=h+1;for j=1:n if j~=isb k=k+1;if i==j Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3))+imag(I(h,1));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3))+real(I(h,1));Jacbi(2*h,2*k-1)=2*imag(B2(i,3));Jacbi(2*h,2*k)=2*real(B2(i,3));else Jacbi(2*h-1,2*k-1)=-imag(Y(i,j))*real(B2(i,3))+real(Y(i,j))*imag(B2(i,3));Jacbi(2*h-1,2*k)=real(Y(i,j))*real(B2(i,3))+imag(Y(i,j))*imag(B2(i,3));Jacbi(2*h,2*k-1)=0;Jacbi(2*h,2*k)=0;end if k==(n-1)k=0;end end end end end Jacbi DetaU=zeros(2*n-2,1);DetaU=inv(Jacbi)*DetaS;DetaU %修正节点电压 j=0;for i=1:n if B2(i,6)==2 j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j-1,1)*sqrt(-1);end end for i=1:n if B2(i,6)==3 j=j+1;B2(i,3)=B2(i,3)+DetaU(2*j,1)+DetaU(2*j-1,1)*sqrt(-1);end end B2 Times=Times+1;%迭代次数加1 end Times 一个原始数据的例子 节点数 5 支路数 5平衡节点编号 5 精度pr 0.000001 B1(支路参数矩阵)[1 2 0.04+0.25i 0.5i 1 0;1 3 0.1+0.35i 0 1 0;2 3 0.08+0.30i 0.5i 1 0;4 2 0.015i 0 1.05 1;5 3 0.03i 0 1.05 1] B2(节点参数矩阵)[0-1.6-0.8i 1 0 0 2;0-2-1i 1 0 0 2;0-3.7-1.3i 1 0 0 2;0 5+0i 1.05 1.05 0 3;0 0 1.05 1.05 0 1] X(节点号和对地参数)[1 0;2 0;3 0;4 0;5 0]

电力系统潮流计算

——9结点算例-PQ法

原始数据录入data.txt文档:

标号,起始结点,终止结点,支路电阻参数,支路电抗参数,支路对地导纳参数 1,2,5,0.0,0.063,0.0, 2,5,9,0.019,0.072,0.075, 3,6,9,0.012,0.101,0.105, 4,3,6,0.0,0.059,0.0, 5,6,8,0.039,0.17,0.179, 6,4,8,0.017,0.092,0.079, 7,5,7,0.032,0.161,0.153, 8,4,7,0.01,0.085,0.088, 9,1,4,0.0,0.058,0.0, 潮流程序chaoliu.txt文档: #include #include #define N 9 /*总结点数*/ #define M 6 /*PQ结点数*/ #define K 9 /*线路数*/ #define eps 1e-4 void guass(int n,int m,float c[],float b[][N],float x[])/*高斯函数*/ { float a[N][N],y[N];int i,j,k;for(i=0;i=0;i--){ for(j=i+1;jHeadnode-1;j=t->Endnode-1;lr=t->R;lx=t->X;lb1=t->b;lg=lr/(lr*lr+lx*lx);lb=-lx/(lr*lr+lx*lx);g[i][i]+=lg;g[j][j]+=lg;b[i][i]+=lb+lb1;b[j][j]+=lb+lb1;h[i][j]=h[j][i]=-lb1;g[i][j]-=lg;g[j][i]-=lg;b[i][j]-=lb;b[j][i]-=lb;} getch();printf(“n=====jie dian dao na ju zhen=====n”);for(i=0;i

;

float x1[N-1],x2

;for(i=1;imax)max=fabs(dpu[i]);} if(max>=eps){ for(i=0;i

guass(1,N-1,y1,B,x1);for(i=1;imax)max=fabs(dqu[i]);} if(max>=eps){ for(i=0;i

guass(N-M,M,y2,B,x2);for(i=N-M;i

else { kp=0;if(kq==0)val(u,g,b,r,ku,kr,h);else goto top;} } } void val(float u[N],float g[N][N],float b[N][N],float r[N],int ku, int kr,float h[N][N]){ float ps=0,pv1=0,pv2=0;float qs=0,qv1=0,qv2=0;float p[N][N]={0};float q[N][N]={0};float s[N][N];float dp[N][N]={0};float dq[N][N]={0};float ds[N][N];float dSp=0,dSq=0;int i,j;FILE *fp1;printf(”n=====ping heng jie dian gong lv =====n“);getch();for(i=0;i

printf(”n=======shu ju bao cun=====n“);fp1=fopen(”jieguo.txt“,”w+“);{ fprintf(fp1,”xian lu cao liu:n“);for(i=0;i

下载MATLAB计算24点游戏代码word格式文档
下载MATLAB计算24点游戏代码.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    matlab计算AHP层次分析法

    用matlab解决层次分析法AHP 1、求矩阵最大特征值及特征向量 用matlab求: 输入:A=[1 1/2 2 1/4;2 1 1 1/3;1/2 1 1 1/3;4 3 3 1] [x,y]=eig(A) 得出:特征向量x=[0.2688 0.3334......

    Matlab神经网络30个案例第16案例代码

    %ART神经网络的数据分类—患者癌症发病预测%% 清空环境变量 clc clear%% 录入输入数据 % 载入数据并将数据分成训练和预测两类 load gene.mat; data=gene; P=data(1:40,:);......

    基于MATLAB的电力系统潮流计算设计

    关键词:电力系统分析;潮流计算;matlab仿真 中图分类号:tm744 文献标识码:a 文章编号:1006-4311(2016)21-0185-03 0 引言 潮流计算是电力系统稳态运行中的基本计算方法中的一种计算方......

    基于MATLAB的电力系统潮流计算_张宁

    DOI :10 .13207/j.cnki .jnwafu .204.12 .028 第 32卷 第 12期 402 年 12月 西北农林科技大学学报(自然科学版) ruoJ .ofNorthw est Sci -Tech Univ .ofAgri .and F or .......

    delphi24点游戏

    第3章 "速算24"扑克游戏--单元、异常、逻辑 3.1 “速算24”扑克游戏效果说明 “速算24”是一个考察心算能力、有助于开发智力的扑克游戏。在给出4张扑克牌之后,要求应用这些......

    c++24点游戏

    c++24点游戏 #include "iostream" #include "string" using namespace std; //定义Stack类const maxsize=20; enum Error_code { success, overflow, underflow }; tem......

    MATLAB游戏编程实例(拼

    MATLAB游戏编程实例(拼图) 这是一个简单的游戏,只要把数字按顺序排好就可以了。游戏方法是用鼠标点中数字,如果该数字相邻的格子为空,则自动移到到该空格。 本程序是由realghost......

    fc游戏金手指代码(5篇)

    其实就是在里面的第一行输入下列代码,然后开启就可以了 !因为开启之后会造成乱码之类的情况,所以金手指开得越 少越好啦!FC游戏的金手指代码: 忍者蛙的无敌金手指 0574-01-11......