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

I think you mean
x=(x+a/x)/2
yeah sorry
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?

댓글을 달려면 로그인하십시오.

답변 (1개)

AKARSH KUMAR
AKARSH KUMAR 2020년 6월 24일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 Mathematics에 대해 자세히 알아보기

제품

릴리스

R2018b

질문:

2019년 2월 6일

답변:

2020년 6월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by