matlab一直不出结果,求助 matlab两层迭代一直算不出来,无报错

博主在MATLAB中遇到一个两层迭代的问题,程序执行时显示“busy”,但无法得到结果。已尝试取消内层循环或者外层循环的迭代条件,单独运行时能快速得到结果,但两层嵌套时始终无法完成计算。已排除外部函数文件错误,怀疑问题出在while循环逻辑上,寻求帮助解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

H=6;

[T0,P0]=ambient(H);

k=1.4;

kg=1.33;

const=-kg/(kg-1);

EFFb=0.98;

EFFm=0.98;

deltaH=43000;%KJ/kg

ccloss=0.03;

exloss=0.215;

P5=P0/(1-exloss);

ERfpt=2;

ERfptacl=1;

ERmap=1.5;

ERcal=1.1;

RPM=50500;

BETA=1;

while(abs(ERfptacl-ERfpt)/ERfpt>0.01)

BETA=BETA+0.01;

[M1,PR,EFF]=compr_map(BETA,RPM);

NDM1=M1;

T1=T0;

P1=P0;

P2=P1*PR;

T2=T1*(1+(PR^((k-1)/k)-1)/EFF);

PWRc=Air_H(T2)-Air_H(T1);

Cp2=Air_Cp(T2);

f=0.019;

while (abs(ERmap-ERcal)/ERmap>0.01)

f=f+0.0001;

T3=T2;

t=1100;

while (abs(T3-t)/t>0.002)

t=T3;

AAA=(1+f)*Gas_Cp(t,f);

T3=(Cp2*T2+EFFb*f*deltaH)/AAA;

end

P3=P2*(1-ccloss);

PWRggt=PWRc/(EFFm*(1+f));

T4=T3;

tt=800;

pwrggt=PWRggt/2;

while (abs(PWRggt-pwrggt)/PWRggt>0.01)

tt=T4;

pwrggt=Gas_H(T3,f)-Gas_H(tt,f);

T4=tt-1;

end

NDM3=NDM1*(1+f)*((T3/T1)^0.5)*(P1/P3);

[ERggt,EFFggt]=GGT_map(NDM3);

ERmap=ERggt;

ERcal=(1-(1-T4/T3)/EFFggt)^(const);

end

P4=P3/ERcal;

NDM4=NDM3*((T4/T3)^0.5)*(P3/P4);

[ERfpt,EFFfpt]=FPT_map(NDM4);

ERfptacl=P4/P5;

end

无报错,主要就是两层while循环,但是运行一直显示busy,得不到结果(结果以disp任意参数为例都可)。

如果取消内层迭代(即内层while的条件删除,外层每循环一次,内层里的内容只执行一次),只外层迭代可以计算,且计算很快(能够得到不满足内层while条件的结果);如果删掉外层while判断条件,只内层迭代也可执行,(能够得到不满足外层while条件的结果);但是两层嵌套就是算不出来,算了一天一夜都是busy。

有几个函数文件没有贴,但是检查过了没有问题,问题应该还是在两个while循环里,实在找不出原因了,希望帮忙解答一下,无比感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值