want to follow my iteration - how?

Hi, I want to follow how my while-loop iteration is proceeding at each step. How can I do this?****I want to understand and correct why my iteration is never ending:
v_m=10;
R_try=0;
v_m_try=0;
while abs(v_m_try-v_m)>0.01
if (v_m_try<v_m)
R_try=R_try+0.05;
v_0_try=sqrt(9.81*R_try*0.02);
v_m_try=0.4*log(12.27*v_0_try^2);
else
R_try=R_try-0.05;
v_0_try=sqrt(9.81*R_try*0.02);
v_m_try=0.4*log(12.27*v_0_try^2);
end
end

2 Comments

Please use proper code formatting. Follow the "Markup help" link on this page.
Maybe use debugger?

Sign in to comment.

 Accepted Answer

v_m=10;
R_try=0;
v_m_try=0;
i1 = 0;
while abs(v_m_try-v_m)>0.01 && i1 < 100
if v_m_try<v_m
R_try=R_try+0.05;
else
R_try=R_try-0.05;
end
v_0_try=sqrt(9.81*R_try*0.02);
v_m_try=0.4*log(12.27*v_0_try^2);
i1 = i1 + 1;
out(i1,:) = [R_try, v_m_try];
end

6 Comments

Good, but the iteration continues until
i1<100
it does not terminate when:
abs(v_m_try-v_m)>0.01
See your algorithm and modify it
solution your problem
>> R_try = fzero(@(x)0.4*log(12.27*9.81*x*0.02)-10,[eps 5e10])
R_try =
2.991e+010
After running Andrei's solution, do plot(out(:,2)). You asked to see the iterations at each step and see why it's not terminating. Plotting the v_m_trys you'll see that they increase very slowly -- possibly heading to an asymptote below v_m = 10, or maybe just growing too slowly to get there in any sensible time. Andrei's second comment shows that it's the latter: you'd need about 6x10^10 iterations.
FWIW, rather than fzero, you could also just do it algebraically: R_try = exp(10/0.4)/(12.27*9.81*0.02)
Thanks Matt! I've been seeing only the "fzero", "fsolve" b and other tricks - I'm a hostage MATLAB, I start to forget algebra - my fault ... :)

Sign in to comment.

More Answers (1)

If you want to see what's going on you can use:
disp([v_m,v_m_try,v_0_try,R_try])
If that is not detailed enough check the trusty pair: fprintf and sprintf.
HTH,

Categories

Community Treasure Hunt

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

Start Hunting!