Está en la página 1de 8

Instituto Politécnico

Nacional
 

Escuela Superior de Ingeniería


Mecánica y Eléctrica Unidad Zacatenco
(ESIME)

Métodos Numéricos
3EV1

Practica 7
Ecuaciones no lineales
Método de Bisección

Alumno: Diego Martinez Montes


No. De boleta : 2020302862
aaaaa

 
Diego Martinez Montes 1

1. Objetivo del método

El método de bisección se aplica a funciones algebraicas o trascendentes y proporciona


únicamente raíces reales. Tiene su origen en un popular algoritmo de búsqueda de
datos en arreglos vectoriales denominado búsqueda binaria. Es un método cerrado, es
decir, requiere de un intervalo en el cual este atrapada una raíz. Básicamente, consiste
en cortar el intervalo en dos justos por la mitad (bisectar) considerando a este punto
como una aproximación de la raíz de la función. Posteriormente, debe determinarse si
la raíz verdadera se encuentra a la derecha o a la izquierda de la aproximación y, según
corresponda, cerrar el intervalo con la aproximación y el límite derecho o izquierdo, pero
siempre manteniendo a la raíz verdadera en el intervalo. Esta operación se repite hasta
que la diferencia entre las dos últimas aproximaciones sea menor que una tolerancia
preestablecida.

A partir de una función algebraica o trascendente y de un intervalo [a, b] que pertenece


al dominio de la función y para el cual f(a) · f(b) < 0, lo que implica que en el intervalo [a,
b] existe al menos una raíz. El método consiste en bisectar el intervalo [a, b]:

a+b
x 0=
2

se obtiene una aproximación a la raíz x0; la función se valúa en este nuevo valor y de
acuerdo con el signo de la función valuada en este punto, deberá sustituirse uno de los
extremos del intervalo de búsqueda, de tal forma que se conserve que f(a) · f(b) < 0. De
acuerdo con la geometría de la figura, la sustitución de los intervalos deberá hacerse de
la siguiente forma:

Sea a tal que f(a) < 0 y b tal que f(b) > 0:

Si f(x0) < 0, entonces x0 sustituye a “a”

Si f(x0) > 0, entonces x0 sustituye a b

En cada iteración deberá sustituirse alguno de los límites del intervalo que contiene a la
raíz. Repitiendo este proceso, el intervalo se reduce paulatinamente hasta que alguna
de las aproximaciones coincide razonablemente con la raíz de la función.

El proceso se detiene cuando entre la aproximación x i y la aproximación anterior x i−1 se


satisface un nivel de error (absoluto o relativo) preestablecido (tolerancia).

En todo caso, el método convergerá siempre y cuando en toda iteración se conserve:


f(a)· f(b) < 0
Diego Martinez Montes 2

2. Procedimiento
Sea f(x) continua:

Encontrar valores iniciales xa, xb tales que f(xa) y f(xb) tienen signos opuestos, es decir
f(xa)*f(xb)<0

La primera aproximación a la raíz se toma igual al punto medio entre x a y xb

x a+ xb
x y=
2

Evaluar f(xy) Forzosamente debemos caer en uno de los siguientes casos:

f ( x a )∗f ( x y ) < 0

 En este caso, tenemos que f(xa) y f(xy) tienen signos opuestos, y por lo tanto la raíz se
encuentra en el intervalo. [xa, xy]
Diego Martinez Montes 3

f ( x a )∗f ( x y ) > 0

 En este caso, tenemos que f(xa) y f(xy) tienen el mismo signo, y de aquí que f(xb) y f(xy)
tienen signos opuestos. Por lo tanto, la raíz se encuentra en el intervalo. [xb, xy]

f ( x a )∗f ( x y ) =0

 En este caso, tenemos que f(xy)=0 y por lo tanto ya ubico la raíz.

Se repite el proceso con el nuevo intervalo hasta que

|∈a|<∈ xδ

| x actual−x previa
x actual
∗100 % <∈xδ
|
Diego Martinez Montes 4

3. Diagrama de flujo

4. Aplicaciones
Diego Martinez Montes 5

5. Código del programa


% Método de Bisección

clear all; % Limpia la memoria


clc; % Limpia la ventana de comandos

% Ingresar la función, intervalo de evaluación y porcentaje de error.

fprintf('\n Cálculo de la raíz de una ecuación por el método de Bisección \n\n');

Y=input('Dame la función : ','s');


Xa=input('Dame el intervalo inferior : ');
Xb=input('Dame el intervalo superior : ');
error=input('Dame el porciento del error : ');

% Determinar si en el intervalo entre [Xa,Xb] está comprendida la raíz de la ecuación


x=Xa;
Ya=eval(Y); % f(Xa)

x=Xb;
Yb=eval(Y); % f(Xb)

if (Ya*Yb)>0
fprintf('\n\n No existe una raíz en el intervalo [Xa,Xb] \n\n');
fprintf('\Execute de nuevo el programa, por favor.\n\n');
% break
end

% Se realizan los cálculos para determinar la raíz en la siguiente sección.


fprintf('\n\n')
disp(' N Xa Xb Xr F(Xa)
F(Xb) F(Xr) Error ');
disp('|---|-----------------|------------------|-------------------|-----------------
--|------------------|--------------------|-----------');

Xant=0; % X anterior
N=0; % Contador de Iteraciones
while N<50
Xr=(Xa+Xb)/2;
Xact=Xr; % X actual
x=Xr;
Yr=eval(Y);

Ea=abs((Xact-Xant)/Xact)*100; % Cálculo del Error

ds_i=sprintf('%4d %17.8g %17.8g %17.8g %17.8g %17.8g %17.8g %10.5g', N, Xa,


Xb, Xr, Ya, Yb, Yr, Ea);
disp(ds_i);

% Impresión de los Resultados


if Ea<error
Diego Martinez Montes 6

fprintf('\n\n La Raíz Exacta es: %d',Xr)


fprintf('\n\n Número de iteraciones: %d \n\n',N);
break
end

% Se determina el nuevo intervalo de evaluación


if (Ya*Yr)<0
Xb=Xr;
elseif (Ya*Yr)==0
fprintf('\n\n La raíz exacta es: %17.8g',Xr)
fprintf('\n\n Número de iteraciones: %d',N);
break
else
Xa=Xr;
end
Xant=Xr;
N=N+1;
end

6. Resultados del programa

7. Conclusiones
Diego Martinez Montes 7

Bisección es un método robusto, aunque resulta lento en su proceso por lo oneroso de


los cálculos que deben realizarse. los valores de la función valuada en las diferentes
f(xi) tiende a cero, pero no en forma directa, sino oscilando entre valores positivos y
negativos. Este comportamiento indica que el método puede ser inestable pero
convergente si se respeta el criterio que corresponde.

También podría gustarte