ncp_sigmoid/Sigmoid函数法/snd_formHSB.m

263 lines
14 KiB
Mathematica
Raw Normal View History

function [HSB,dhx,dgx,dgxT,GIJ,BIJ,L1,U1,LZ,UW,transG,transB,dT_Zt,mut,mub]=snd_formHSB(nodeNum,balNode,opfGoal,lineNum,transNum,lineI,lineJ,transI,transJ,...
T,transG,transB,pgNode,pvNode,G,B,e,f,pgNum,pvNum,pgvNum,xNum,a,m,r,l,u,z,w,y,kt0,mut,Zt,oneTrans,oneCap,Zb,mub,q0,capBi,capNum,capI,tij,Bci,N1,H1,diagE,...
diagF,b0,balNum)
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD>γ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
%<EFBFBD><EFBFBD>дʱ<EFBFBD>2010<EFBFBD><EFBFBD>10<EFBFBD><EFBFBD>
%% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t
dicVar=[tij;Bci];
tmp1=dicVar.*(1-dicVar);
if sum(tmp1)==0
tmp2=0;
else
tmp2=tmp1/sum(tmp1);
end
tmp3=ones(transNum+capNum,1)./(ones(transNum+capNum,1)+tmp2); %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bk=tmp3*b0;
mut_bk=bk(1:transNum);
mub_bk=bk(transNum+1:end);
smallest=0.0000000001; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD>dz<EFBFBD><EFBFBD>ӽ<EFBFBD>0ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.9<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>
large_mut=find(mut>smallest); %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻҪѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
small_mut=find(mut<=smallest);
mut(large_mut)=mut_bk(large_mut).*mut(large_mut);
mut(small_mut)=0.9*mut(small_mut);
large_mub=find(mub>smallest);
small_mub=find(mub<=smallest);
mub(large_mub)=mub_bk(large_mub).*mub(large_mub);
mub(small_mub)=0.9*mub(small_mub);
dT_Zt=oneTrans;
d2T_Zt2=oneTrans;
n_zt= Zt<0; %Ϊ<EFBFBD>˱<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ֵļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>Sigmoid<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
p_zt= Zt>=0; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Zt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>ͬ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ȫ<EFBFBD>ȼۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵĹؼ<EFBFBD><EFBFBD><EFBFBD>
n_Ezu=exp(Zt(n_zt)./mut(n_zt));
dT_Zt(n_zt)=kt0(n_zt).*(n_Ezu./(mut(n_zt).*(oneTrans(n_zt)+n_Ezu).^2)); %ztΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>zt<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
d2T_Zt2(n_zt)=(dT_Zt(n_zt)./mut(n_zt)).*(oneTrans(n_zt)-2*n_Ezu./(oneTrans(n_zt)+n_Ezu));%ztΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>zt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
p_Ezu=exp(-Zt(p_zt)./mut(p_zt));
dT_Zt(p_zt)=kt0(p_zt).*(p_Ezu./(mut(p_zt).*(oneTrans(p_zt)+p_Ezu).^2)); %ztΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>zt<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
d2T_Zt2(p_zt)=(dT_Zt(p_zt)./mut(p_zt)).*(oneTrans(p_zt)-2./(oneTrans(p_zt)+p_Ezu)); %ztΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>zt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
transGmut=transG.*dT_Zt;
transBmut=transB.*dT_Zt;
dcapK_Zb=oneCap;
d2capK_Zb2=oneCap;
n_zb= Zb<0; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Zb<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>
p_zb= Zb>=0;
n_Ezbu=exp(Zb(n_zb)./mub(n_zb));
dcapK_Zb(n_zb)=q0.*(n_Ezbu./(mub(n_zb).*(oneCap(n_zb)+n_Ezbu).^2)); %zbΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>capK<EFBFBD><EFBFBD>zb<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
d2capK_Zb2(n_zb)=(dcapK_Zb(n_zb)./mub(n_zb)).*(oneCap(n_zb)-2*n_Ezbu./(oneCap(n_zb)+n_Ezbu));%zbΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>capK<EFBFBD><EFBFBD>zb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
p_Ezbu=exp(-Zb(p_zb)./mub(p_zb));
dcapK_Zb(p_zb)=q0.*(p_Ezbu./(mub(p_zb).*(oneCap(p_zb)+p_Ezbu).^2)); %zbΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>capK<EFBFBD><EFBFBD>zb<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
d2capK_Zb2(p_zb)=(dcapK_Zb(p_zb)./mub(p_zb)).*(oneCap(p_zb)-2./(oneCap(p_zb)+p_Ezbu));%zbΪ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>capK<EFBFBD><EFBFBD>zb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
capBi_dBci=capBi.*dcapK_Zb;
%% <EFBFBD>γɵ<EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD>ſɱȾ<EFBFBD><EFBFBD><EFBFBD>
ef1=e(transI).*e(transJ)+f(transI).*f(transJ);
ef2=e(transI).*f(transJ)-e(transJ).*f(transI);
ef3=e(transI).*e(transI)+f(transI).*f(transI);
ef1G=ef1.*transGmut;
ef1B=ef1.*transBmut;
ef2G=ef2.*transGmut;
ef2B=ef2.*transBmut;
dhPTi=-ef1G+ef2B+2*ef3.*transGmut.*T;
dhPTj=-ef1G-ef2B;
dhPT=sparse(1:transNum,transI,dhPTi,transNum,nodeNum)+sparse(1:transNum,transJ,dhPTj,transNum,nodeNum);%<EFBFBD>й<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>Ա<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
dhQTi=ef1B+ef2G-2*ef3.*transBmut.*T;
dhQTj=ef1B-ef2G;
dhQT=sparse(1:transNum,transI,dhQTi,transNum,nodeNum)+sparse(1:transNum,transJ,dhQTj,transNum,nodeNum);%<EFBFBD>޹<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD>Ա<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
dhP=sparse(1:pgNum,pgNode,ones(pgNum,1),pgNum,m);
dhQ1=sparse(1:pvNum,pvNode,ones(pvNum,1),pvNum,nodeNum);
dhQ=[sparse(pvNum,nodeNum) dhQ1];
dhcapK1=sparse(1:capNum,capI,(e(capI).^2+f(capI).^2).*capBi_dBci,capNum,nodeNum);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>̶Ե<EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
dhcapK=[sparse(capNum,nodeNum) dhcapK1];
%<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſɱȾ<EFBFBD><EFBFBD><EFBFBD>
deG=diagE*G;
dfB=diagF*B;
deB=diagE*B;
dfG=diagF*G;
dH1=sparse(1:nodeNum,1:nodeNum,H1,nodeNum,nodeNum);
dN1=sparse(1:nodeNum,1:nodeNum,N1,nodeNum,nodeNum);
Hij=-dH1-deG-dfB;
Nij=-dN1+deB-dfG;
Jij=dN1-dfG+deB;
Lij=-dH1+dfB+deG;
dhJacb=[Hij Nij;Jij Lij]'; %<EFBFBD>ϲ<EFBFBD><EFBFBD>γɹ<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſɱȾ<EFBFBD><EFBFBD><EFBFBD>
dhx=[dhPT dhQT;dhP;dhQ;dhcapK;dhJacb]; %<EFBFBD>ϲ<EFBFBD><EFBFBD>γɵ<EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD>ſɱȾ<EFBFBD><EFBFBD><EFBFBD>h(x)
%% <EFBFBD>γɲ<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD>ſɱȾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g(x)
gtransNum=transNum; %<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ͵<EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޲<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ΪZt<EFBFBD><EFBFBD>Zb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޲<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD>
gcapNum=capNum;
dgT1=sparse(1:transNum,1:transNum,ones(transNum,1),transNum,r-lineNum);
dglT=(e(transI).^2+f(transI).^2-e(transI).*e(transJ)-f(transI).*f(transJ))...
.*transGmut+(e(transI).*f(transJ)-e(transJ).*f(transI)).*transBmut;
dgT2=sparse(1:transNum,lineNum-transNum+1:lineNum,dglT,transNum,lineNum);
dgT=[dgT1 dgT2]; %<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>Zt<EFBFBD>󵼵<EFBFBD>ģ<EFBFBD><EFBFBD>
dgP=sparse(1:pgNum,gtransNum+1:gtransNum+pgNum,ones(pgNum,1),pgNum,r); %<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>󵼵<EFBFBD>ģ<EFBFBD><EFBFBD>
dgQ=sparse(1:pvNum,gtransNum+pgNum+1:gtransNum+pgvNum,ones(pvNum,1),pvNum,r);%<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD>󵼵<EFBFBD>ģ<EFBFBD><EFBFBD>
dgcapK=sparse(1:capNum,transNum+pgvNum+1:transNum+pgvNum+capNum,ones(capNum,1),capNum,r);%<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Zb<EFBFBD>󵼵<EFBFBD>ģ<EFBFBD><EFBFBD>
dgve=2*diagE;
dgvf=2*diagF;
sizeG=size(G);
GIJ=G(sub2ind(sizeG,lineI,lineJ));
BIJ=B(sub2ind(sizeG,lineI,lineJ));
dgleI=(2*e(lineI)-e(lineJ)).*GIJ+f(lineJ).*BIJ;
dgleJ=-e(lineI).*GIJ-f(lineI).*BIJ;
dglfI=(2*f(lineI)-f(lineJ)).*GIJ-e(lineJ).*BIJ;
dglfJ=-f(lineI).*GIJ+e(lineI).*BIJ;
dgle=sparse(lineI,(1:lineNum),dgleI,nodeNum,lineNum)+sparse(lineJ,(1:lineNum),dgleJ,nodeNum,lineNum);
dglf=sparse(lineI,(1:lineNum),dglfI,nodeNum,lineNum)+sparse(lineJ,(1:lineNum),dglfJ,nodeNum,lineNum);
dg0=sparse(m,gtransNum+pgvNum+gcapNum);
dgvl=[dgve dgle;dgvf dglf];
dgef=[dg0 dgvl]; %<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ѹʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲿<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
dgx=[dgT;dgP;dgQ;dgcapK;dgef]; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD>ſ˱Ⱦ<EFBFBD><EFBFBD><EFBFBD>
%% <EFBFBD>γɶԽ<EFBFBD><EFBFBD><EFBFBD>
Z=sparse(1:r,1:r,z,r,r);
W=sparse(1:r,1:r,w,r,r);
L1=sparse(1:r,1:r,1./l,r,r);
U1=sparse(1:r,1:r,1./u,r,r);
LZ=L1*Z;
UW=U1*W;
%% <EFBFBD>γɺ<EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
%Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2f(x)
if(opfGoal==2) %Ŀ<EFBFBD><EFBFBD>Ϊ<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
HSdfx=sparse(xNum,xNum);
else if(opfGoal==1)
HSdfx=sparse(transNum+1:transNum+pgNum,transNum+1:transNum+pgNum,2*a(pgNode),xNum,xNum);%<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PG<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĶԽ<EFBFBD>ԪΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0(Ŀ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С)
else if(opfGoal==3)
d2ftei=-2*transGmut.*(e(transI)-e(transJ));
d2ftej=-d2ftei;
d2ftfi=-2*transGmut.*(f(transI)-f(transJ));
d2ftfj=-d2ftfi;
d2fte=sparse(1:transNum,transI,d2ftei,transNum,nodeNum)+sparse(1:transNum,transJ,d2ftej,transNum,nodeNum);
d2ftf=sparse(1:transNum,transI,d2ftfi,transNum,nodeNum)+sparse(1:transNum,transJ,d2ftfj,transNum,nodeNum);
d2fT2=-transG.*d2T_Zt2.*((f(transI)-f(transJ)).^2+(e(transI)-e(transJ)).^2);
d2fT0=sparse(1:transNum,1:transNum,d2fT2,transNum,transNum+pgvNum+capNum);
d2fT=[d2fT0 d2fte d2ftf];
d2fPGQR=sparse(pgvNum,xNum);
d2fcapK=sparse(capNum,xNum);
d2fee=2*(G-sparse(1:nodeNum,1:nodeNum,sum(G,2),nodeNum,nodeNum));
d2fff=d2fee;
zero_nodeNum=sparse(nodeNum,nodeNum);
d2f_ef_ef=[d2fee zero_nodeNum;zero_nodeNum d2fff];
d2efT=[d2fte d2ftf]';
d2f_ef=[d2efT sparse(2*nodeNum,pgvNum+capNum) d2f_ef_ef];
HSdfx=[d2fT;d2fPGQR;d2fcapK;d2f_ef];
else if(opfGoal==4)
d2ftei=2*transBmut.*(e(transI)-e(transJ));
d2ftej=-d2ftei;
d2ftfi=2*transBmut.*(f(transI)-f(transJ));
d2ftfj=-d2ftfi;
d2fte=sparse(1:transNum,transI,d2ftei,transNum,nodeNum)+sparse(1:transNum,transJ,d2ftej,transNum,nodeNum);
d2ftf=sparse(1:transNum,transI,d2ftfi,transNum,nodeNum)+sparse(1:transNum,transJ,d2ftfj,transNum,nodeNum);
d2fT2=transB.*d2T_Zt2.*((f(transI)-f(transJ)).^2+(e(transI)-e(transJ)).^2);
d2fT0=sparse(1:transNum,1:transNum,d2fT2,transNum,transNum+pgvNum+capNum);
d2fT=[d2fT0 d2fte d2ftf];
d2fPGQR=sparse(pgvNum,xNum);
d2fcapK=sparse(capNum,xNum);
d2fee=-2*(B-sparse(1:nodeNum,1:nodeNum,sum(G,2),nodeNum,nodeNum));
d2fff=d2fee;
zero_nodeNum=sparse(nodeNum,nodeNum);
d2f_ef_ef=[d2fee zero_nodeNum;zero_nodeNum d2fff];
d2efT=[d2fte d2ftf]';
d2f_ef=[d2efT sparse(2*nodeNum,pgvNum+capNum) d2f_ef_ef];
HSdfx=[d2fT;d2fPGQR;d2fcapK;d2f_ef];
end
end
end
end
%<EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>ij˻<EFBFBD><EFBFBD><EFBFBD>2h(x)*y
y1=y(1:nodeNum,1);
y2=y(nodeNum+1:2*nodeNum,1);
ef1Gd2=ef1.*transG.*d2T_Zt2;
ef1Bd2=ef1.*transB.*d2T_Zt2;
ef2Gd2=ef2.*transG.*d2T_Zt2;
ef2Bd2=ef2.*transB.*d2T_Zt2;
d2P_T2=(-ef1Gd2+ef2Bd2+2*ef3.*transG.*(dT_Zt.^2+T.*d2T_Zt2)).*y1(transI)+(-ef1Gd2-ef2Bd2).*y1(transJ);
d2Q_T2=(ef1Bd2+ef2Gd2-2*ef3.*transB.*(dT_Zt.^2+T.*d2T_Zt2)).*y2(transI)+(ef1Bd2-ef2Gd2).*y2(transJ);
dhT2=d2P_T2+d2Q_T2; %<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>̶Ա<EFBFBD>ѹ<EFBFBD><EFBFBD>Zt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HSdhT=sparse(1:transNum,1:transNum,dhT2,transNum+pgvNum+capNum,transNum+pgvNum+capNum)+...
sparse(transNum+pgvNum+1:transNum+pgvNum+capNum,transNum+pgvNum+1:transNum+pgvNum+capNum,...
(e(capI).^2+f(capI).^2).*d2capK_Zb2.*y2(capI),transNum+pgvNum+capNum,transNum+pgvNum+capNum);
eiG=e(transI).*transGmut;
ejG=e(transJ).*transGmut;
eiB=e(transI).*transBmut;
ejB=e(transJ).*transBmut;
fiG=f(transI).*transGmut;
fjG=f(transJ).*transGmut;
fiB=f(transI).*transBmut;
fjB=f(transJ).*transBmut;
ejG_fjB=ejG-fjB;
ejGfjB=ejG+fjB;
fjGejB=fjG+ejB;
ejB_fjG=ejB-fjG;
eiGfiB=eiG+fiB;
eiG_fiB=eiG-fiB;
eiB_fiG=eiB-fiG;
fiGeiB=fiG+eiB;
dP2_ei_t=(4*eiG.*T-ejG_fjB).*y1(transI)-ejGfjB.*y1(transJ);
dP2_ej_t=-eiGfiB.*y1(transI)-eiG_fiB.*y1(transJ);
dQ2_ei_t=(-4*eiB.*T+fjGejB).*y2(transI)+ejB_fjG.*y2(transJ);
dQ2_ej_t=eiB_fiG.*y2(transI)+fiGeiB.*y2(transJ);
HSdh_et=sparse(1:transNum,transI,dP2_ei_t+dQ2_ei_t,transNum,nodeNum)+sparse(1:transNum,transJ,dP2_ej_t+dQ2_ej_t,transNum,nodeNum);%<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>Zt<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶԵ<EFBFBD>ѹʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
dP2_fi_t=(4*fiG.*T-fjGejB).*y1(transI)+ejB_fjG.*y1(transJ);
dP2_fj_t=eiB_fiG.*y1(transI)-fiGeiB.*y1(transJ);
dQ2_fi_t=(-4*fiB.*T-ejG_fjB).*y2(transI)+ejGfjB.*y2(transJ);
dQ2_fj_t=eiGfiB.*y2(transI)-eiG_fiB.*y2(transJ);
HSdh_ft=sparse(1:transNum,transI,dP2_fi_t+dQ2_fi_t,transNum,nodeNum)+sparse(1:transNum,transJ,dP2_fj_t+dQ2_fj_t,transNum,nodeNum);%<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>Zt<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶԵ<EFBFBD>ѹ<EFBFBD>鲿<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
HSdh_eft=[HSdh_et HSdh_ft];
HSdh_tef=HSdh_eft';
HSdhPQ=sparse(pgvNum,2*nodeNum); %<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>PG<EFBFBD><EFBFBD>QR<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
d2hcap_e=sparse(1:capNum,capI,2*e(capI).*capBi_dBci.*y2(capI),capNum,nodeNum); %<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>Zb<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>e<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
d2hcap_f=sparse(1:capNum,capI,2*f(capI).*capBi_dBci.*y2(capI),capNum,nodeNum); %<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>Zb<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>f<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
HSdhcap_ef=[d2hcap_e d2hcap_f];
d2htPQ_ef=[HSdh_eft;HSdhPQ;HSdhcap_ef];
HSdhtPQ=[HSdhT d2htPQ_ef];
HSdhx1=sparse(m,pgvNum);
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
diagy1=sparse(1:nodeNum,1:nodeNum,y1,nodeNum,nodeNum);
diagy2=sparse(1:nodeNum,1:nodeNum,y2,nodeNum,nodeNum);
HSdhey=-diagy1*G+diagy2*B+(-G*diagy1+B*diagy2);
HSdhefy=diagy1*B+diagy2*G-(B*diagy1+G*diagy2);
HSdhx2=[HSdhey HSdhefy;HSdhefy' HSdhey];
HSdhx=[HSdhtPQ;HSdh_tef HSdhx1 HSdhcap_ef' HSdhx2];
%<EFBFBD>γɲ<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2g(x)*(z+w)
ZWcl=z(gtransNum+pgvNum+gcapNum+nodeNum+1:end)+w(gtransNum+pgvNum+gcapNum+nodeNum+1:end);
ZWv=z(gtransNum+pgvNum+gcapNum+1:gtransNum+pgvNum+gcapNum+nodeNum)+w(gtransNum+pgvNum+gcapNum+1:gtransNum+pgvNum+gcapNum+nodeNum);
dg2T=((e(transI).^2+f(transI).^2-e(transI).*e(transJ)-f(transI).*f(transJ)).*transG.*d2T_Zt2+...
(e(transI).*f(transJ)-e(transJ).*f(transI)).*transB.*d2T_Zt2).*ZWcl(lineNum-transNum+1:end);
HSdg2T=sparse(1:transNum,1:transNum,dg2T,transNum,transNum); %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>Zt<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
dgeiT=((2*e(transI)-e(transJ)).*transGmut+f(transJ).*transBmut).*ZWcl(lineNum-transNum+1:end);
dgejT=(-e(transI).*transGmut-f(transI).*transBmut).*ZWcl(lineNum-transNum+1:end);
dgeT=sparse(1:transNum,transI,dgeiT,transNum,nodeNum)+sparse(1:transNum,transJ,dgejT,transNum,nodeNum);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>Zt<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>e<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
dgfiT=((2*f(transI)-f(transJ)).*transGmut-e(transJ).*transBmut).*ZWcl(lineNum-transNum+1:end);
dgfjT=(-f(transI).*transGmut+e(transI).*transBmut).*ZWcl(lineNum-transNum+1:end);
dgfT=sparse(1:transNum,transI,dgfiT,transNum,nodeNum)+sparse(1:transNum,transJ,dgfjT,transNum,nodeNum);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>Zt<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>f<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
HSdgefT=[dgeT dgfT];
HSdgT=[HSdg2T sparse(transNum,pgvNum+capNum) HSdgefT];
HSdgee=sparse(lineI,lineI,2*GIJ.*ZWcl,nodeNum,nodeNum)-sparse(lineI,lineJ,GIJ.*ZWcl,nodeNum,nodeNum)-...
sparse(lineJ,lineI,GIJ.*ZWcl,nodeNum,nodeNum)+sparse(1:nodeNum,1:nodeNum,2*ZWv,nodeNum,nodeNum);
HSdgff=HSdgee; %<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
HSdgef=sparse(lineI,lineJ,BIJ.*ZWcl,nodeNum,nodeNum)-sparse(lineJ,lineI,BIJ.*ZWcl,nodeNum,nodeNum);
HSdgfe=HSdgef';
HSdgx1=[HSdgee HSdgef;HSdgfe HSdgff];
HSdgxtPQ_0=sparse(pgvNum+capNum,xNum);
HSdgef_0=[HSdgefT' sparse(2*nodeNum,pgvNum+capNum)];
HSdgx=[HSdgT;HSdgxtPQ_0;HSdgef_0 HSdgx1]; %<EFBFBD>ϳɲ<EFBFBD><EFBFBD><EFBFBD>ʽԼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD>H(.)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
dgxT=dgx'; %<EFBFBD><EFBFBD>dgx<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
MULdgx=dgx*(UW-LZ)*dgxT;
H=HSdhx+HSdgx-HSdfx+MULdgx; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD>H(.)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
%% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϳɺ<EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HSB0=sparse(m,m);
HSB=[H dhx;dhx' HSB0];
balN=transNum+pgvNum+capNum+nodeNum+balNode;
HSB(balN,:)=0; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>鲿<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>鲿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
HSB(:,balN)=0;
HSB_balN=sub2ind(size(HSB),balN,balN);
HSB(HSB_balN)=ones(balNum,1);
balN1=transNum+pgvNum+capNum+balNode;
HSB(balN1,:)=0; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>ѹʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
HSB(:,balN1)=0;
HSB_balN1=sub2ind(size(HSB),balN1,balN1);
HSB(HSB_balN1)=ones(balNum,1);