Not sure why the loop's not working??

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

Image Analyst
Image Analyst 2013년 5월 13일
Matthew - please change this to an answer, rather than a comment.
Matthew Doveton
Matthew Doveton 2013년 5월 13일
Thanks. Its my first time :)

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

 채택된 답변

Matthew Doveton
Matthew Doveton 2013년 5월 13일

0 개 추천

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

Nav
2013년 5월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by