Skip to content

Instantly share code, notes, and snippets.

@l337quez
Last active March 25, 2016 15:19
Show Gist options
  • Save l337quez/7f25894d4fb5eb59aa19 to your computer and use it in GitHub Desktop.
Save l337quez/7f25894d4fb5eb59aa19 to your computer and use it in GitHub Desktop.
Programa hecho en matlab que muestra la solucion graficamente del metodo de biseccion, pero funciona en solo polinomios
%Creado por:Ronal Forero
%Programa del metodo de Biseccion
clc, clear %limpiamos pantalla, limpiamos workspace
fprintf('\n Nota:Ingrese el plinomio como un vector. \n')
fprintf('\n Ejemplo: x^3 + 4x^2 + 7x + 9 => [1 4 7 9] \n')
pol=input('\nIngrese el polinimoio:');
tol=input('\nIngrese la Tolerancia permitida:');
a=input('\n Ingrese el punto "a" del intervalo [a,b]:');
b=input('\n Ingrese el punto "b" del intervalo [a,b]:');
ite=input('\nIngrese el numero maximo de iteraciones:');
rango=input('\n Ingrese un numero que sera simetrico para el rango del eje x en la Gragica \n');
Fa=polyval(pol,a);
Fb=polyval(pol,b);
i=0; %iteraciones
clc %limpiamos pantalla
%Graficamos la funcion
EJEx=-rango:rango;
y=polyval(pol,EJEx);
plot (EJEx,y)
title ('Metodo de Biseccion');
grid on
hold on
disp(' Xi Signo')
if Fa*Fb<0%comprobamos que sean de signo diferente
while i<ite
%verificamos si es una buena aproximacion
c=a+((b-a)/2); %usamos esta ecuacion para asegurar el punto c
Fa=polyval(pol,a);
Fb=polyval(pol,b);
Fc=polyval(pol,c);
if Fa*Fc<0 %a --- c
Apro=polyval(pol,c);
b=c;
fprintf('\t%f\t%f\n',c, Apro)
elseif Fc*Fb<0 %c ---- b
a=c;
Apro=polyval(pol,c);
fprintf('\t%f\t%f\n',c, Apro)
% plot(a,'om')
elseif abs(Fa)>tol
Apro=Fa
fprintf('\t%f\t%f\n',c, Apro)
i=ite
end
%Graficando punto a y b
plot(a,0,'or')
plot(b,0,'or')
plot(c,0,'om')
%text(x,y,str)
text(a,1.5,num2str(a))
text(b,1.5,num2str(b))
text(c,1.5,num2str(c))
i=i+1;
end
else
fprintf('\n No se cunple que F(a) y F(b) sean de signos diferentes \n')
fprintf('\n No Existen Raices o existe un numero par de raices \n')
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment