MATLAB: Trying to calculate the square root of a positive number based on the “divide and average” scheme.

debug

I am re-posting this as it would not post correctly earlier.
I am trying to calculate the square root of a positive number, a, based on the “divide and average” scheme. The scheme is formulated in the following:
x = ( x + a/x) / 2
My function, however, returns incorrect results. I was hoping someone could help me debug it.
function v = my_sqrtD(t)
%find the square root of t, and t must be larger than 0.
v_pre = t/2.0;
my_eps = 0.0001;
%when the limit is reached, stop the loop
n_limit = 1000000;
for i=1:n_limit
v = (v_pre + t/v_pre)/2.0;
res = abs((v-v_pre)/v);
if res < my_eps, break, end
end %end of loop
if (i==n_limit)
disp('The root cannot be found.');
end

Best Answer

The line
v = (v_pre + t/v_pre)/2.0;
is your trouble. It should read:
v_pre = (v_pre + t/v_pre)/2.0;
However, you will have to appropriately revise your computation of 'res'.