Vous êtes sur la page 1sur 4

Método de la Bisección.

Paso 1: Verificar que cumple el teorema de Bolzano, para asegurarnos que existe una raíz en el intervalo
 xa , xb  .
Paso 2: Calcular el numero de iteraciones a realizarse, donde  es la tolerancia o error pedido,
x x 
ln  b a 
 
n 
ln 2
Paso 3: La primera aproximación a la raíz se determina con la fórmula del punto medio:
xa  xb
xz 
2
Paso 4: Realizar las siguientes evaluaciones para determinar el intervalo en el que se encuentra la raíz:
x , x 
a) Si f  xa  . f  xz   0 , entonces la raíz se encuentra en el intervalo a z
x , x 
b) Si f  xa  . f  xz   0 , entonces la raíz se encuentra en el intervalo z b
c) Si  a   b  , entonces f ( xz )  0 . Ya encontramos la raíz
f x .f x  0
Paso 5: De darse el caso a) o el caso b) se repite todo el proceso, llamando a cada una de esta serie de pasos
“iteraciones”.
Debemos repetir estas iteraciones hasta verificar que se cumple la tolerancia o error pedido con la que debemos
aproximarnos a la raíz.
Al cumplirse la condición del Paso 4, la raíz o solución es el último punto medio que se obtuvo.
x x x  xz 1
xz  xz 1  tolerancia  r  z z 1 r %  z 100%
xz xz
Programación

%biseccion('0.5*exp(x/3)-sin(x)',0.5,1,0.000001)
function biseccion(f,a,b,tol)
f=inline(f);% inline convierte a f en una función que depende de x
n=ceil((log(b-a)-log(tol))/log(2));
% ceil toma el entero mayor cercano obtenido por la cota de error del método
fprintf('\n it. a b x=(a+b)/2 f(x) \n')
for i=1:n
x=(a+b)/2;
fprintf('%3.0f %10.10f %10.10f %10.10f %10.10f \n',i,a,b,x,f(x))
% muestra en cada paso los valores de: la iteración i, a, b, x y f(x)
% la instrucción %10.10f significa dejar 10 espacios y colocar el número con 10 decimales
% la instrucción \n permite cambiar a una línea nueva
if f(a)*f(x)<0
b=x;
else
a=x;
end
end
fprintf('\n La aproximación de la raíz es: %3.10f \n\n',x)
Método de la falsa posición

f ( xa )  xb  xa  f ( xa )  xa  xb 
xr  xb  xa  o xr  xa  xb 
f ( xb )  f ( xa ) f ( xb )  f ( xa )
xi  xi 1
p  100%
xi
Programación

%falsaposicion('exp(-x)-log(x)',1,2,0.01)
function falsaposicion(f,a,c,tol)
Fx=inline(f);% inline convierte a f en una función que depende de x
x=a;
Fa=eval(f);
x=c;
Fc=eval(f);
fprintf('\n i a b c F(a) F(b) F(c) |c-a| \n');
i=0;
while abs(c-a)>tol
b=(c*Fa-a*Fc)/(Fa-Fc);
x=b;
Fb=eval(f);
i=i+1;
fprintf('\n %2.0f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f
\n',i,a,b,c,Fa,Fb,Fc,abs(c-a));
if abs(Fc)<tol
break;
else
if Fa*Fb<=0
c=b;
Fc=Fb;
else
a=b;
Fa=Fb;
end
end
end
fprintf('\n La aproximación de la raíz es: %.4f',b);
ezplot(Fx);%grafica de la funcion
grid on;
Método de Newton Raphson

f ( xi ) xi  xi 1
xi 1  xi  donde f ( xi )  0 ;  a  xi  xi 1 r 
f ( xi ) xi

Programación

%newton('0.5*exp(x/3)-sin(x)',0,0.000001)
function newton(f,x0,tol)
syms x;% convierte a x en una variable simbolica para poder derivar la función
df=diff(f,x); % deriva con respecto a x
f=inline(f);
df=inline(char(df));
% inline convierte a f y su derivada df en una funciones que dependen de x
% char transforma a la derivada como una cadena de caracteres para poder
% definirla como función
fprintf('\n i x f(x) \n')
i=0;
%fprintf('%2.0f %110.10f %10.10f \n',i,x0,f(x0))
x1=x0-f(x0)/df(x0);
while abs(x0-x1)>tol
i=i+1;% contador de iteraciones
fprintf('%2.0f %10.10f %10.10f \n',i,x1,f(x1))
x0=x1;
x1=x0-f(x0)/df(x0);
end
fprintf('\n La aproximación de la raíz es: %3.10f \n\n',x1)

Método de la Secante
f  xi  xi  xi 1  xi  xi 1 xi  xi 1
xi 1  xi  , i  1, 2,3,... ; |  a || xi  xi 1 | r  p  100%
f  xi   f  xi 1  xi xi

Programación

%ingresando la tolerancla de error en %:


%secante('atan(x)-2*x+1',0,1,1)
function secante(f,a,b,tol)
f=inline(f);
error=100;
disp(' i a b r error ')
i=1;
while (error>tol)
r=b-f(b)*(b-a)/(f(b)-f(a));
error=abs((r-b)/r*100);
fprintf('%3.0f %4.6f %4.6f %4.6f %4.6f \n',i,a,b,r,error);
a=b;
b=r;
i=i+1;
end
xa=r;
disp('Se concluye que la aproximación a la raíz es :')
xa
ezplot(f);%grafica de la funcion
grid on;
Método del punto fijo
Definición. (Punto fijo) Sea f :  es una función continua en
 a, b  tal que f ( x)  0 es equivalente a
x  g ( x) . Se dice que  (que es raíz de ambas funciones) es un punto fijo de la función g  g ( x) , sí g ( )   .

Ejemplo. Consideremos la función f ( x)  cos x  x continua en


 a, b  . Entonces f ( x)  cos x  x  0 es
equivalente a x  cos x  g ( x) . También es equivalente a:
x  cos x 2 x  cos x
x ; x ; x  x cos x ; etc.
2 3
Observación. La ecuación x  g ( x) se utiliza para construir la función iterativa:
xi 1  g ( xi ), i  0,1, 2,3,...
donde x0 es un valor inicial elegido con algún criterio.
xi 1  xi
p  100%
xi 1
Programación

%puntofijo('1.14-2*log10*(0.025+3.1167*10^(-4))',1,0.000001)
function puntofijo(g,x0,tol)
g=inline(g);
fprintf('\n it. x g(x) \n')
i=0;
fprintf('%3.0f %10.10f %10.10f \n',i,x0,g(x0))
x1=g(x0);
while abs(x0-x1)>tol
i=i+1;
fprintf('%3.0f %10.10f %10.10f \n',i,x1,g(x1))
x0=x1;
x1=g(x0);
end
fprintf('\n La aproximación del punto fijo es %3.10f \n\n',x1)

Vous aimerez peut-être aussi