Using the bisection method

1 view (last 30 days)
Aaron
Aaron on 22 Sep 2013
I'm not sure if I used the bisection method correctly. Do I have to have two separate .m files? Is the code below okay?
T_o = 300;
T = 1000;
u_o = 1360;
q = 1.7e-19;
n_i = 6.21e9;
p_desi = 6.5e6;
N = [0 2.5e10];
n = @(N) 0.5*(N + sqrt(N.^2 + 4*n_i^2));
u = u_o*(T/T_o)^-2.42;
p = @(N) (1./(q*n(N)*u)) - p_desi;
hold on
plot(N,p(N))
x_l = 9.8e9;
x_u = 9e9;
for i = 1:1:100
x_r = (x_u+x_l)/2;
if ((p(x_l).*p(x_r)) < 0)
x_u = x_r;
else
x_l = x_r;
end
plot(x_r,p(x_r),'k-')
end
hold off
  2 Comments
Matt J
Matt J on 22 Sep 2013
Edited: Matt J on 22 Sep 2013
Can't you tell if it's working by testing it?
I hope this is homework, BTW. Otherwise, you are unnecessarily re-inventing the wheel. FZERO is already available for finding roots, and may do better than bisection.
Aaron
Aaron on 22 Sep 2013
I did run it but the correct graph was a decreasing curved line. Mine is just a straight, decreasing line.
Its not really homework, just practice stuff for the homework to come. I am aware of the FZERO option, but just wanted to try this out.

Sign in to comment.

Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!