function [G,B,G0,B0]=FormGB(BusNum,LinePara,BranchPara,TransfPara)
%%%%%%%%%%%% 线路支路和接地支路 %%%%%%%%%%%%%%%%%%%%%%%%
RX2=LinePara(:,4).^2+LinePara(:,5).^2;
GIJ=LinePara(:,4)./RX2;
BIJ=-LinePara(:,5)./RX2;
GLine=sparse(LinePara(:,2),LinePara(:,3),-GIJ,BusNum,BusNum);
BLine=sparse(LinePara(:,2),LinePara(:,3),-BIJ,BusNum,BusNum);
G=GLine+GLine';
B=BLine+BLine';
G=G+sparse(LinePara(:,2),LinePara(:,2),GIJ,BusNum,BusNum)+sparse(LinePara(:,3),LinePara(:,3),GIJ,BusNum,BusNum);
B=B+sparse(LinePara(:,2),LinePara(:,2),BIJ+LinePara(:,6),BusNum,BusNum)+...
sparse(LinePara(:,3),LinePara(:,3),BIJ+LinePara(:,6),BusNum,BusNum)+...
sparse(BranchPara(:,1),BranchPara(:,1),BranchPara(:,2),BusNum,BusNum);
B0=sparse(LinePara(:,2),LinePara(:,3),LinePara(:,6),BusNum,BusNum)+... %求线路传输功率时用
sparse(LinePara(:,3),LinePara(:,2),LinePara(:,6),BusNum,BusNum);
%%%%%%%%%%%% 变压器支路 %%%%%%%%%%%%%%%%%%%%%%%
RX2=(TransfPara(:,4).^2+TransfPara(:,5).^2).*TransfPara(:,6);
GIJ=TransfPara(:,4)./RX2;
BIJ=-TransfPara(:,5)./RX2;
GTransf=sparse(TransfPara(:,2),TransfPara(:,3),-GIJ,BusNum,BusNum);
BTransf=sparse(TransfPara(:,2),TransfPara(:,3),-BIJ,BusNum,BusNum);
G=G+GTransf+GTransf';
B=B+BTransf+BTransf';
G=G+sparse(TransfPara(:,2),TransfPara(:,2),GIJ./TransfPara(:,6),BusNum,BusNum)+...
sparse(TransfPara(:,3),TransfPara(:,3),GIJ.*TransfPara(:,6),BusNum,BusNum);
B=B+sparse(TransfPara(:,2),TransfPara(:,2),BIJ./TransfPara(:,6),BusNum,BusNum)+...
sparse(TransfPara(:,3),TransfPara(:,3),BIJ.*TransfPara(:,6),BusNum,BusNum);
G0=sparse(TransfPara(:,2),TransfPara(:,3),GIJ.*(1-TransfPara(:,6))./TransfPara(:,6),BusNum,BusNum)+... %求线路传输功率时用
sparse(TransfPara(:,3),TransfPara(:,2),GIJ.*(TransfPara(:,6)-1),BusNum,BusNum);
B0=B0+sparse(TransfPara(:,2),TransfPara(:,3),BIJ.*(1-TransfPara(:,6))./TransfPara(:,6),BusNum,BusNum)+...
sparse(TransfPara(:,3),TransfPara(:,2),BIJ.*(TransfPara(:,6)-1),BusNum,BusNum);