qq_41082915
qq_41082915
2017-12-06 12:55

运行时出现:已达到最大递归限制 ,

  • 递归
  • dp

程序是这样的,为什么不能递归呢?改了好几次
function[n,line,baseVolume,kmax,eps,BalanceNode,ground,transfomer,operation,PVNode,P,Q,J]=PowerFlow_NT_2(filename)
%% ===============================================
% 功能:使用牛顿法进行潮流计算
% 时间:2017年 10月
%%主程序“PowerFlow_NT.m”
% 节点数=n,支路数=line,基准容量=baseVolume, 平衡节点=BalanceNode;
% 节点导纳矩阵=Y;
% 迭代精度=eps,最大迭代次数=kmax;
% 发电机有功功率=Pg,发电机无功功率=Qg, 线路负荷有功=Pl,线路负荷无功=Ql;
% 接地支路参数=ground,变压器参数=transfomer , 运行参数=operation, PV节点参数= PVNode;
% 节点电压幅值=U,节点电压相角=angU;
% 注入有功功率=P,注无功功率=Q;
% 功率不平衡量=devS;最大功率不平衡量=maxDevS;
% 雅可比矩阵=J;
%% ==============================================
set(0,'RecursionLimit',1200);
[n,baseVolume,kmax,eps,BalanceNode,line,ground,transfomer,operation,P,Q,PVNode,U,angU] = readDate(filename); %打开读取文件
tic
[Y] = formY(n,lineI,lineJ,lineR,lineX,lineB,groundB,tranI,tranJ,tranR,tranX,trank); %生成节点导纳矩阵
format long
k=0;
gg=[' 迭代次数 ' ' max(dp,dq)'];
disp(gg);
while (k<kmax)
[deltpq,P,Q,U,angU] = UnBalance(BalanceNode,Y,P,Q,U,angU); %计算不平衡量
ggf=[k,max(abs(deltpq))];
disp(ggf); %计算最大不平衡量,修改精度
if max(abs(deltpq)) < eps

disp('潮流收敛');
break
end
[J]= Jac_(BalanceNode,n,angU,U,P,Q); %形成雅可比矩阵
dua = Jac\deltpq; %计算电压幅值和相角的修正量
U=U+dua(n+1:2*n).*U;
angU=angU+dua(1:n); %重新计算电压幅值和电压相角
k=k+1;
end
if k==Kmax
disp('潮流计算不收敛'); %超过最大迭代次数则输出潮流不收敛
end
toc;
end
程序没有错误,想知道为什么程序递归不了,急,在线等

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

4条回答

为你推荐

换一换