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

 Réponse acceptée

Star Strider
Star Strider le 4 Oct 2014

0 votes

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 commentaires

Bri
Bri le 4 Oct 2014
Modifié(e) : Bri le 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.
Star Strider
Star Strider le 4 Oct 2014
Strange indeed. It worked for me or I’d not have posted it.
Post the code you have now.
Bri
Bri le 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 le 4 Oct 2014
Modifié(e) : Star Strider le 4 Oct 2014
My pleasure!
I was getting worried.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by