Not sure why the loop's not working??

1 view (last 30 days)
the loop parts suppose to repeat until (abs((a+b)^2/(4*t)-pi)<= thres).
a=1;
b=1/sqrt(2);
t=1/4;
x=1;
thres = 0.001;
while abs((a+b)^2/( 4*t )-pi) > thres
y=a;
a=(a+b)/2;
b=sqrt(b)*sqrt(y);
t=t-(x)*(y-a)^2;
x=2*x;
if (abs((a+b)^2/(4*t)-pi)<= thres)
break
mypi= (a+b)^2/(4*t);
end
end
  2 Comments
Image Analyst
Image Analyst on 13 May 2013
Matthew - please change this to an answer, rather than a comment.
Matthew Doveton
Matthew Doveton on 13 May 2013
Thanks. Its my first time :)

Sign in to comment.

Accepted Answer

Matthew Doveton
Matthew Doveton on 13 May 2013
mypi is never reached due to the positioning of the break statement, should be:
a=1; b=1/sqrt(2); t=1/4; x=1; thres = 0.001;
while abs((a+b)^2/( 4*t )-pi) > thres
y=a;
a=(a+b)/2; b=sqrt(b)*sqrt(y);
t=t-(x)*(y-a)^2; x=2*x;
if (abs((a+b)^2/(4*t)-pi)<= thres)
mypi = (a+b)^2/(4*t);
break
end
end

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!