Мне нужно повторить процесс, в котором у меня есть начальное предположение для числа Маха (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)
Большое спасибо