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

 Akzeptierte Antwort

Star Strider
Star Strider am 4 Okt. 2014

0 Stimmen

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 Kommentare

Bri
Bri am 4 Okt. 2014
Bearbeitet: Bri am 4 Okt. 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.
Star Strider
Star Strider am 4 Okt. 2014
Strange indeed. It worked for me or I’d not have posted it.
Post the code you have now.
Bri
Bri am 4 Okt. 2014
Thanks, I had a typo. And figured it out as I was putting my code into this comment.
Star Strider
Star Strider am 4 Okt. 2014
Bearbeitet: Star Strider am 4 Okt. 2014
My pleasure!
I was getting worried.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by