while loop until x amount correct digits

9 visualizaciones (últimos 30 días)
mohamed hassan
mohamed hassan el 7 de Mayo de 2020
Editada: Akihumi el 8 de Mayo de 2020
Hi
Can someomene give me an example or an general way to write a while loop where the condition is that you need to have 3 correct decimals. ?
In my code I have a for loop but I need to make it more adapt.

Respuesta aceptada

Akihumi
Akihumi el 7 de Mayo de 2020
Have you considered using built-in function 'round'?
Then you can just do:
if round(x,3) == round(y,3)
...
end
  11 comentarios
Stephen23
Stephen23 el 7 de Mayo de 2020
Rounding is not the correct approach, read these to know why:
The correct way to is to compare the absolute difference against the required tolerance:
abs(A-B)<tol
Akihumi
Akihumi el 7 de Mayo de 2020
Editada: Akihumi el 8 de Mayo de 2020
@Stephen Cobeldick thank you for the lesson.
Then it should be something like this i think
N = 0;
NLim = 1e10; % to stop the while loop if it goes too big
tol = 1e-5;
[r u] = main(N,a,k,Ta);
[r u2] = main(2*N,a,k,Ta);
disp(u(N+1))
disp(u2(2*N+1))
while N < NLim && abs(u(2*N+1)-u(N+1))>tol
N = N * 2;
u = u2;
[r u2] = main(2*N,a,k,Ta);
disp(u2(2*N+1))
end

Iniciar sesión para comentar.

Más respuestas (1)

mohamed hassan
mohamed hassan el 7 de Mayo de 2020
Thanks for the help guys, I've done the question and got it correct.

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by