function [Jacob,PQ,U,Uangle]=jacobian(Busnum,Balance,PVi,PVu,U,Uangle,Y,Angle,P0,Q0,r,c) %************************************************************************** % 程序功能 : 子函数——形成雅可比矩阵Jacobian % 编 者: % 编制时间:2010.12 %************************************************************************** %% 分别求雅克比矩阵的子阵H,L,N,J及有功无功分量P,Q AngleIJ = Uangle(r) - Uangle(c)- Angle'; U(PVi) = PVu; temp1= -sparse(1:Busnum,1:Busnum,U,Busnum,Busnum)*Y*sparse(1:Busnum,1:Busnum,U,Busnum,Busnum); % 计算雅克比矩阵可利用的中间变量 temp2 = sum(temp1.*sparse(r,c,sin(AngleIJ)),2); temp3 = sum(temp1.*sparse(r,c,cos(AngleIJ)),2); temp4=sparse(1:Busnum,1:Busnum,temp2,Busnum,Busnum); temp5=sparse(1:Busnum,1:Busnum,temp3,Busnum,Busnum); H = temp1.*sparse(r,c,sin(AngleIJ))-temp4; L = temp1.*sparse(r,c,sin(AngleIJ))+temp4; N = temp1.*sparse(r,c,cos(AngleIJ))+temp5; J = -temp1.*sparse(r,c,cos(AngleIJ))+temp5; Q = Q0+temp2'; %求有功分量P P = P0+temp3'; %求无功分量Q %% 处理平衡节点和pv节点 H(:,Balance) = 0; H(Balance,:) = 0; %H(Balance,Balance) = 100; % 平衡节点对应的对角元素置一个有限数 H=H+sparse(Balance,Balance,ones(1,length(Balance)),Busnum,Busnum); L(:,PVi) = 0; L(PVi,:) = 0; L = L+sparse(PVi,PVi,ones(1,length(PVi)),Busnum,Busnum); % PV节点对应的对角元素置为1 J(:,Balance) = 0; J(PVi,:) = 0; N(:,PVi) = 0; N(Balance,:) = 0; Q(PVi) = 0; % 将pv节点的无功不平衡分量置零 P(Balance) = 0; % 平衡节点的有功功率不平衡分量置零 %% 合成PQ和雅可比矩阵 PQ = cat(2,P,Q); % 形成功率不平衡分量列向量 Jacob = cat(1,cat(2,H,N),cat(2,J,L)); % 形成Jacobian矩阵 end