How can i run the for loop with a stepsize smaller than one?
Mostra commenti meno recenti
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)
Walter Roberson
il 24 Mag 2015
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
Alvaro García
il 24 Mag 2015
per isakson
il 24 Mag 2015
Replace
for i=1:4
by
for i = 1:0.01:4
Image Analyst
il 24 Mag 2015
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
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!