Algoritmo de la biseccion

Solo disponible en BuenasTareas
  • Páginas : 2 (362 palabras )
  • Descarga(s) : 0
  • Publicado : 24 de enero de 2012
Leer documento completo
Vista previa del texto
ALGORITMO DE LA BISECCIÓN
M-file Nº 1
function [fa]=fun(a) % funcion para evaluar el valor de a en la funcion
% la funcion fun devuelve fa el resultado de la evalucion
x=a; % x toma elvalor del a
fa=x.^3+2*x.^2+10*x-20; % fa es el resultado de evaluar x=a en la funcion
end

M-file Nº 2
function biseccion(a,b,tol,NO) %en la funcion ingresamos
%(extremo izquierdo, extremoderecho, tolerancia, nº iteraciones)
ei=a; % almacén de extremo izquierdo
ed=b; % almacén de extremo derecho
i=1;
[fa]=fun(a); %fun es otra función creada en current directory que evalua% a en la función establecida
p=0; %declaramos a p=0 por defecto en caso no ingrese al bucle while
ite=0; %para mostrar el número de la iteración
while(i<=NO)
ite=ite+1;p=a+(b-a)/2;
fprintf('numero de iteración %i \n',ite); % mostrando nº de iteración
fprintf('p = %12.6f \n',p); % mostramos p
[fp]=fun(p); %evaluamos p en la función
fprintf('fp =%12.6f \n',fp); %mostramos fp
if (fp==0) | ((b-a)/2 < tol) % preguntamos si fp coincide con cero o
% o si (b-a)/2 es menor que la tolerancia
fprintf('laraiz p es %12.6f \n',p); %mostramos el resultado final de p
fprintf('el valor de f(p) es: %12.6f \n',fp);%mostramos el resultado final de fp
fprintf('El numero de iteaciones requirido es:%12.4f \n',i);%mostramos el resultado final de iteraciones
break;
end
i=i+1;
if fa*fp>0 %condición para a o b tomen el valor de p de acuerdo si fa*fp es mayor a ceroa=p;
else
b=p;
end
end
% código para graficar
z=ei:0.1:ed; %vector z
[fz]=fun(z) % evaluamos vector z en la función z
plot(z,fz); %graficamos
grid on
axis([p-0.1p+0.1 fp-0.1 fp+0.1]) %ajustamos el grafico para apreciar la intersección
end

Nota: las 2 funciones en su respectivo m-file deben estar guardados en la misma carpeta para que funcione...
tracking img