Metodos Numericos
Enviado por paolitaaa34 • 10 de Febrero de 2013 • 1.494 Palabras (6 Páginas) • 516 Visitas
SESION4: “Método de la Bisección”
(15 Noviembre del 2010)
ALUMNO : MARÍN RENGIFO, KELMAN
PROFESOR : MACO VASQUEZ, WILSON
CURSO : ANALISIS NUMERICO
ESCUELA : FÍSICA
2010
PROGRAMAS MEJORADOS
%METODO DE LA BISECCION
function biseccion
clear;
clc;
fprintf('\calculo de la raiz de una ecuacion por método de Bisección\n\n');
y=input('Dame la funcion:','s'); % Se ingresa la función
x1=input('Dame el intervalo inferior :'); % Se ingresa el intervalo inferior
xu=input('Dame el intervalo superior :'); % Se ingresa el intervalo superior
e=input('Dame el porciento del error :'); % Se ingresa el porciento de error
xi=0;
ea=100;
c=1;
x=x1;
a=eval(y); % Evalua la función en el intervalo ingresado
x=xu;
b=eval(y); % Evalua la función en el intervalo ingresado
cc=a*b;
if cc>0;
fprintf('\n\nLos intervalos que ha ingresado para hacer el cáculo de la raiz\n\n');
fprintf('\nde la ecuación no son los adecuados por no existir una raíz entre \n\n');
fprintf('\nestos, Ejecute de nuevo el programa, por favor.\n\n');
return
end
while ea>e % Repite las declaraciones segun el numero definido de veces
xr=(x1+xu)/2;
x=x1;
y1=eval(y);
x=xr;
yr=eval(y);
ea=abs((xr-xi)/xr)*100; % Establece la tolerancia
z=y1*yr;
if z<0
xu=xr;
end
if z>0
x1==xr;
end
if z==0
fprintf('\n\n\n\nLa raiz exacta es: %d',xr);
fprintf('\n\nNumero de iteraciones: %d',c);
break
end
xi=xr;
c=c+1;
end
if ea<e
fprintf('\n\n\n\nLa raiz exacta es: %d',xr);
fprintf('\n\nNumero de iteraciones: %d',c);
end
%fprintf: Convierte el resultado en una cadena de caracteres que devuelve
%como valor de retorno.
% while: Repite las declaraciones un numero definido de veces
% if: Es un condicional que sirve apra ejecutar sentencias (es decir,
% si se cumple la condición se realiza el ajuste indicado en la
% instruccion, caso contrario no se ejecuta).
% abs: valor absoluto
function biseccion1
f=input(' Ingrese la funcion f(x)=','s'); % Se ingresa la función
a=input(' Ingrese el Limite Inferior del intervalo que contiene a la raiz buscada:'); % Se ingresa el intervalo inferior
b=input(' Ingrese el Limite Superior del intervalo que contiene a la raiz buscada:'); % Se ingresa el intervalo superior
n=input(' Ingrese el Numero de Iteraciones:'); % Se ingresa el numero de iteraciones
xmi=a; xma=b; % define como minimo al limite inferior y maximo al limite superior
x=a; fa=eval(f); % Evalua la funcion en en el limite inferior
x=b; fb=eval(f); % Evalua la funcion en el limite superior
if fa*fb>0 % Evalua si cumple la condicion indicada
fprintf('En el intervalo dado no existen raices');
fprintf('\n')
else
i=1; % contador, i=1
while i<=n
r=(a+b)/2; % asgina a la variable r la operacion de biseccion (pto medio)
x=a; fa=eval(f);
x=b; fb=eval(f);
x=r; fr=eval(f);
fprintf('\n') % Pasa a la siguiente linea
fprintf('%3.0f%10.6f%10.6f%10.6f%10.6f%\n',i,a,b,r);
if fr==0;
break
fprintf('la raiz es:\n'),r
else
if fa*fr<0 % si el producto de funciones es menor que cero,
b=r; % entonces b=r
else % caso contrario,
a=r; % se evalua para a=r
end
end
i=i+1; % se va iterando de modo consecutivo
end
fprintf('\nLa raiz es:\n'),r
end
x=xmi:0.1:xma; % define el intervalo para el domnio (con un paso de 0.1)
y=eval(f(x)); % asigna a la variable y la evaluacion de la funcion f(x)
plot(x,y); % Grafica la funcion f(x)
...