Can someone check my for loop?

1 view (last 30 days)
Bri
Bri on 4 Oct 2014
Edited: Star Strider on 4 Oct 2014
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

Star Strider
Star Strider on 4 Oct 2014
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
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

Community Treasure Hunt

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

Start Hunting!