For Loop nested within a while loop, run until condition is met

6 visualizaciones (últimos 30 días)
My goal is to run an equation until my convergence criteria is met, basically do itterations until I am within some range of error. My code looks liek this
%% Model Cells
% Boundary conditions is head1 = 3 & head12=1
head = zeros (1,12); % Established a matrix of data
head(1)=3; % Setting boundary conditions
head(12)=1;
depth = [0.00,0.35,0.70,1.05,1.40,1.75,2.10,2.45,2.80,3.15,3.50,3.85];%for future plotting purposes
headold = zeros(1,12);
% Loop iteration & Stop iteration
x = ones(1,12);
cc = x*.001;
while headold-head<cc % solving for head until convergence criteria is met
headold = head;
% head = headold+1;
% headold+2 = headold+1;
for i=2:11
head(i)=(head(i-1)+head(i+1))/2; %solving for head 1 time
end
end
The result of this is a never ending matlab solution, however when I pause this I get the anser I want .

Respuesta aceptada

darova
darova el 19 de Feb. de 2020
This lines actually means: "loop if condition is met"
while headold-head<cc % solving for head until convergence criteria is met
Use this
tol = abs(head-headold);
while max(tol)>0.001 % solve if max(tolerance) > 0.001
%% ...
tol = abs(head-headold);
end
  5 comentarios
Adam Danz
Adam Danz el 20 de Feb. de 2020
@dovara, but headold-head<cc will still produce a vector which is the problem I mentioned above.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by