Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

need help for transfer Whlile loop from For loop

조회 수: 1 (최근 30일)
pepper
pepper 2020년 10월 1일
마감: MATLAB Answer Bot 2021년 8월 20일
two newton method written with for and while loop.
the result is quite different
where should i fix it?
big thx from bottom of my heart.

답변 (1개)

Sindar
Sindar 2020년 10월 1일
First issue:
  • for loop ends when error<tol
  • while loop continues when error<tol
  댓글 수: 4
pepper
pepper 2020년 10월 1일
function p1=newton(ex31,a)
tol=10^-10;
a=5;
p0=2;
for k=1:1000
p1=1/2*(p0+a/p0);
error=abs((p1-p0)/p0);
p0=p1;
if error<tol
p=p1;
break
end
end
-------------------------------------------------
i slightly changed value to pn and it run ok !
one thought in my mind is ,
is it possible that i make it run ok with the first one?(above one)
kinda lacked if i use p1,p0 value
function p1=newton(ex31,a)
tol=10^-4;
error=1.0;
p0=2;
pn=p0;
a=5
while error>tol
pn1=1/2*(pn+a/pn);
error=abs(pn1-pn)/abs(pn1-p0);
pn=pn1;
end
pn1
i don't understand about your consistent means.
Sindar
Sindar 2020년 10월 1일
switching between text and code blocks helps readability
"for"
function p1=newton(ex31,a)
tol=10^-10;
a=5;
p0=2;
for k=1:1000
p1=1/2*(p0+a/p0);
error=abs((p1-p0)/p0);
p0=p1;
if error<tol
p=p1;
break
end
end
"while"
function p1=newton(ex31,a)
tol=10^-4;
error=1.0;
p0=2;
pn=p0;
a=5
while error>tol
pn1=1/2*(pn+a/pn);
error=abs(pn1-pn)/abs(pn1-p0);
pn=pn1;
end
pn1
issues in both
  • regardless of what value is passed to the function, you set a=5
  • error is an important built-in function, use a different variable name
  • you have more p variables than necessary (you only need two)
differences between codes:
  • tol is not the same
  • "while" error is defined incorrectly
  • "while" returns a variable that is never defined (p1)
My comment on consistency referred to the fact that your original "while" screenshot wasn't doing anything in particular each loop.

이 질문은 마감되었습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by