Using the bisection method

1 vue (au cours des 30 derniers jours)
Aaron
Aaron le 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 commentaires
Matt J
Matt J le 22 Sep 2013
Modifié(e) : Matt J le 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 le 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.

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Help Center 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