Running a while loop one time after the parameter is met

The problem is to write a code that will approximate the slope of an equation at a point by using the value of the function at a point x and a point xi. The slope is being approximated by using f(xi)-f(x)/xi-x. X is randomly generated, and the increment between the points x and xi is to be 1 at first, and to be halved each loop until two consecutive slope approximations are within 1% of each other. My issue is that I got the code to loop until f(xi) is within 1% of f(x), but I don't know how to phrase my condition or nest another statement to get the loop to run one more time to satisfy the requirement of two consecutive approximations being within 1% of each other. I "manually" ran the sequence one more time after the while loop to obtain the correct answer, but I know that I should be able to do it within a single loop.
x=rand*9+1;
n=1; % increment
xi=x+n;
y=(5*x^2)/(log10(7*x^4)); % function to approximate slope of
yi=(5*xi^2)/(log10(7*xi^4));
while ((yi-y)/y)>0.01
n=n/2;
xi=x+n;
yi=(5*xi^2)/(log10(7*xi^4));
end
n=n/2;
xi=x+n;
yi=(5*xi^2)/(log10(7*xi^4));
slope=(yi-y)/(xi-x)

댓글 수: 1

Askic V
Askic V 2023년 2월 22일
편집: Askic V 2023년 2월 22일
Hello Logan,
please have a look at this thread:
Basically you need this:
while true
n=n/2;
xi=x+n;
yi=(5*xi^2)/(log10(7*xi^4));
if (yi-y)/y<=0.01
break
end
end

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

 채택된 답변

Aditya Srikar
Aditya Srikar 2023년 3월 2일
편집: Aditya Srikar 2023년 3월 2일
Hi Logan
The condition in while loop need to be
(yi-y)/y<=0.01
Modify the condition and the code should work fine.
I hope this helps

추가 답변 (0개)

카테고리

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

제품

릴리스

R2022b

태그

질문:

2023년 2월 22일

편집:

2023년 3월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by