5
22 3 RAÍCES REALES DE ECUACIONES NO-LINEALES Sea f: RR. 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: RR. 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 a i , b i , c i 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], [a 1 , b 1 ], [a 2 , b 2 ], …, [a i , b i ] tales que a a 1 a 2 a i constituyen una sucesión creciente y b b 1 b 2 …, b i una sucesión decreciente con a i < b i . Además por definición del método: c i , r [a i , b i ] en cada iteración i

Método de la bisección

Embed Size (px)

Citation preview

Page 1: Método de la bisección

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

Page 2: Método de la bisección

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/22

3 d3 = d2/2 = d/23

4 d4 = d3/2 = d/24

. . . . . . i di = d/2i

Entonces

→∞ →∞ →∞→∞

→ ⇒ → ⇒ → ⇒ → ⇒ ∃ − < ε i>0i i i i iii 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 ex - π = 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

Page 3: Método de la bisección

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 i1E E2+ ≤ . 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/2i Se desea terminar cuando: di < E Entonces se debe cumplir d/2i < E

De donde se obtiene: log(d /E)ilog(2)

>

Ejemplo. La ecuación f(x) = x ex - π = 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.

Page 4: Método de la bisección

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) = xex - π = 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)

Page 5: Método de la bisección

26

Ejemplo. Encontrar las intersecciones en el primer cuadrante de los gráficos de las funciones: f(x) = 4 + cos(x+1), g(x)=ex 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