请问大家为什么我这个循环中的Re1每次算的都一样 还有怎么能在上一次的Pwf1-下一次的Pwf1<0.02的情况下跳出for循环啊

请问大家为什么我这个循环中的Re1每次算的都一样
还有怎么能在上一次的Pwf1-下一次的Pwf1<0.02的情况下跳出for循环啊
谢谢了

H=3000;Pwh=2;T=50;Ppc=4.6;Tpc=205;
yg=0.65;Qsc=10*10^4;D=62;d=0.062;e=0.016; 

Pwf0=Pwh*(1+0.00008*H);
Tav1=273+50;
for n=1:10
%平均参数
Pav1=(Pwf0+Pwh)/2;
Ppr1=Pav1/Ppc;
Tpr=Tav1/Tpc;
Zav1=0.96-(n-1)*0.02;
ug=0.013;
%Re的计算
Bg1=3.447*10^(-4)*Zav1*Tav1/Pav1;
v1=Qsc*Bg1/(3.14*86400*(0.062/2)^2);
Density1=3484.4*((yg*Pav1)/(Zav1*Tav1));
Re1=(v1*Density1*d)/(0.013*0.001);      %请问大家这里的结果为什么每次都一样啊Density1和v1每次都变化了,
% 是我公式打的有问题吗,我想让Re1=(v1*Density1*d)/(ug*0.013)

%f的计算
f1=(1.14-2*log10(e/D+21.25/(Re^0.9)))^-2
%无量纲量S的计算
S1=(0.03415*yg*H)/(Tav1*Zav1);
%井底流压的计算
Pwf1=sqrt(Pwh^2*exp(1)^(2*S1)+1.324*10^-18*0.015*(Qsc*Tav1*Zav1)^2*(exp(1)^(2*S1)-1)/d^5);
%计算结果的显示
fprintf('第%d次试算的Pav=%6.3f\n',n,Pav1)
fprintf('第%d次试算的Ppr=%6.3f\n',n,Ppr1)
fprintf('第%d次试算的Tpr=%6.3f\n',n,Tpr)
fprintf('第%d次试算的Zav=%6.3f\n',n,Zav1)

fprintf('第%d次试算的Bg=%6.3f\n',n,Bg1)
fprintf('第%d次试算的Density=%6.3f\n',n,Density1)
fprintf('第%d次试算的v=%6.3f\n',n,v1)
fprintf('第%d次试算的Re=%8.3f\n',n,Re1)

fprintf('第%d次试算的f=%6.3f\n',n,f1)

fprintf('第%d次试算的井底流压Pwf= %6.2f\n',n,Pwf1)
Pwf0=Pwf1;
end

我的结果,每次算的Re都一样

>> H=3000;Pwh=2;T=50;Ppc=4.6;Tpc=205;
yg=0.65;Qsc=10*10^4;D=62;d=0.062;e=0.016; 

Pwf0=Pwh*(1+0.00008*H);
Tav1=273+50;
for n=1:10
%平均参数
Pav1=(Pwf0+Pwh)/2;
Ppr1=Pav1/Ppc;
Tpr=Tav1/Tpc;
Zav1=0.96-(n-1)*0.02;
ug=0.013;
%Re的计算
Bg1=3.447*10^(-4)*Zav1*Tav1/Pav1;
v1=Qsc*Bg1/(3.14*86400*(0.062/2)^2);
Density1=3484.4*((yg*Pav1)/(Zav1*Tav1));
Re1=(v1*Density1*d)/(0.013*0.001);      %请问大家这里的结果为什么每次都一样啊Density1和v1每次都变化了,
% 是我公式打的有问题吗,我想让Re1=(v1*Density1*d)/(ug*0.013)

%f的计算
f1=(1.14-2*log10(e/D+21.25/(Re^0.9)))^-2
%无量纲量S的计算
S1=(0.03415*yg*H)/(Tav1*Zav1);
%井底流压的计算
Pwf1=sqrt(Pwh^2*exp(1)^(2*S1)+1.324*10^-18*0.015*(Qsc*Tav1*Zav1)^2*(exp(1)^(2*S1)-1)/d^5);
%计算结果的显示
fprintf('第%d次试算的Pav=%6.3f\n',n,Pav1)
fprintf('第%d次试算的Ppr=%6.3f\n',n,Ppr1)
fprintf('第%d次试算的Tpr=%6.3f\n',n,Tpr)
fprintf('第%d次试算的Zav=%6.3f\n',n,Zav1)

fprintf('第%d次试算的Bg=%6.3f\n',n,Bg1)
fprintf('第%d次试算的Density=%6.3f\n',n,Density1)
fprintf('第%d次试算的v=%6.3f\n',n,v1)
fprintf('第%d次试算的Re=%8.3f\n',n,Re1)

fprintf('第%d次试算的f=%6.3f\n',n,f1)

fprintf('第%d次试算的井底流压Pwf= %6.2f\n',n,Pwf1)
Pwf0=Pwf1;
end

f1 =

    0.01511次试算的Pav= 2.2401次试算的Ppr= 0.4871次试算的Tpr= 1.5761次试算的Zav= 0.9601次试算的Bg= 0.0481次试算的Density=16.3611次试算的v=18.3021次试算的Re=1428118.3651次试算的f= 0.0151次试算的井底流压Pwf=   4.16

f1 =

    0.01512次试算的Pav= 3.0812次试算的Ppr= 0.6702次试算的Tpr= 1.5762次试算的Zav= 0.9402次试算的Bg= 0.0342次试算的Density=22.9862次试算的v=13.0272次试算的Re=1428118.3652次试算的f= 0.0152次试算的井底流压Pwf=   4.15

f1 =

    0.01513次试算的Pav= 3.0743次试算的Ppr= 0.6683次试算的Tpr= 1.5763次试算的Zav= 0.9203次试算的Bg= 0.0333次试算的Density=23.4293次试算的v=12.7813次试算的Re=1428118.3653次试算的f= 0.0153次试算的井底流压Pwf=   4.13

f1 =

    0.01514次试算的Pav= 3.0674次试算的Ppr= 0.6674次试算的Tpr= 1.5764次试算的Zav= 0.9004次试算的Bg= 0.0334次试算的Density=23.8944次试算的v=12.5324次试算的Re=1428118.3654次试算的f= 0.0154次试算的井底流压Pwf=   4.12

f1 =

    0.01515次试算的Pav= 3.0605次试算的Ppr= 0.6655次试算的Tpr= 1.5765次试算的Zav= 0.8805次试算的Bg= 0.0325次试算的Density=24.3815次试算的v=12.2825次试算的Re=1428118.3655次试算的f= 0.0155次试算的井底流压Pwf=   4.11

f1 =

    0.01516次试算的Pav= 3.0536次试算的Ppr= 0.6646次试算的Tpr= 1.5766次试算的Zav= 0.8606次试算的Bg= 0.0316次试算的Density=24.8926次试算的v=12.0306次试算的Re=1428118.3656次试算的f= 0.0156次试算的井底流压Pwf=   4.09

f1 =

    0.01517次试算的Pav= 3.0467次试算的Ppr= 0.6627次试算的Tpr= 1.5767次试算的Zav= 0.8407次试算的Bg= 0.0317次试算的Density=25.4307次试算的v=11.7757次试算的Re=1428118.3657次试算的f= 0.0157次试算的井底流压Pwf=   4.08

f1 =

    0.01518次试算的Pav= 3.0408次试算的Ppr= 0.6618次试算的Tpr= 1.5768次试算的Zav= 0.8208次试算的Bg= 0.0308次试算的Density=25.9978次试算的v=11.5198次试算的Re=1428118.3658次试算的f= 0.0158次试算的井底流压Pwf=   4.07

f1 =

    0.01519次试算的Pav= 3.0349次试算的Ppr= 0.6609次试算的Tpr= 1.5769次试算的Zav= 0.8009次试算的Bg= 0.0299次试算的Density=26.5949次试算的v=11.2609次试算的Re=1428118.3659次试算的f= 0.0159次试算的井底流压Pwf=   4.06

f1 =

    0.015110次试算的Pav= 3.02810次试算的Ppr= 0.65810次试算的Tpr= 1.57610次试算的Zav= 0.78010次试算的Bg= 0.02910次试算的Density=27.22510次试算的v=10.99910次试算的Re=1428118.36510次试算的f= 0.01510次试算的井底流压Pwf=   4.05
>> 

上面代码21行Re后少了个1吗?
错误的原因是Density1和v1都是虚数结果,你使用%f打印的只是实数部分的结果。请检查算法流程是否正确,如有疑问,请继续追问。