私はMATLABを使用して変数のセットを見つけようとしています。ed、ec、ef、efn、et、enのように、理論的推力と実際の推力は.001未満です。私のコードは、条件が満たされてもwhile文を終了しません。何か案は?式の複数の従属変数MATLAB
clear; clc;
B=5; Prf=1.5; M=.85; QR=43400000; Prc=30; Ta=288.2; Pa=101300; T04=1700; R=287; %ed=.97; ec=.85; et=.9; en=.98;
% Turbojet Efficiencies and gammas
gd=1.4; gc=1.33; gb=1.35; gt=1.33; gn=1.36; ActSpecificThrust = 800; ThSpecificThrust = 1020; g=1.4; gf=1.4;
% Bypass Efficiencies (g/((g-1)*R)) T02 = Ta*(1+((g-1)/2)*M^2);
while abs(ThSpecificThrust - ActSpecificThrust) >= .001
for ed = 0.8: .05: .95
for ec =.8:.05:.95
for ef=.8:.05:.95
for efn=.8:.05:.95
for et=.8:.05:.95
for en=.8:.05:.95
P02 = Pa*(1+ed*(T02/Ta-1))^(gd/(gd-1));
P03 = P02*Prc; T03 = T02*(1+(1/ec)*(Prc^((gc-1)/gc)-1));
f = (T04-T03)/((QR/1107)-T04); P04 = P03; P08 = P02*Prf; T08 = T02*(1+(1/ef)*(Prf^((gf-1)/gf)-1));
uef = (2*efn*(gf/(gf-1))*R*T08*(1-(Pa/P08)^((gf-1)/gf)))^(1/2);
T05 = T04-(T03-T02)-B*(T08-T02);
P05 = P04*(1-(1/et)*(1-(T05/T04)))^(gt/(gt-1));
T06 = T05; P06 = P05; P7=Pa;
ue = (2*en*(gn/(gn-1))*R*T06*(1-(P7/P06)^((gn-1)/gn)))^(1/2);
u = M*(g*R*Ta)^(1/2);
ThSpecificThrust = (1+f)*ue+B*(uef)-(1+B)*u;
%TSFC = f/ASpecificThrust;
%ep = (SpecificThrust*u)/((1+f)*ue^2/2+B*uef^2/2-(1+B)*u^2/2);
%eth = ((1+f)*ue^2/2+B*uef^2/2-(1+B)*u^2/2)/(f*QR);
%e0 = ep*eth;
end
end
end
end
end
end
end
これは私が考えていたことですが、要件が満たされていることを確認してループを> 10にしても、ループでは満たされていても終了しませんでした。 –
編集された元の回答。 –
内側のforループ内で(ThSpecificThrust - ActSpecificThrust)をテストするとき、forループのすべての反復を繰り返し実行しています。問題は、要件を満たしてもループを破らないということです。私はその差異の関数をプリントアウトし、答えの無限反復のうちの1つで望む答えを見ることができます。 –