pes2014-basic/func_ddh3.m

413 lines
12 KiB
Matlab

function ddh=func_ddh3(AngleIJMat,GB,Volt,Init_Y,Busnum,PVi,PGi,Y)
%决定用循环重写
ContrlCount=size(PVi,1)+size(PGi,1)+Busnum*2;
%deltaPi/deltaThytai_deltaThytaj 非对角元素
% dPidTidTj=zeros(Busnum);
% t1=-Volt'*Volt;
% t2=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat);
% t3=t1.*t2;
% for I=1:Busnum
% for J=1:Busnum
% dPidTidTj(I,J)=dPidTidTj(I,J)+Init_Y(2*I-1)*t3(I,J);
% end
% end
% t2=real(GB).*cos(AngleIJMat)-imag(GB).*sin(AngleIJMat);
% t3=t1.*t2;
% dPjdTidTj=zeros(Busnum);
%
% for I=1:Busnum
% for J=1:Busnum
% dPjdTidTj(I,J)=dPjdTidTj(I,J)+Init_Y(2*J-1)*t3(I,J);
% end
% end
% dPdTidTj=dPidTidTj+dPjdTidTj;%最终非对角元素
%
%
%
% %% deltaP/deltaThyta_deltaThyta 对角元素
% t1=Volt'*Volt;
% t2=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat);
% t3=t1.*t2;
% t4=t3-diag(diag(t3));
% t5=sum(t4,2);
% t6=t5'.*Init_Y(1:2:size(Init_Y,2));%乘y的系数
% dPidTidTi=diag(t6);
% t1=Volt'*Volt;
% t2=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat);
% t2=t1.*t2;
% dPidTjdTj=zeros(Busnum);
% for J=1:Busnum
% for I=1:Busnum
%
% if I==J
% continue;
% end
% dPidTjdTj(J,J)=dPidTjdTj(J,J)+Init_Y(2*I-1)*t2(I,J);
%
% end
% end
%
% dPdTidTi=dPidTidTi+dPidTjdTj;
% %%%%%%%%%
% dPdTidTj=dPdTidTj-diag(diag(dPdTidTj));
% hh=dPdTidTj+dPdTidTi; %#ok<NASGU>
% %% deltaP/deltaThytai_dVi 对角元素
% t1=ones(Busnum,1)*Volt.*(real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat));
% t2=diag(t1);
% t3=t1-diag(t2);%去掉了对角元素的
% t4=sum(t3,2);
% t4=t4'.*Init_Y(1:2:size(Init_Y,2));%乘y的系数
% dPidTidVi=diag(t4);
%
% t1=-Volt'*ones(1,Busnum).*(real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat));
% dPjdTidVi=zeros(Busnum);
% for J=1:Busnum
% for I=1:Busnum
%
% if I==J
% continue;
% end
% dPjdTidVi(J,J)=dPjdTidVi(J,J)+Init_Y(2*I-1)*t1(I,J);
%
% end
% end
% dPdTidVi=dPidTidVi+dPjdTidVi;
% %% deltaP/deltaThytai_dVj 非对角元素
%
% t1=Volt'*ones(1,Busnum).*(real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat));%20111224 存疑与学姐给的公式不一致
% %t1=ones(1,Busnum)'*Volt.*(real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat));
% dPidTidVj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dPidTidVj(I,J)=dPidTidVj(I,J)+Init_Y(2*I-1)*t1(I,J);
% end
% end
%
% dPjdTidVj=zeros(Busnum);
% t1=Volt'*ones(1,Busnum).*(real(GB).*sin(AngleIJMat)+imag(GB).*cos(AngleIJMat));
% for I=1:Busnum
% for J=1:Busnum
% dPjdTidVj(I,J)=dPjdTidVj(I,J)+Init_Y(2*J-1)*t1(I,J);
% end
% end
%
% dPdTidVj=dPidTidVj+dPjdTidVj;
% %%%%%%%%%%%%%%%%%%%%%%
% dPdTidVj=dPdTidVj-diag(diag(dPdTidVj));
% hh=dPdTidVj+dPdTidVi; %#ok<NASGU>
% %% deltaP/dVi_deltaThytaj 非对角元素
% t1=-ones(Busnum,1)*Volt.*(real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat));
% dPidVidTj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dPidVidTj(I,J)=dPidVidTj(I,J)+Init_Y(2*I-1)*t1(I,J);
% end
% end
% t1=-ones(Busnum,1)*Volt.*(real(GB).*sin(AngleIJMat)+imag(GB).*cos(AngleIJMat));
% dPjdVidTj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dPjdVidTj(I,J)=dPjdVidTj(I,J)+Init_Y(2*J-1)*t1(I,J);
% end
% end
% dPdVidTj=dPidVidTj+dPjdVidTj;
% %% deltaPi/dVi_deltaThyta 对角元素
%
% dPdVidTi=dPdTidVi;
% %%%%%%%%%%%%%%%%
% dPdVidTj=dPdVidTj-diag(diag(dPdVidTj));
% hh=dPdVidTj+dPdVidTi;
% %% deltaP/dVi_dVj 非对角元素
% t1=-(real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat));
% dPidVidVj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dPidVidVj(I,J)=dPidVidVj(I,J)+Init_Y(2*I-1)*t1(I,J);
% end
% end
%
%
% t1=-(real(GB).*cos(AngleIJMat)-imag(GB).*sin(AngleIJMat));
% dPjdVidVj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dPjdVidVj(I,J)=dPjdVidVj(I,J)+Init_Y(2*J-1)*t1(I,J);
% end
% end
% dPdVidVj=dPidVidVj+dPjdVidVj;
% %% deltaP/dVi_dVi 对角元素
% t0=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat);
% t1=diag(t0);
% t2=t1'.*Init_Y(1:2:size(Init_Y,2));%乘y的系数
% dPidVidVi=-2*diag(t2);
% dPidVjdVj=0;
% dPdVidVi=dPidVidVi+dPidVjdVj;
% %%%%%%%%%%%
% dPdVidVj=dPdVidVj-diag(diag(dPdVidVj));
% hh=dPdVidVj+dPdVidVi;
% %% 生成APi
% APi=zeros(2*Busnum,2*Busnum);
% dPdTidTj=dPdTidTj-diag(diag(dPdTidTj));
% dPdTidVj=dPdTidVj-diag(diag(dPdTidVj));
% dPdVidTj=dPdVidTj-diag(diag(dPdVidTj));
% dPdVidVj=dPdVidVj-diag(diag(dPdVidVj));
%
% APi(1:2:2*Busnum,1:2:2*Busnum)=dPdTidTj;%%非对角 TT
% APi(1:2:2*Busnum,2:2:2*Busnum)=dPdTidVj;%%非对角 TV
% APi(2:2:2*Busnum,1:2:2*Busnum)=dPdVidTj;%%非对角 VT
% APi(2:2:2*Busnum,2:2:2*Busnum)=dPdVidVj;%%非对角 VV
%
% APi(1:2:2*Busnum,1:2:2*Busnum)=APi(1:2:2*Busnum,1:2:2*Busnum)+dPdTidTi;%%对角
% APi(1:2:2*Busnum,2:2:2*Busnum)=APi(1:2:2*Busnum,2:2:2*Busnum)+dPdTidVi;%%对角
% APi(2:2:2*Busnum,1:2:2*Busnum)=APi(2:2:2*Busnum,1:2:2*Busnum)+dPdVidTi;%%对角
% APi(2:2:2*Busnum,2:2:2*Busnum)=APi(2:2:2*Busnum,2:2:2*Busnum)+dPdVidVi;%%对角
% %% deltaQ/deltaThyta_deltaThyta 非对角元素
% t1=-Volt'*Volt;
% % %t1=Volt'*Volt;
% t2=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat);
% t3=t1.*t2;
% dQidTidTj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dQidTidTj(I,J)=dQidTidTj(I,J)+Init_Y(2*I)*t3(I,J);
% end
% end
%
% t2=real(GB).*sin(AngleIJMat)+imag(GB).*cos(AngleIJMat);
% t3=-t1.*t2;
%
% dQjdTidTj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dQjdTidTj(I,J)=dQjdTidTj(I,J)+Init_Y(2*J)*t3(I,J);
% end
% end
%
% dQdTidTj=dQidTidTj+dQjdTidTj;
% %% deltaQ/deltaThyta_deltaThyta 对角元素
% t1=Volt'*Volt;
% t2=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat);
% t3=t1.*t2;
% t4=t3-diag(diag(t3));
% t5=sum(t4,2);
% t6=t5'.*Init_Y(2:2:size(Init_Y,2));
% dQidTidTi=diag(t6);
% t1=Volt'*Volt;
% t2=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat);
% t3=t1.*t2;
% dQjdTidTi=zeros(Busnum);
% for J=1:Busnum
% for I=1:Busnum
%
% if I==J
% continue;
% end
% dQjdTidTi(J,J)=dQjdTidTi(J,J)+Init_Y(2*I)*t3(I,J);
%
% end
% end
%
% dQdTidTi=dQjdTidTi+dQidTidTi;
% %%%%%%%%%%%%
% dQdTidTj=dQdTidTj-diag(diag(dQdTidTj));
% hh=dQdTidTj+dQdTidTi;
% %% deltaQ/deltaThyta_deltaV 非对角元素
% t1=-Volt;
% t2=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat);
% t3=t1'*ones(1,Busnum).*t2;
% dQidTidVj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dQidTidVj(I,J)=dQidTidVj(I,J)+Init_Y(2*I)*t3(I,J);
% end
% end
% t2=real(GB).*cos(AngleIJMat)-imag(GB).*sin(AngleIJMat);
% t3=Volt'*ones(1,Busnum).*t2;
% dQjdTidVj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% %dQjdTidVj(I,J)=dQidTidVj(I,J)+Init_Y(2*J)*t3(I,J); 20111225
% dQjdTidVj(I,J)=dQjdTidVj(I,J)+Init_Y(2*J)*t3(I,J);
% end
% end
%
% dQdTidVj=dQidTidVj+dQjdTidVj;
% %% deltaQ/deltaThyta_deltaV 对角元素
%
% t1=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat);
% t2=-ones(Busnum,1)*Volt.*t1;
% t2=t2-diag(diag(t2));
% t3=sum(t2,2);
% t3=t3'.*Init_Y(2:2:size(Init_Y,2));
% dQidTidVi=diag(t3);
%
%
%
% t1=Volt'*ones(1,Busnum).*(real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat));
% t2=t1-diag(diag(t1));
% dQjdTidVi=zeros(Busnum);
% for J=1:Busnum
% for I=1:Busnum
%
% if I==J
% continue;
% end
% dQjdTidVi(J,J)=dQjdTidVi(J,J)+Init_Y(2*I)*t2(I,J);
%
% end
% end
%
% dQdTidVi=dQidTidVi+dQjdTidVi;
% dQdTidVj=dQdTidVj-diag(diag(dQdTidVj));
% hh=dQdTidVj+dQdTidVi;
% %% deltaQ/deltaV_deltaV 非对角元素
% t1=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat);
% t2=-t1;
% dQidVidVj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dQidVidVj(I,J)=dQidVidVj(I,J)+Init_Y(2*I)*t2(I,J);
% end
% end
%
% t1=real(GB).*sin(AngleIJMat)+imag(GB).*cos(AngleIJMat);
% dQjdVidVj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dQjdVidVj(I,J)=dQjdVidVj(I,J)+Init_Y(2*J)*t1(I,J);
% end
% end
%
% dQdVidVj=dQidVidVj+dQjdVidVj;
% %% deltaQ/deltaV_deltaV 对角元素
% t1=-2*(real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat));
% t2=diag(t1);
% t3=t2'.*Init_Y(2:2:size(Init_Y,2));%乘y的系数
% dQidVidVi=diag(t3);
%
% dQjdVidVi=0;
% dQdVidVi=dQidVidVi+dQjdVidVi;
% %%%%%%%%%%%%%%
% dQdVidVj=dQdVidVj-diag(diag(dQdVidVj));
% hh=dQdVidVi+dQdVidVj;
% %% deltaQ/deltaV_deltaThyta 非对角元素
%
% t1=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat);
% t2=ones(Busnum,1)*Volt.*(t1);
% dQidVidTj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dQidVidTj(I,J)=dQidVidTj(I,J)+Init_Y(2*I)*t2(I,J);
% end
% end
%
%
% t1=real(GB).*cos(AngleIJMat)-imag(GB).*sin(AngleIJMat);
% t2=-ones(Busnum,1)*Volt.*(t1);
% dQjdVidTj=zeros(Busnum);
% for I=1:Busnum
% for J=1:Busnum
% dQjdVidTj(I,J)=dQjdVidTj(I,J)+Init_Y(2*J)*t2(I,J);
% end
% end
%
% dQdVidTj=dQidVidTj+dQjdVidTj;
% %% deltaQ/deltaV_deltaThyta 对角元素
% dQdVidTi=dQdTidVi;% @
% dQdVidTj=dQdVidTj-diag(diag(dQdVidTj));
% hhd=dQdVidTi+dQdVidTj;
% %% 生成AQi
% AQi=zeros(2*Busnum,2*Busnum);
% dQdTidTj=dQdTidTj-diag(diag(dQdTidTj));
% dQdTidVj=dQdTidVj-diag(diag(dQdTidVj));
% dQdVidTj=dQdVidTj-diag(diag(dQdVidTj));
% dQdVidVj=dQdVidVj-diag(diag(dQdVidVj));
%
% AQi(1:2:2*Busnum,1:2:2*Busnum)=dQdTidTj;%%非对角 TT
% AQi(1:2:2*Busnum,2:2:2*Busnum)=dQdTidVj;%%非对角 TV
% AQi(2:2:2*Busnum,1:2:2*Busnum)=dQdVidTj;%%非对角 VT
% AQi(2:2:2*Busnum,2:2:2*Busnum)=dQdVidVj;%%非对角 VV
%
% AQi(1:2:2*Busnum,1:2:2*Busnum)=AQi(1:2:2*Busnum,1:2:2*Busnum)+dQdTidTi;%%对角
% AQi(1:2:2*Busnum,2:2:2*Busnum)=AQi(1:2:2*Busnum,2:2:2*Busnum)+dQdTidVi;%%对角
% AQi(2:2:2*Busnum,1:2:2*Busnum)=AQi(2:2:2*Busnum,1:2:2*Busnum)+dQdVidTi;%%对角
% AQi(2:2:2*Busnum,2:2:2*Busnum)=AQi(2:2:2*Busnum,2:2:2*Busnum)+dQdVidVi;%%对角
% %% 生成ddh
% t=[zeros(size(PGi,1)+size(PVi,1),ContrlCount);
% zeros(2*Busnum,size(PVi,1)+size(PGi,1)),AQi+APi;
% ];
% ddh=t;
%% 以下是学姐给的公式
AngleIJ=AngleIJMat-angle(GB);
%yP=Init_Y(1:2:size(Init_Y,2));
yP=Init_Y(1:size(Init_Y,2)/2);%暂时改这里 20111227
%yQ=Init_Y(2:2:size(Init_Y,2));
yQ=Init_Y(size(Init_Y,2)/2+1:size(Init_Y,2));%暂时改这里 20111227
t1=-diag(Y.*cos(AngleIJ')*diag(Volt)*yP');
t2=diag(diag(Volt)*yP')*Y.*cos(AngleIJ);
t3=(t1+t2)*diag(Volt);
t4=-(diag(Y.*cos(AngleIJ)*Volt') -diag(Volt)*Y.*cos(AngleIJ') )*diag(diag(Volt)*yP');
ddPdTdT=t3+t4;%ok1
% tttt=t2*diag(Volt);%ok1
% ttttt=diag(Volt)*Y.*cos(AngleIJ')*diag(diag(Volt)*yP');%ok1
% tttttt=tttt+ttttt;%ok1
% ttttttt=-diag(Y.*cos(AngleIJ)*Volt')*diag(diag(Volt)*yP')+tttt;%ok1
% tttttttt=diag(Volt)*Y.*cos(AngleIJ')*diag(diag(Volt)*yP')+t1*diag(Volt);%ok1
t1=(-diag(Y.*sin(AngleIJ)*Volt')+diag(Volt)*Y.*sin(AngleIJ') )*diag(yP);
t2= -diag( diag(Volt)*yP' )*Y.*sin(AngleIJ)+diag(Y.*sin(AngleIJ')*diag(Volt)*yP');
ddPdVdT=t1+t2;%ok1
%tttt=-diag( diag(Volt)*yP' )*Y.*sin(AngleIJ);
t1=diag( Y.*sin(AngleIJ')*diag(Volt)*yP');
t2=diag(yP)*Y.*sin(AngleIJ)*diag(Volt);
t3=-diag(yP)*diag(Y.*sin(AngleIJ)*Volt');
t4=-Y.*sin(AngleIJ')*diag( diag(Volt)*yP' );
ddPdTdV=t1+t2+t3+t4;%存疑与我的不一样
% tttt=t2;
% ttttt=t4;
t1=Y.*cos(AngleIJ')*diag(yP);
t2=diag(yP)*Y.*cos(AngleIJ);
ddPdVdV=t1+t2;
t1=-diag(Y.*sin(AngleIJ)*Volt');
t2=diag(Volt)*Y.*sin(AngleIJ');
t3=(t1+t2)*diag( diag(Volt)*yQ' );
t4=-diag( diag(Volt)*yQ' )*Y.*sin(AngleIJ);
t5=diag(Y.*sin(AngleIJ')*diag(Volt)*yQ');
t6=-(t4+t5)*diag(Volt);
ddQdTdT=t3+t6;%ok1
% tttt=-(t4)*diag(Volt);
% ttttt=t2*diag( diag(Volt)*yQ' );
% tttttt=t1*diag( diag(Volt)*yQ' )+tttt;
% ttttttt=-t5*diag(Volt)+t2*diag( diag(Volt)*yQ' );
t1=(diag(Y.*cos(AngleIJ)*Volt')-diag(Volt)*Y.*cos(AngleIJ') )*diag(yQ);
t2=+diag( diag(Volt)*yQ' )*Y.*cos(AngleIJ)-diag(Y.*cos(AngleIJ')*diag(Volt)*yQ');
% tttt=diag( diag(Volt)*yQ' )*Y.*cos(AngleIJ);
% ttttt=-diag(Volt)*Y.*cos(AngleIJ') *diag(yQ);
ddQdVdT=t1+t2;
t1=Y.*cos(AngleIJ')*diag(diag(Volt)*yQ');
t2=diag(yQ)*diag(Y.*cos(AngleIJ)*Volt');
t3=-diag(Y.*cos(AngleIJ')*diag(Volt)*yQ');
t4=-diag(yQ)*Y.*cos(AngleIJ)*diag(Volt);
ddQdTdV=t1+t2+t3+t4;
t1=Y.*sin(AngleIJ')*diag(yQ);
t2=diag(yQ)*Y.*sin(AngleIJ);
ddQdVdV=t1+t2;
%%%%
%t=zeros(2*Busnum);
% t(1:2:2*Busnum,1:2:2*Busnum)=ddPdTdT+ddQdTdT;
% %t(1:2:2*Busnum,2:2:2*Busnum)=ddPdTdV+ddQdTdV;
% %t(2:2:2*Busnum,1:2:2*Busnum)=ddPdVdT+ddQdVdT;
% t(1:2:2*Busnum,2:2:2*Busnum)=ddPdVdT+ddQdVdT;
% t(2:2:2*Busnum,1:2:2*Busnum)=ddPdTdV+ddQdTdV;
% t(2:2:2*Busnum,2:2:2*Busnum)=ddPdVdV+ddQdVdV;暂时改一下 20111227
% t=[ddPdVdV+ddQdVdV,ddPdVdT+ddQdVdT;
% ddPdTdV+ddQdTdV,ddPdTdT+ddQdTdT;
% ];再改20111227
t=[ddPdVdV+ddQdVdV,ddPdTdV+ddQdTdV ;
ddPdVdT+ddQdVdT,ddPdTdT+ddQdTdT;
];
t=[zeros(size(PGi,1)+size(PVi,1),ContrlCount);
zeros(2*Busnum,size(PVi,1)+size(PGi,1)),-t;
];
ddh=t;
end