MATLAB编程

发布 2022-09-20 20:12:28 阅读 2245

电力系统基础课程设计报告。

电力系统潮流计算的matlab编程。

程序流程图】:

源程序】:disp电力系统潮流计算的matlab编程。

disp('请输入电力系统参数!')

n=input('请输入节点数:n=')

nl=input('请输入支路数:nl=')

isb=input('请输入平衡节点号:isb=')

pr=input('请输入误差精度:pr=')

b1=input('请输入由各支路参数形成的矩阵:b1=')

b2=input('请输入各节点参数形成的矩阵:b2=')

y=zeros(n);u=zeros(1,n);cta=zeros(1,n);p=zeros(1,n);q=zeros(1,n);c=zeros(1,13);d=zeros(1,13);

dp=zeros(1,13);dq=zeros(1,9);uu=zeros(1,n);c=zeros(1,n);si=zeros(nl);sj=zeros(nl);ds=zeros(nl);

节点导纳矩阵y:

for i=1:nl

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

y(p,q)=y(p,q)-1/(b1(i,3)+1j*b1(i,4

y(q,p)=y(p,q

y(q,q)=y(q,q)+1/(b1(i,3)+1j*b1(i,4))+1j*b1(i,6)/2;

y(p,p)=y(p,p)+1/(b1(i,3)+1j*b1(i,4))+1j*b1(i,6)/2;

endg=real(y);b=imag(y);

为u、cta、p、q赋初值:

for i=1:n

cta(i)=b2(i,6); 电压相角。

u(i)=b2(i,5); 电压模值。

p(i)=b2(i,3);

q(i)=b2(i,4); 节点pq

end迭代开始:

ict1=0;it2=1;

while it2~=0

it2=0;t1=1;t2=1;

for i=1:n

if i~=isb

c(i)=0;

d(i)=0;

for j1=1:n

c(i)=c(i)+u(i)*u(j1)*(g(i,j1)*cos(cta(i)-cta(j1))+b(i,j1)*sin(cta(i)-cta(j1)))求pi

d(i)=d(i)+u(i)*u(j1)*(g(i,j1)*sin(cta(i)-cta(j1))-b(i,j1)*cos(cta(i)-cta(j1)))求qi

enddp(t1)=p(i)-c(i求1~13点的δp

t1=t1+1;

if b2(i,2)==1

dq(t2)=q(i)-d(i求1~9点的δq

t2=t2+1;

end end

endt1=t1-1;t2=t2-1此时t1=n-1=13,t2=pq节点数=9

dpq=[dp';dq误差矩阵。

%判断误差精度,决定是否继续循环运算:

for i=1:t1+t2

if max(abs(dpq(i,:)pr

it2=it2+1;

endend

%雅克比矩阵程序:

h=zeros(t1,t1);n=zeros(t1,t2);k=zeros(t2,t1);l=zeros(t2,t2); 此时t1=13,t2=9

%求雅克比矩阵中的h :

for i=1:t1

for j1=1:t1

if j1~=isb&&j1~=i

h(i,j1)=0-u(i)*u(j1)*(g(i,j1)*sin(cta(i)-cta(j1))-b(i,j1)*cos(cta(i)-cta(j1)))

elseif j1~=isb&&j1==i

h(i,j1)=u(i)^2*b(i,j1)+d(i);

endend

end%求雅克比矩阵中的n :

for i=1:t1

for j1=1:t2

if j1~=isb&&j1~=i

n(i,j1)=0-u(i)*u(j1)*(g(i,j1)*cos(cta(i)-cta(j1))+b(i,j1)*sin(cta(i)-cta(j1)))

elseif j1~=isb&&j1==i

n(i,j1)=0-u(i)^2*g(i,j1)-c(i);

endend

end%求雅克比矩阵中的k :

for i=1:t2

for j1=1:t1

if j1~=isb&&j1~=i

k(i,j1)=u(i)*u(j1)*(g(i,j1)*cos(cta(i)-cta(j1))+b(i,j1)*sin(cta(i)-cta(j1)))

elseif j1~=isb&&j1==i

k(i,j1)=u(i)^2*g(i,j1)-c(i);

endend

end%求雅克比矩阵中的l :

for i=1:t2

for j1=1:t2

if j1~=isb&&j1~=i

l(i,j1)=0-u(i)*u(j1)*(g(i,j1)*sin(cta(i)-cta(j1))-b(i,j1)*cos(cta(i)-cta(j1)))

elseif j1~=isb&&j1==i

l(i,j1)=u(i)^2*b(i,j1)-d(i);

endend

end%求雅克比矩阵 :

j=[h,n;k,l];

%修正矩阵modify:

modify=-inv(j)*dpq;

dcta=modify(1:t1修正矩阵中的δθ

t3=u(:,1:t2

du=diag(t3,0)*modify(t1+1:t1+t2,:)修正矩阵中的δv

%修正节点的电压相角θ:

t4=1;for i=1:t1

if b2(i,2)~=0

cta(1,i)=cta(1,i)+dcta(t4,1);

t4=t4+1;

endend

%修正节点的电压幅值v :

t5=1;for i=1:t2

if b2(i,2)==1

u(1,i)=u(1,i)+du(t5,1);

t5=t5+1;

endend

ict1=ict1+1;

end 迭代结束。

节点复功率s:

for i=1:n

uu(i)=u(i)*cos(cta(i))+1i*u(i)*sin(cta(i));最后计算结果的节点电压转换成直角坐标式。

endfor p=1:n

c(p)=0;

for q=1:n

c(p)=c(p)+conj(y(p,q))*conj(uu(q电流矩阵的共轭i*

ends(p)=uu(p)*c(p求出最终的节点复功率矩阵s=vi*

end平衡节点的功率sp:

sp=0;for i=1:n

sp=sp+uu(isb)*conj(y(isb,i))*conj(uu(i));

end各条支路首端功率si:

for i=1:nl

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

si(p,q)=uu(p)*(conj(uu(p))*conj(b1(i,6)/2)+(conj(uu(p))-conj(uu(q)))conj(1/(b1(i,3)+1j*b1(i,4)))

si(i)=si(p,q);

si1=si([1:20],1);

end各条支路末端功率sj:

for i=1:nl

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

sj(q,p)=uu(q)*(conj(uu(q))*conj(b1(i,6)/2)+(conj(uu(q))-conj(uu(p)))conj(1/(b1(i,3)+1j*b1(i,4)))

sj(i)=sj(q,p);

sj1=sj([1:20],1);

end各条支路功率损耗ds:

for i=1:nl

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

MATLAB编程作业汇总

matlab编程训练 作业。实训一 matlab语言介绍和数值计算。1 先求下列表达式的值,然后显示matlab工作空间的使用情况并保存变量。2.已知,求下列表达式的值 1 a 6 b和a b i 其中i为单位矩阵 a 6 b a b i 2 a b和a.b a b程序 a 12 34 4 34 7...

MATLAB编程基础 习题

1.1请分别用直接构造法 增量构造法 冒号表达式 和linspace函数创建数组 1,3,5,7,9,11 体会以上创建方法有何区别和联系。若数组b为在0 2 之间均匀分布的22个数据,c 1.3,2.5,7.6,2,3 d 23,20,17,14,11,8,5,2 各用何种方法输入较为简单?写出源...

计算实习 MATLAB编程

第一章。1.用3位数字计算出方程 的解x,y,再用6位数字计算出x与y,已知正确解为练习练习x 1,y 1,计算结果说明什么?x,y solve 0.780 x 0.563 y 0.217 0.457 x 0.330 y 0.127 x y a 0.780 0.563 0.457 0.330 b 0...