マッハ数 (M0) の初期推定を行うプロセスを反復する必要があります。この最初の推定値から、2 つの方程式 (Mn) を使用してマッハ数の別の推定値が得られます。最終的には、M0 と Mn の誤差が小さくなるまでこのプロセスを繰り返したいと考えています。次のコードがあり、実際にはwhileループでうまく機能します。
ただし、while ループは特定の入力に対して多くの反復と計算時間がかかるのではないかと心配しています。
したがって、私の質問は次のとおりです。whileループを参照せずにMatlab内でこのプロセスを反復するにはどうすればよいですか? 私が今実装しているコードは次のとおりです。
%% Input
gamma = 1.4;
theta = atan(0.315);
cpi = -0.732;
%% Loop
M0 = 0.2; %initial guess
Err = 100;
iterations = 0;
while Err > 0.5E-3
B = (1-(M0^2)*(1-M0*cpi))^0.5;
Mn = (((gamma+1)/2) * ((B+((1-cpi)^0.5)*sec(theta)-1)^2/(B^2 + (tan(theta))^2)) - ((gamma-1)/2) )^-0.5;
Err = abs(M0 - Mn);
M0 = Mn;
iterations=iterations+1;
end
disp(iterations) disp(Mn)
どうもありがとう