Could I trust Matlab?
Show older comments
Hello, I recently write a code and debug it.
I have a key sentence,
if true
% code
end while 1
...
if f(x_new)-f(x_old)<0
break;
elseif
L=1.1*L;
...
end
But it seems that the returned L is always wrong. And it always happened when f(x_new)-f(x_old)=1e-20. So I doubt maybe it should that f(x_new)<f(x_old), but the returned values is a little wrong to lead f(x_new)-f(x_old)=1e-20.
Could this thing happen in matlab.
Thank you in advance. I have already spent a lot time on it.
2 Comments
Jos (10584)
on 4 Dec 2013
Edited: Jos (10584)
on 4 Dec 2013
Based on this snippet, I have no idea what f, L, x_new and x_old are doing inside the loop. Are they being updated on the fly? And how do you know the returned L is wrong?
The elseif statement also seems out of place ...
Vivian
on 4 Dec 2013
Answers (2)
Jos (10584)
on 4 Dec 2013
Edited: Jos (10584)
on 4 Dec 2013
Perhaps this is what you really want
if abs(f(x_new)-f(x_old)) < eps
…
end
Andreas Goser
on 4 Dec 2013
0 votes
Looks like yet another flavor of the numerical question with the highest volume: http://www.mathworks.com/matlabcentral/answers/102419-how-do-i-determine-if-the-error-in-my-answer-is-the-result-of-round-off-error-or-a-bug
Categories
Find more on Startup and Shutdown 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!