I not able to understand what type error I am making in the while loop

1 visualización (últimos 30 días)
Manav Divekar
Manav Divekar el 4 de Nov. de 2021
Comentada: Rik el 6 de Nov. de 2021
I want to use babyloniansqrt to work if Error value should be grater than threshold and this will update the x and E value, using xnext = (x+S./x)/2, E = abs(S-xnext.^2) formula. Please check my code and let me know what I am doing wrong
function out = babyloniansqrt(S,threshold)
x = 1;
if ~exist('threshold','var')
threshold = 0.00001;
end
E = abs(S-x.^2);
while ~(E<threshold)
xnext = (x+S./x)/2;
E = abs(S-xnext.^2);
end

Respuestas (1)

Rik
Rik el 4 de Nov. de 2021
Editada: Rik el 6 de Nov. de 2021
You aren't updating the value itself, so the calculation is the exact same on every iteration.
function out = babyloniansqrt(S,threshold)
%Write lead line here
%
% write usage instructions and explanation here
x = 1;
if nargin<2
%set default threshold if not provided
threshold = 10^-5;
end
E = inf; %set initial value to enter the loop
while E>threshold
x = (x+S./x)/2;
E = abs(S-x.^2);
end
out=x;
end
  3 comentarios
Jan
Jan el 5 de Nov. de 2021
Change "E = abs(S-xnext.^2);" to "E = abs(S-x.^2);" in Rik's code.
Rik
Rik el 6 de Nov. de 2021
Thanks for the correction Jan, I have edited my answer.

Iniciar sesión para comentar.

Categorías

Más información sobre Get Started with MATLAB en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by