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, endend %end of loop
if (i==n_limit) disp('The root cannot be found.');end
Best Answer