miércoles, 8 de febrero de 2012

Método de la Bisección en Matlab

xai=input('Ingrese el intervalo inferior: ');
xbi=input('Ingrese el intervalo superior: ');
tol=input('Ingrese el porcentaje de error: ');
syms x;
f=input('Ingrese la funciòn: ');
i=1;

f1=subs(f,x,xai);
f2=subs(f,x,xbi);

ea(i)=100;
if f1*f2 < 0
    xa(i)=xai; f1=subs(f,x,xa(i));
    xb(i)=xbi; f2=subs(f,x,xb(i));
    xr(i)=(xa(i)+xb(i))/2; f3=subs(f,x,xr(i));
    
    fprintf('It.       Xa               Xr             Xb           Error aprox \n');
    fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \n',i,xa(i),xr(i),xb(i));
    while abs(ea(i)) >= tol,
      if f1*f3<0
         xa(i+1)=xa(i);f1=subs(f,x,xa(i+1));
         xb(i+1)=xr(i);f2=subs(f,x,xb(i+1));
      end
      if f1*f3> 0
         xa(i+1)=xr(i);f1=subs(f,x,xa(i+1));
         xb(i+1)=xb(i);f2=subs(f,x,xb(i+1));
      end      
      xr(i+1)=(xa(i+1)+xb(i+1))/2; f3=subs(f,x,xr(i+1));
      ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1))*100);
      fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f \n',...
              i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1));
      i=i+1;
   end
else
   fprintf('No existe una raíz en ese intervalo');
end

3 comentarios:

  1. Señor Israel Nuñez
    El suscrito es profesor univesitario de los cursos de fenomenos de transferencia de la carrera de Ingeniería quimica de una Universidad peruana.
    He revisado todos los videos que ha publicado hasta la presente fecha y los considero muy útiles para los estudiantes de Ingenieria.
    Sería bueno de que pueda dar acceso a poderlos bajar los videotutoriales para las computadoras personales.
    Lo felicito por la loable labor que esta desarrollando
    Eduardo rosado Herrera

    ResponderEliminar
  2. al parecer si realizas una cuenta en vimeo puedes descargarlos.
    Pero si no es así por favor avísame y poco a poco los iré subiendo para sean descargados.
    También subiere el código fuente de los ejemplos que utilícese en en los próximos tutoriales, así como también el vídeo correspondiente del tutorial.
    Muchas Gracias por tu comentario estamos a tus ordenes.

    ResponderEliminar
  3. Hola, como se ingresa la función en este programa? Me interesaría ingresar funciones de polinomio. Muchas gracias.

    ResponderEliminar