threephasese-onlyenquationc.../SolveIt.m

62 lines
1.9 KiB
Matlab

function XX=SolveIt(deltH,ContrlCount,Balance,Busnum,Loadi,deltF,PD0,PD,QD0,QD,mVolt,Volt,Mat_H,wVolt,wPD,wQD)
% LxComa=FormLxComa(Lx);%Lx=deltF-deltH*Init_Y';
% Lx=LxComa;
% H=-deltdeltF+ddh;
% aa=[
% H,deltH;
% deltH',zeros(size(Init_Y,2));
% ];
aa=[
deltF'*diag([wPD ;wQD ;wVolt])*deltF deltH'
deltH ones(size(deltH,1),size(deltH',2))
];
% yy=[Lx;-Ly];
% t3=2*wPD.*(PD-PD0);
% t4=2*wQD.*(QD-QD0);
% t5=2*wVolt.*(Volt-mVolt);
deltZ=[(PD0-PD);
(QD0-QD);
(mVolt-Volt);
];
yy=[
deltF'*diag([wPD; wQD; wVolt])*deltZ;
-Mat_H ;
];
%% ƽºâ½Úµãµçѹ²»±ä
t=size(Loadi,1)*2;
aa(t+(Balance-1)*3+1,:)=0;
aa(t+(Balance-1)*3+2,:)=0;
aa(t+(Balance-1)*3+3,:)=0;
aa(:,t+(Balance-1)*3+1)=0;
aa(:,t+(Balance-1)*3+2)=0;
aa(:,t+(Balance-1)*3+3)=0;
%aa(t+Balance,t+Balance)=1;
aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),ContrlCount+2*Busnum*3,ContrlCount+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),ContrlCount+2*Busnum*3,ContrlCount+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),ContrlCount+2*Busnum*3,ContrlCount+2*Busnum*3);
%%
t=size(Loadi,1)*2+Busnum*3;
aa(t+(Balance-1)*3+1,:)=0;
aa(t+(Balance-1)*3+2,:)=0;
aa(t+(Balance-1)*3+3,:)=0;
aa(:,t+(Balance-1)*3+1)=0;
aa(:,t+(Balance-1)*3+2)=0;
aa(:,t+(Balance-1)*3+3)=0;
%aa(t+Balance,t+Balance)=1;
aa=aa+sparse(t+(Balance-1)*3+1,t+(Balance-1)*3+1,ones(length(Balance),1),ContrlCount+2*Busnum*3,ContrlCount+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+2,t+(Balance-1)*3+2,ones(length(Balance),1),ContrlCount+2*Busnum*3,ContrlCount+2*Busnum*3);
aa=aa+sparse(t+(Balance-1)*3+3,t+(Balance-1)*3+3,ones(length(Balance),1),ContrlCount+2*Busnum*3,ContrlCount+2*Busnum*3);
%%
dxdy=aa\yy;
%% KLU
%spy(aa)
%dxdy = klu(aa,'\',full(yy));
%%
dX=dxdy(1:ContrlCount);
dY=dxdy(ContrlCount+1:end);
XX=[
dX;
dY;
];
end