qq_41082915 2017-12-06 12:55 采纳率: 0%
浏览 2580

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

程序是这样的,为什么不能递归呢?改了好几次
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条回答 默认 最新

  • 小優YoU 2017-12-06 13:42
    关注

    程序默认递归栈最多30层,没事不要用递归,能用迭代就迭代

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题