function ddg=func_ddg(AngleIJMat,GB,Volt,Init_W,Init_Z,Busnum,indexi,indexj,PVi,RestraintCount) c=Init_W+Init_Z; %% dg4_dTdT 对角元素 %t1=-Volt'*Volt; t1=Volt'*Volt; t2=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat); t3=t1.*t2; t4=t3(sub2ind(size(t3),indexi,indexj)); t5=zeros(Busnum); offset=2*size(PVi,1)+Busnum; for I=1:size(indexi,2) t5(indexi(I),indexi(I))=t4(I)*c(offset+I); t5(indexj(I),indexj(I))=t4(I)*c(offset+I); end dPdTidTi=t5; %@@@ %% dg4_dTdT 非对角元素 %t1=Volt'*Volt; t1=-Volt'*Volt; t2=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat); t3=t1.*t2; t5=zeros(Busnum); for I=1:size(indexi,2) t5(indexi(I),indexj(I))=t3(indexi(I),indexj(I))*c(offset+I); t5(indexj(I),indexi(I))=t3(indexi(I),indexj(I))*c(offset+I); end dPdTidTj=t5;% @@@ %% dg4_dVdV 对角元素 t1=real(GB)*2; %dPijdVidVi=t1; t2=zeros(Busnum); for I=1:size(indexi,2) t2(indexi(I),indexi(I))=t1(indexi(I),indexj(I))*c(offset+I); end dPdVidVi=t2; % @ %% dg4_dVdV 非对角元素 t2=real(GB).*cos(AngleIJMat)+imag(GB).*sin(AngleIJMat); t4=zeros(Busnum); for I=1:size(indexi,2) %t4(indexi(I),indexj(I))=t2(indexi(I),indexj(I))*c(offset+I); t4(indexi(I),indexj(I))=-t2(indexi(I),indexj(I))*c(offset+I); %t4(indexj(I),indexi(I))=t2(indexi(I),indexj(I))*c(offset+I); t4(indexj(I),indexi(I))=-t2(indexi(I),indexj(I))*c(offset+I); end dPdVidVj=t4; %@@ %% dg4_dTdV 对角元素 t2=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat); t4=zeros(Busnum); for I=1:size(indexi,2) %t4(indexi(I),indexi(I))=-Volt(indexj(I))*t2(indexi(I),indexi(I))*c(offset+I); t4(indexi(I),indexi(I))=Volt(indexj(I))*t2(indexi(I),indexj(I))*c(offset+I); %t4(indexj(I),indexj(I))=Volt(indexi(I))*t2(indexj(I),indexj(I))*c(offset+I); t4(indexj(I),indexj(I))=-Volt(indexi(I))*t2(indexi(I),indexj(I))*c(offset+I); end dPdTidVi=t4; % @@ %% dg4_dTdV 非对角元素 t1=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat); t2=zeros(Busnum); for I=1:size(indexi,2) %t2(indexi(I),indexj(I))=-Volt(indexi(I))*t1(indexi(I),indexj(I))*c(offset+I); t2(indexi(I),indexj(I))=Volt(indexi(I))*t1(indexi(I),indexj(I))*c(offset+I); %t2(indexj(I),indexi(I))=Volt(indexj(I))*t1(indexi(I),indexj(I))*c(offset+I); t2(indexj(I),indexi(I))=-Volt(indexj(I))*t1(indexi(I),indexj(I))*c(offset+I); end dPdTidVj=t2; % @@ %% dg4_dVdT 对角元素 dPdVidTi=dPdTidVi; %% dg4_dVdT 非对角元素 t1=real(GB).*sin(AngleIJMat)-imag(GB).*cos(AngleIJMat); t2=zeros(Busnum); for I=1:size(indexi,2) %t2(indexi(I),indexj(I))=Volt(indexj(I))*t1(indexi(I),indexj(I))*c(offset+I); t2(indexi(I),indexj(I))=-Volt(indexj(I))*t1(indexi(I),indexj(I))*c(offset+I); %t2(indexj(I),indexi(I))=Volt(indexi(I))*t1(indexi(I),indexj(I))*c(offset+I); t2(indexj(I),indexi(I))=Volt(indexi(I))*t1(indexi(I),indexj(I))*c(offset+I); end dPdVidTj=t2; % @ %% 生成ddg4ddx ddg4ddx=zeros(2*Busnum,2*Busnum); ddg4ddx(1:2:2*Busnum,1:2:2*Busnum)=dPdTidTj;%%非对角 TT ddg4ddx(1:2:2*Busnum,2:2:2*Busnum)=dPdTidVj;%%非对角 TV ddg4ddx(2:2:2*Busnum,1:2:2*Busnum)=dPdVidTj;%%非对角 VT ddg4ddx(2:2:2*Busnum,2:2:2*Busnum)=dPdVidVj;%%非对角 VV ddg4ddx(1:2:2*Busnum,1:2:2*Busnum)=dPdTidTi;%%对角 ddg4ddx(1:2:2*Busnum,2:2:2*Busnum)=dPdTidVi;%%对角 ddg4ddx(2:2:2*Busnum,1:2:2*Busnum)=dPdVidTi;%%对角 ddg4ddx(2:2:2*Busnum,2:2:2*Busnum)=dPdVidVi;%%对角 %% 生成ddg t=[zeros(2*size(PVi,1),RestraintCount); zeros(2*Busnum,RestraintCount-size(PVi,1)-2*Busnum),ddg4ddx; ]; ddg=t; end