How can i run the for loop with a stepsize smaller than one?

I have this code:
c=0:0.001:1;
volume =0.75*pi*c-pi*c.^3;
plot(c,volume)
n=4;
for i=1:4
func=@(r) -pi*r^3+0.75*pi*r;
if func(i+1)-func(i)<0 && func(i)-func(i+1)>0
a=func(i);
disp( -a )
break
else
disp('no')
end
end
I want to find the maximum volume, it is located in x=0.5 but the problem is that when i run the code the first step goes to one, which is already a negative value. I've tried: i=0:0.001:1, since that is the part where the maximum value is, but i get a totally different answer. Help would be appreciated, thank you very much.

Risposte (2)

Your
func=@(r) -pi*r^3+0.75*pi;
needs to be
func=@(r) -pi*r^3+0.75*pi*r;
if you want to match your plot.

2 Commenti

i have corrected that now, but i still have the same problem. Thanks.
Replace
for i=1:4
by
for i = 1:0.01:4

Accedi per commentare.

You're not indexing the c ("x") properly. See my code below:
c=0:0.001:1;
volume =0.75*pi*c-pi*c.^3;
plot(c,volume, 'b-')
grid on;
xlabel('c', 'FontSize', 16);
ylabel('Volume', 'FontSize', 16);
n=4;
for k = 1 : length(c)
ck = c(k);
ck1 = c(k + 1);
fprintf('c(%d) = %f\n', k, ck);
func=@(r) -pi*r^3+0.75*pi*r;
if func(ck1)-func(ck)<0 && func(ck)-func(ck1)>0
a=func(ck);
fprintf('-a = %d\n', -a);
fprintf('Found peak at index %d, where c = %f\n', k, ck);
break
else
fprintf('no\n')
end
end
Just copy and paste it and try it. It works.

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Tag

Richiesto:

il 24 Mag 2015

Commentato:

il 24 Mag 2015

Community Treasure Hunt

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

Start Hunting!

Translated by