Can someone check my for loop?

My for loop is suppose to return the minimum value found in the for loop, but it just keeps returning the last found value. How can I make it return the minimum value found?
This is my code:
function m=myminimum (f,a,b);
syms x ;
for t=(a:b);
m=subs(f(x),t);
end
m=min(m);
end
Here is some sample data I have been running through the for loop along with what the answer it's suppose to be.
myminimum(@(x) x^2+1,-3,2)
ans =
1
The answer my for loop provides is 5.
myminimum(@(x) x^2+6*x-3,-2,0)
ans =
-11
The answer my for loop provides is -3.
How do I make my for loop return the minimum value of the for loop and not just the last found value?
Thanks

 Accepted Answer

You need to tweak your loop a bit:
syms x
min_m = Inf;
for t=(a:b);
m=subs(f(x),t);
min_m = min(m, min_m);
end
m=min_m;
It initially sets ‘min_m’ to Inf, then in each iteration compares the current value of ‘m’ with the previous value and assigns ‘min_m’ to the minimum value of that comparison. It returns that value as ‘m’.

4 Comments

Bri
Bri on 4 Oct 2014
Edited: Bri on 4 Oct 2014
That did not work, the for loop is still returning 5 and -3 as the answers for the sample data. Not 1 and -11, like it is suppose to.
Strange indeed. It worked for me or I’d not have posted it.
Post the code you have now.
Thanks, I had a typo. And figured it out as I was putting my code into this comment.
Star Strider
Star Strider on 4 Oct 2014
Edited: Star Strider on 4 Oct 2014
My pleasure!
I was getting worried.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Asked:

Bri
on 4 Oct 2014

Edited:

on 4 Oct 2014

Community Treasure Hunt

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

Start Hunting!