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

1 view (last 30 days)
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

Answers (1)

Rik
Rik on 4 Nov 2021
Edited: Rik on 6 Nov 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 Comments

Sign in to comment.

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!