function [ output_args,this ] = equ( this,x ) %EQU Summary of this function goes here % Detailed explanation goes here output_args=[]; Volt0=this.Volt0; Balance=this.Balance; % Volt=x(1:length(Volt0)); % VAngel=x(length(Volt0)+1:end); %% 使用零注入begin SEVolt=x(1:length(Volt0)); SEVAngel=x(length(SEVolt)+1:end); Angel=this.Angel; r=this.r; c=this.c; PG=this.PG; QG=this.QG; Y=this.Y; busNum=length(Volt0); VMatrix=sparse(r,c,SEVAngel(r)-SEVAngel(c)-Angel,busNum,busNum); zerosP=diag(SEVolt)*(Y.*cos(VMatrix))*SEVolt; zerosQ=diag(SEVolt)*(Y.*spfun(@sin,VMatrix))*SEVolt; PDi=this.PDi; QDi=this.QDi; zeroInj=setdiff(1:busNum,union(Balance,union(PDi,QDi))); output_args=[zerosP(zeroInj);zerosQ(zeroInj)]; this.cu=zeros(length(output_args),1); this.cl=zeros(length(output_args),1); %% 使用零注入end %电压恒定 output_args=[output_args;SEVolt(Balance)-1]; %相角恒定 output_args=[output_args;SEVAngel(Balance)]; this.cu=zeros(length(output_args),1); this.cl=zeros(length(output_args),1); %% 稠密化 output_args=full(output_args); this.cu=full(this.cu); this.cl=full(this.cl); end