我必须迭代一个过程,在该过程中我对马赫数 (M0) 有一个初始猜测。通过使用两个方程(Mn),这个初始猜测将给我另一个马赫数的猜测。最终,我想迭代这个过程,直到 M0 和 Mn 之间的误差很小。我有以下一段代码,它实际上适用于while循环。
但是,我担心 while 循环对于某些输入会花费很多迭代和计算时间,因为这将是更大代码的一部分,很可能会为 while 循环提供不可行的输入。
因此,我的问题如下。如何在 Matlab 中迭代这个过程而不咨询 while 循环?我现在正在实现的代码如下:
%% 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)
非常感谢