can anyone tell me why this code doesn't stop running
Show older comments
w=1;
d=200;
B=530;
Ca=300;
Cb=300;
Fh=70;
L=600;
da=100;
db=100;
iteri=0;
iterj=0;
iterk=0;
x=0;
Tk=Ca-Cb;
df=abs(Tk-Fh);
while df>0.8
iterk=iterk+1;
x=x+0.1;
while abs(da)>0.0001
iteri=iteri+1;
Ba=B+x;
Dca=L-Ba-sqrt(d*(d+2*Ca))+Ca*acosh(1+(d/Ca))
Ja=-d/(sqrt(d*(d+2*Ca)))+acosh(1+(d/Ca))-d/(Ca*sqrt(((1+(d/Ca))^2)-1))
da=Dca/Ja;
Ca=Ca-da;
end
while abs(db)>0.0001
iterj=iterj+1;
Bb=B-x;
Dcb=L-Bb-sqrt(d*(d+2*Cb))+Cb*acosh(1+(d/Cb))
Jb=-d/(sqrt(d*(d+2*Cb)))+acosh(1+(d/Cb))-d/(Cb*sqrt(((1+(d/Cb))^2)-1))
db=Dcb/Jb;
Cb=Cb-db;
end
Tk=Ca-Cb;
df=abs(Tk-Fh);
end
Accepted Answer
More Answers (1)
Image Analyst
on 11 Mar 2015
I'd guess that one of the 3 "while" conditions is not ever false so you're getting an infinite loop. You can find out which one after you look at this link: http://blogs.mathworks.com/videos/2012/07/03/debugging-in-matlab/ This is why I say time and time again that while loops must always use a failsafe, like a loop counter where you break out if it ever gets bigger than you might possibly expect, like a million or something
loopCounter = 1;
maxCount = 1000000;
while someCondition && loopCounter < maxCount% While loop with failsafe
% Some code you want to run goes here.
% Now at the end of the loop, increment the loop counter.
loopCounter = loopCounter + 1;
end
% Alert user if while loop finished only because of the failsafe.
if loopCounter >= maxCount
message = sprintf('Warning: loop did not finish after % iterations', loopCounter-1);
uiwait(warndlg(message));
end
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!