Approximating square root function using loops

Please help me solve this:
the "divide and average" method, an old-time method for approximating the square root of any positive number a, can be formulated as x=(x+a/x)/2. write a well-structured function to implement this alogrithm.
here is my first line:
function estSqrt= ApproxSqrt(a,tol)
a is the number whos square root i want to find
tol is the tolerance that must be greater than abs(xOld-xNew)/abs(xOld)

5 Commenti

I think you mean
x=(x+a/x)/2
Well, you have to write more than the first line of code in order to call it "help".
I can't seem to make this work for negative inputs of a
function estSqrt= ApproxSqrt(a,tol)
% function estSqrt= ApproxSqrt(a,tol)
e = 1;
x = a/2;
estSqrt = 1;
if a == 0
estSqrt = 0;
end
while e > tol
xOld = x;
x = (x+a/x)/2;
e=abs((x - xOld)/x);
estSqrt = x;
if a < 0
a = abs(a);
estSqrt = x*1i;
end
end
end
I can't seem to make this work for negative inputs of a
Why would you need to?

Accedi per commentare.

Risposte (1)

AKARSH KUMAR
AKARSH KUMAR il 24 Giu 2020
function estSqrt= ApproxSqrt(a,tol)
if a<0
msg='Can't calculate square root of negative number';
error(msg);
else if a==0
estSqrt=0;
else
e = 1;
x = a/2;
estSqrt = 1;
while e > tol
xOld = x;
x = (x+a/x)/2;
e=abs((x - xOld)/x);
estSqrt = x;
if a < 0
a = abs(a);
estSqrt = x*1i;
end
end
end
end

Categorie

Scopri di più su Mathematics in Centro assistenza e File Exchange

Prodotti

Release

R2018b

Richiesto:

il 6 Feb 2019

Risposto:

il 24 Giu 2020

Community Treasure Hunt

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

Start Hunting!

Translated by