Este documento describe el método numérico de la bisección para calcular raíces reales de ecuaciones no lineales. El método de la bisección itera dividendo el intervalo que contiene la raíz a la mitad en cada paso hasta alcanzar la precisión deseada. El documento explica la convergencia del método y cómo implementarlo computacionalmente usando MATLAB.
cortes de luz abril 2024 en la provincia de tungurahua
Método de la bisección
1. 22
3 RAÍCES REALES DE ECUACIONES NO-LINEALES
Sea f: R→R. Dada la ecuación f(x) = 0, se debe encontrar un valor real r tal que f(r) = 0.
Entonces r es una raíz real de la ecuación
Si no es posible obtener la raíz directamente, entonces se debe recurrir a los métodos numéricos
iterativos para calcular r en forma aproximada con alguna precisión controlada. Se han creado
muchos métodos numéricos para resolver este problema clásico, pero con el uso de
computadoras para el cálculo, conviene revisar solamente algunos de estos métodos que tengan
características significativamente diferentes.
3.1 Método de la bisección
Sea f: R→R. Suponer que f es continua en [a, b], y que además f(a) y f(b) tienen signos
diferentes. Por continuidad, el intervalo (a, b) contendrá al menos una raíz real.
El siguiente teorema establece la existencia de la raíz r:
Teorema de Bolzano: Si una función f es continua en un intervalo [a, b] y f(a) tiene signo
diferente que f(b), entonces existe por lo menos un punto r en (a, b) tal que f(r)=0.
Si además f'(x) no cambia de signo en el intervalo [a, b], entonces la solución es única.
El método de la bisección es un método simple y convergente para calcular r. Consiste en
calcular el punto medio c=(a+b)/2 del intervalo [a, b] y sustituirlo por el intervalo [c, b] ó [a, c]
dependiendo de cual contiene a la raíz r. Este procedimiento se repite hasta que la distancia
entre a y b sea muy pequeña, entonces el último valor calculado c estará muy cerca de r.
Interpretación gráfica del método de la bisección
En la figura se puede observar que luego de haber calculado c, para la siguiente iteración debe
sustituirse el intervalo [a, b] por [c, b] debido a que f(a) y f(c) tienen igual signo y por lo tanto la
raíz estará en el intervalo [c, b]
3.1.1 Convergencia del método de la bisección
Sean ai, bi, ci los valores de a, b, c en cada iteración i=1, 2, 3, . . . respectivamente
El método de la bisección genera una sucesión de intervalos [a, b], [a1, b1], [a2, b2], …, [ai, bi]
tales que a ≤ a1 ≤ a2 … ≤ ai constituyen una sucesión creciente y b ≥ b1 ≥ b2 …, ≥ bi una
sucesión decreciente con ai < bi. Además por definición del método: ci, r ∈ [ai, bi] en cada
iteración i
2. 23
Sean di = bi – ai longitud del intervalo [ai, bi] en la iteración i=1, 2, 3, . . .
d = b – a longitud del intervalo inicial
Recorrido de las iteraciones
Iteración Longitud del intervalo
1 d1 = d /2
2 d2 = d1/2 = d/2
2
3 d3 = d2/2 = d/2
3
4 d4 = d3/2 = d/2
4
. . . . . .
i di = d/2
i
Entonces
→∞ →∞ →∞
→∞
→ ⇒ → ⇒ → ⇒ → ⇒ ∃ − < εi>0i i i i ii
i i i
i
d
0 d 0 a b c r | c r |
2
para cualquier valor positivo ε
Suponer que se desea que el último valor calculado ci tenga precisión E = 0.001, entonces si el
algoritmo termina cuando bi – ai < E, se cumplirá que |ci – r| < E y ci será una aproximación
para r con un error menor que 0.0001
Ejemplo. Calcule una raíz real de f(x) = x e
x
- π = 0 en el intervalo [0, 2] con precisión 0.01
La función f es continua y además f(0)<0, f(2)>0, por lo tanto la ecuación f(x)=0 debe contener
alguna raíz real en el intervalo [0, 2]
Cálculo manual para obtener la raíz con el método de la Bisección
iteración a b c sign(f(a)) sign(f(c))
inicio 0 2 1 - -
1 1 2 1.5 - +
2 1 1.5 1.25 - +
3 1 1.25 1.125 - +
4 1 1.125 1.0625 - -
5 1.0625 1.125 1.0938 - +
6 1.0625 1.0938 1.0781 - +
7 1.0625 1.0781 1.0703 - -
8 1.0703 1.0781 1.0742
En la última iteración se observa que el intervalo que contiene a la raíz se ha reducido a
[1.0703, 1.0781], por lo tanto el último valor calculado de c = 1.0742 debe estar cerca de r con
una distancia no mayor a 0.01
3. 24
3.1.2 Eficiencia del método de la bisección
Suponer el caso más desfavorable, en el que r está muy cerca de uno de los extremos del
intervalo [a, b]:
Sean i iE r c= − : error en la iteración i
i 1 i 1E r c+ += − : error en la iteración i+1
En cada iteración la magnitud del error se reduce en no más de la mitad respecto del error en la
iteración anterior: i 1 i
1
E E
2
+ ≤ . Esta es una relación lineal. Con la notación O( ) se puede escribir:
i 1 iE O(E )+ = . Entonces, el método de la Bisección tiene convergencia lineal o de primer orden.
Se puede predecir el número de iteraciones que se deben realizar con el método de la Bisección
para obtener la respuesta con una precisión requerida E:
En la iteración i: di = d/2
i
Se desea terminar cuando: di < E
Entonces se debe cumplir d/2
i
< E
De donde se obtiene:
log(d/E)
i
log(2)
>
Ejemplo. La ecuación f(x) = x e
x
- π = 0 tiene una raíz real en el intervalo [0, 2]. Determine
cuantas iteraciones deben realizarse con el método de la bisección para obtener un resultado
con precisión E=0.0001.
El número de iteraciones que deberán realizarse es:
i > log(2/0.0001)/log(2) ⇒ i >14.287 ⇒ 15 iteraciones
3.1.3 Algoritmo del método de la bisección
Calcular una raíz r real de la ecuación f(x) = 0 con precisión E.
f es contínua en un intervalo [a, b] tal que f(a) y f(b) tienen signos diferentes
1) Elija el intervalo inicial [a, b]
2) Calcule el punto central del intervalo: c=(a+b)/2
3) Si f(c)=0, c es la raíz y termine
4) Si la raíz se encuentra en el intervalo [a, c], sustituya b por c
5) Si la raíz se encuentra en el intervalo [c, b] sustituya a por c
6) Repita los pasos 2), 3), 4), 5) hasta que la longitud del intervalo [a,b] sea
menor que E.
El último valor calculado c estará aproximadamente a una distancia E de la raíz r.
4. 25
3.1.4 Instrumentación computacional del método de la bisección
Calcular una raíz r real de la ecuación f(x) = 0. f es contínua en un intervalo [a, b] tal que f(a) y
f(b) tienen signos diferentes
Para instrumentar el algoritmo de este método se escribirá una función en MATLAB. El nombre
será bisección. Recibirá como parámetros f, a, b, y entregará c como aproximación a la raíz r.
Criterio para salir: Terminar cuando la longitud del intervalo sea menor que un valor pequeño e
especificado como otro parámetro para la función. Entonces el último valor c estará
aproximadamente a una distancia e de la raíz r.
function c = biseccion(f, a, b, e)
while b-a >= e
c=(a+b)/2;
if f(c)==0
return
else
if sign(f(a))==sign(f(c))
a=c;
else
b=c;
end
end
end
Ejemplo. Desde la ventana de comandos de MATLAB, use la función bisección para calcular
una raíz real de la ecuación f(x) = xe
x
- π = 0. Suponer que se desea que el error sea menor
que 0.0001.
Por simple inspección se puede observar que f es continua y además f(0) < 0, f(2) > 0. Por lo
tanto se elije como intervalo inicial: [0, 2]. También se puede previamente graficar f.
En la ventana de comandos de MATLAB se escribe:
>> syms x
>> f = x*exp(x)-pi;
>> c = biseccion(inline(f), 0, 2, 0.0001)
c =
1.073669433593750 Este es el resultado calculado
>> subs(f,x,c) Al evaluar f(c) se obtiene un valor cercano a 0
ans =
6.819373368882609e-005
En algunas versiones de MATLAB, la función inline requiere que la expresión matemática esté
definida como cadena de texto. Se puede usar la función char para convertir de tipo simbólico
matemático a cadena de caracteres. Ej.
>> c=biseccion(inline(char(f)), 0, 2, 0.0001)
5. 26
Ejemplo. Encontrar las intersecciones en el primer cuadrante de los gráficos de las funciones:
f(x) = 4 + cos(x+1), g(x)=e
x
sen(x).
Primero se grafican las funciones para visualizar las intersecciones:
>> syms x
>> f=4+x*cos(x+1);
>> g=exp(x)*sin(x);
>> ezplot(f,[0,3.5]),grid on,hold on
>> ezplot(g,[0,3.5])
0 0.5 1 1.5 2 2.5 3 3.5
-6
-4
-2
0
2
4
6
8
x
e p( ) s ( )
Las intersecciones son las raíces de la ecuación h(x) = f(x) – g(x) = 0
El cálculo de las raíces se realiza con el método de la Bisección con un error menor a 0.0001
>> h=f-g
h =
x*cos(x + 1) - exp(x)*sin(x) + 4
>> c=biseccion(inline(h),1,1.5,0.0001)
c =
1.233726501464844
>> c=biseccion(inline(h),3,3.2,0.0001)
c =
3.040667724609375