Suponga que f es una función continua digamos . Deseamos calcular soluciones de la ecuación escalar nolineal
f(x) = 0 (4.1)
Más general aún, podemos considerear el caso en que donde n³1. Entonces (4.1) representa un sistema de ecuaciones nolineales. Problemas del tipo (4.1) aparecen en la optimización de funciones y en la solución numérica de problemas de frontera nolineales. En este capítulo enfocaremos más en el problema escalar y discutiemos los apectos básicos del caso de sistemas de ecuaciones.
Este método tiene como base ó motivavión el Teorema (1.3), Teorema del Valor Intermedio. En particular, si f es una función continua digamos , y a, b son dados tales que f(a)f(b)£0, entonces definimos c=(a+b)/2. Si f(c)=0, entonces terminamos. De lo contrario remplazamos a ó b con c manteniendo la diferencia en signos, etc. Esto nos lleva al siguiente pseudo algorítmo llamado el Método de la Bisección:
Suponga que es una función continua y que a, b son dados tales que f(a)f(b)£0 y e>0 es también dado (criterio de paro).
Ejemplo 1: Considere la función f(x)=x2+x-1. Note que como f(0)=-1 y f(1)=1, tenemos que existe una raiz de la ecuación f(x)=0 en el intervalo (0,1). Vamos a aproximar esta raiz con el método de la bisección. Los resultados son como sigue:
n |
an |
bn |
cn |
f(an) |
f(bn) |
f(cn) |
1 |
0 |
1 |
0.5 |
-1 |
1 |
0.25 |
2 |
0 |
0.5 |
0.25 |
-1 |
0.25 |
-0.69 |
3 |
0.25 |
0.5 |
0.375 |
-0.69 |
0.25 |
-0.48 |
4 |
0.375 |
0.5 |
0.4375 |
-0.48 |
0.25 |
-0.37 |
5 |
0.4375 |
0.5 |
0.46875 |
-0.37 |
0.25 |
-0.31 |
La solución correcta a seis cifras calculada con la función
fzero de MATLAB es 0.618034. Podemos ver que
el método de la bisección aunque progresa hacia la solución,
lo hace un tanto lento. Veamos ahora por que esto es asi analizando la
convergencia del método.
Análisis de Error: Como f(a)f(b)£0, sabemos que existe un número tal que f(a)=0. Mediante inducción matemática es fácil ver que
(4.2)
Esto es asi ya que el largo del intervalo se divide a la mitad cada ves que pasamos por el paso (2) del algorítmo. Nuevamente usando inducción matemática obtenemos que
(4.3)
Observe que como ó tenemos que
(4.4)
Combinando (4.3) y (4.4) obtenemos que
(4.5)
lo cual implica que según . La convergencia en (4.5) es lo que se conoce como convergencia lineal con taza razón de convergencia ½. De la desigualdad (4.5) podemos estimar el número de iteraciones necesarias para obtener que . En particular si requerimos que , obtenemos que
(4.6)
Basados en este análisis de convergencia podemos hacer las siguientes observaciones:
El método de la bisección no generaliza al caso de sistemas nolineales debido a que no es posible una generalización del Teorema (1.3) a funciones vectoriales de variable vectorial.
Suponemos ahora que la función f es diferenciable e incorporamos información de la derivada en el método. Sea pues f ÎC1. La recta tangente a f en el punto (x0,f(x0)) esta dada por la ecuación . Ahora aproximamos a f con esta recta y definimos x1 como el intercepto en x de la recto, esto es:
(4.7)
Este proceso lo podemos repetiir ahora con el punto (x1,f(x1)), etc., obteniendo asi la recursión
(4.8)
Esta recursión define el Método de Newton y es un ejemplo de una iteración de punto fijo.
Vamos a suponer que queremos calcular el cociente a/b usando solo las operaciones . En la mayoria de las computadoras las operaciones se implementan a nivel de "hardware" mientras que la división se hace mediante programado (software) utilizando. Note que como , entonces es suficiente discutir el computo de reciprocos. Si definimos la función f(x) por
(4.9)
entonces es la raiz de f(x)=0. Usando que , el método de Newton para la ecuación f(x)=0 toma la forma:
(4.10)
la cúal envuelve unicamente. Note que
de donde obtenemos la fórmula
(4.11)
i.e,
(4.12)
Esta fórmula, exacta en este caso, aplica en general al método de Newton pero asintoticamente según se converge a la raiz (demostración más adelante). De la ecuación (4.12) obtenemos que según si y solo si , i.e.,
(4.13)
¿Cómo seleccionamos x0 para que cumpla con (4.13)? Bueno la parte de x0>0 es simple de verificar. ¿Cómo saber si x0<(2/b) cuando no conocemos 2/b? Note que si x0>0, entonces
Asi que si , entonces sabemos que . En esta caso reducimos x0, digamos a x0/2, y empezamos las iteraciones de nuevo. Note que despúes de esta etapa inicial, la convergencia es bién rápida, de hecho cuadrática de acuerdo a la ecuación (4.12). Esto es, en cada iteración el número de cifras significativas se duplica.
Vamos ahora a precisar la noción de rápidez o orden de convergencia de una sucesión.
Definición (4.1): Suponga que la sucesión converge al número a. Decimos que converge a a con orden p³1 si existen M,N³0 tales que
(4.14)
El número p, que no tiene que ser un entero, se llama el orden de convergencia. Si p=2 la convergencia se llama cuadrática. Si p=1 y M<1 la convergencia se llama lineal con taza o razón de convergencia M.
Nota: Mientras más grande sea p, más rápido converge la sucesión a a. Si p=1, mientras más pequeño sea M, más rápido converge la sucesión.
Vamos a discutir ahora el problema de calcular raices cuadradas. Defina para a>0 la función la cual tiene como una de sus raices. Dado que tenemos que el método de Newton aplicado a la ecuación f(x)=0 toma la forma:
(4.15)
Tenemos ahora el siguiente resultado sobre la convergencia de estas iteraciones.
Teorema (4.1): La sucesión (xn) definida por la iteración (4.15) converge a para cualquier x0>0 con orden de convergencia de dos.
Demostración: Si x0>0 y a>0 entonces sigue de (4.15) que xn>0 para toda n³0. Además
(4.16)
De aqui y como xn>0, obtenemos que para toda n³1. Ahora (4.15) se puede rescribir como
(4.17)
Esto combinado con para toda n³1 implica que para toda n³1. Tenemos pues que (xn) esta acota inferiormente por y es decreciente de modo que es convergente. Falta ver que converge a. Sea a el limite de (xn). Entonces dejando en la ecuación (4.17) obtenemos que , i.e, . Pero como xn>0 para toda n³0, tenemos que , i.e., . La convergencia cuadrática de la sucesión sigue ahora de la expresión (4.16).
Nuevamente vemos convergencia cuadrática del método de Newton. Veamos ahora el resultado general.
Teorema (4.2) (Convergencia Local del Método de Newton): Suponga que es una función C2 en una vecindad del número a para el cual . Entonces si x0 se selecciona suficientemente cerce de a, las iteraciones del Método de Newton convergen a a. Además
(4.18)
es decir, (xn) converge a a con orden de convergencia p=2.
Demostración: Usando el Teorema de Taylor podemos escribir
(4.19)
donde esta entre a y xn. Como y es continua, existe un intervalo I alrededor de x=a tal que para . Defina ahora el número M por
(4.20)
el cual existe y es finito (¿por qué?). Si , podemos despejar para a en (4.19) obteniendo asi que
(4.21)
Definimos ahora el intervalo por
(4.22)
Veamos ahora que si , entonces para toda n³0. De hecho de (4.21) tenemos que si , entonces . Multiplicando por M ambos lados obtenemos que
(4.23)
Ahora como , tenemos que . También de (4.23) obtenemos que , i.e, . Combinando esto con obtenemos que . De aqui que si entonces las iteraciones del Método de Newton estan bien definidas, permanecen en , y (4.23) implica que
(4.24)
Si de modo que , entonces (4.24) implica que y la convergencia es de orden dos ya que . Para terminar note que (4.21) se puede escribir como
(4.25)
Dejando y usando que , y por consiguiente , y la continuidad de , obtenemos la expresión (4.18).
La selección del punto inicial x0 que garantice la convergencia del Método de Newton es un asunto notrivial. Cualquier estimado o conocimiento previo de la localización de la raiz debe utilizarce para asegurar la convergencia del método. Por ejemplo una gráfica de la función f podria arrojar una idea sobre la raiz. Luego de esto se puede utilizar un método como la bisección para corregir la aproximación y pasarla entonces al método de Newton. Esto asemeja a los métodos predictor-corrector comunes en la solución numérica de ecuaciones diferenciales ordinarias.
Una ves tenemos un método iterativo como el de Newton que no tiene en general una expresión como (4.6) para predecir el número de iteraciones necesarias para lograr un error pre-determinadado, ¿cómo detenemos las iteraciones? Veamos ahora un criterio heurístico para detener el método. Suponiendo que las iteraciones (xn) estan "cerca" de la raiz a, podemos escribir
(4.26)
Asi que si tenemos aproximadamente t cifras significativas en xn como aproximación de a.
La motivación del método de la secante viene de que en ocaciones es complicado ó quizas imposible calcular la derivada de la función f en el método de Newton. Por ejemplo la función f podría estar especificada por un número discreto de puntos ó dada por un programa de computadora. En tales situaciones el método de Newton se hace impractico y buscamos un método intermedio entre el de la bisección y el de Newton. Para esto suponemos que tenemos dos aproximaciones x0, x1 de la raiz a. Podemos ahora construir la secante a la función f en los punto (x0,f(x0)), (x1,f(x1)), la cual esta dada por:
(4.27)
Definimos la nueva aproximación x2 como el intercepto en x de esta secante, i.e.,
(4.28)
Este proceso lo podemos repetir ahora con x1, x2 para generar x3, etc. Obtenemos asi la recurción que define el Método de la Secante:
(4.29)
El método de la secante es un ejemplo de un método iterativo de dos puntos ya que predice en el paso n+1 basado en la información obtenida en los pasos n, n-1. Note también que
(4.30)
de modo que el método de la secante se puede ver como una discretización del método de Newton.
El análisis de convergencia del método de la secante es un tanto más complicado que el del método de Newton y requiere del concepto de diferencias divididas las cuales se discuten en el Cápitulo 5. Usando propiedades de las diferencias dividas se puede demostrar que las iteraciones del método de la secante satisfacen:
(4.31)
donde esta entre xn-1, xn y y pertenece al intervalo minimo que contiene a xn-1, xn, a.Usando esta fórmula se puede demostrar el siguiente teorema.
Teorema (4.3) (Convergencia Local del Método de la Secante): Suponga que es una función C2 en una vecindad del número a para el cual . Entonces si x0, x1 se seleccionan suficientemente cerce de a, las iteraciones del Método de la Secante convergen a a. Además
(4.32)
donde .
Demostración (borrador): Vamos a suponer que las iteraciones convergen. Entonces de (4.31), para n suficientemente grande, podemos escribir
(4.33)
Multiplicando esta aproximación por M en ambos lados, definiendo , y convirtiendo la aproximación en una igualdad, obtenemos la relación:
(4.34)
donde por conveniencia hemos tomado F0=F1=1. La iteración (4.34) define los números de Fibonachi y es bien conocido que para n grande:
(4.35)
Asi que
(4.36)
donde usamos la notación . Ahora podemos escribir
(4.37)
lo cual nos da en forma asintótica la fórmula (4.32).
En la siguiente tabla resumimos las propiedades de los métodos de Newton y de la Secante:
Método |
Taza de convergencia |
Evaluaciones (función y/o derivada) |
Newton |
Dos |
1 para f; 1 para |
Secante |
1.62 |
1 para f |
Si es dificil o imposible de evaluar, entonces el método de la secante podría ser más conveniente que el de Newton. Muchas veces f esta dada por una tabla o programa de computadora lo que hace el calculo de imposible. Si es accesible y computacionalmete viable, entonces el método de Newton es preferible por su convergencia rápida. Note que en ambos métodos aproximamos la función original por una función lineal a la cual es fácil de calcular sus raices.
En ambos de los Teoremas (4.2) y (4.3) tenemos la condición que garantiza que la función f(x) corta el eje de "x" en en forma transversal. Cuando esta condición de transversalidad no se cumple en la raiz , entonces el método numérico puede diverger o si converge lo hace más lento que en el caso transversal. Vamos a estudiar esta situación en mas detalles en particular para el método de Newton.
Sea f una función, a un número real tal que , y m un entero positivo. Decimos que a es una raiz de f de multiplicidad m si existe una función g(x) tal que
(4.38)
Si m=1 decimos que la raiz a es simple. Tenemos ahora:
Teorema (4.4): Sea y . Entonces a es raiz de f de multiplidad m si y solo si
(4.39)
Demostración: Supongamos que (4.39) es cierta. Por el Teorema de Taylor tenemos que podemos escribir:
Como , esta entre a y x, y , tenemos que para x suficientemente cerca de a la función . Asi que con , la ecuación (4.38) se cumple, i.e., a es raiz de f de multiplicidad m.
Suponga que por el contrario, (4.38) es dado donde . Entonces usando la regla de Leibnitz obtenemos que
(4.40)
Si y , entonces y (4.40) implica que Si k=m, entonces (4.40) se puede escribir como
Note que al evaluar en los terminos en la sumatoria son todos cero ya que las potencias de son todas positivas. De modo que tenemos que . Combinando esto con lo anterior, obtenemos (4.39).
Ejemplo 2: Para f(x)=(x-2)3(x-1)2 tenemos que a =2 es raiz de f de multiplicidad 3 y que a =1 es raiz de multiplicidad 2. Para la función f(x)=sen(x) tenemos que a =0 es una raiz de f. Ademas con
tenemos que a =0 es raiz simple de f.
Cuando los métodos de Newton ó la Secante se utilizan en problemas con raices multiples, la convergencia si alguna se hace más lenta. Por ejemplo si consideramos el problema de buscar las raices de la ecuación x3=0 usando el método de Newton, entonces las iteraciones de Newton estan dadas por la recursión:
Como a =0 es la única solución en este caso, vemos que el método tiene convergencia lineal en este problema. En general se puede demostrar que si x=a es una raiz de multiplicidad m de la ecuación f(x)=0, entonces las iteraciones del método de Newton convergen localmente a la raiz x=a y satisfacen
(4.41)
i.e., la convergencia es lineal si m>1 con taza o razón de convergencia l . Note que si m>2, entonces l >1/2 y el método de la bisección es en general más rápido que el de Newton.
Otro problema con el cálculo de raices multiples es provocado por la aritmética finita de la computadora y el hecho de que la función f no cruza el eje de x transversalmente en x=a . Esto hace que el intervalo de incertidumbre para el cálculo de la raiz sea mucho mayor de lo que sería para una raiz simple.
¿Cómo podemos entonces calcular raices multiples en forma efectiva?
Si la multiplicidad m de la raiz es conocida, entonces podemos mejorar la
convergencia del método de Newton de dos formas:
(4.42)
Se puede demostrar (ver ) que con orden p=2. Pero el problema de la incertidumbre mencionado arriba, no mejora debido a que la raiz multiple de f esta todavia presente.
Para estimar m si este no es conocido, usamos el método de Newton aplicado a la función original f y vamos calculando los cocientes
(4.43)
los cuales de acuerdo a la fórmula (4.41) aproximan a . Usando esto podemos aproximar "m" y luego procedemos con uno de los métodos (1) ó (2) descritos arriba.
Consideramos ahora el problema de resolver un sistema de ecuaciones nolineales de n ecuaciones en n desconocidas. Sean funciones (nolineales) suficientemente diferenciables. Un sistema nolineal n´ n consiste de:
(4.44)
Si definimos por , entonces podemos escribir (4.44) en forma vectorial como:
(4.45)
Sea tal que , i.e., una solución de (4.45). Defina la siguiente matriz n´ n por
(4.46)
Suponga que es una aproximación de . Entonces usando el Teorema de Taylor para funciones de varias variables, podemos escribir
Definimos ahora la siguiente aproximación como la solución de
i.e.,
De esta forma continuamos obteniendo asi la versión para sistemas del Método de Newton dada por
(4.47)
Si es nosingular, y se toma suficientemente cerca de , entonces se puede demostrar que las iteraciones convergen a la raiz . Las iteraciones (4.47) se pueden rescribir para que no haya que calcular el inverso de una matriz. Esto se hace de la forma:
(4.48)
Ejemplo 3: Considere el problema de aproximar una solución del sistema:
Tenemos que
Estas dos expresiones las calculamos en MATLAB mediante las siguientes funciones:
function z=f(w)
z=zeros(2,1);
x=w(1);y=w(2);
z(1)=x^3-x*y^2+y^3;
z(2)=x*sin(x*y)+1;
function z=fp(w)
z=zeros(2,2);
x=w(1);y=w(2);
z(1,1)=3*x^2-y^2;
z(1,2)=-2*x*y+3*y^2;
z(2,1)=sin(x*y)+x*y*cos(x*y);
z(2,2)=x^2*cos(x*y);
Tomando como , tenemos el siguiente programa que implementa la recursión (4.48):
x0=[1,0]';
normx=1;
normz=1;
while normz > 1.0e-6*normx
f0=f(x0);
fp0=fp(x0);
z=-fp0\f0;
normz=norm(z,2);
normx=norm(x0,2);
x0=x0+z;
end
x0
con el cual obtenemos (1.1674,-0.8812) como una raiz aproximada del sistema.
Despúes de haber calculado la raiz mayor, use división sintética y calcúle las raices restantes.
Use el Método de Newton para calcular la raiz lo más preciso posible para los valores de B=1, 5, 10, 25, 50. Como punto inicial puede tomar entre otros x0=0. Explique cualquier diferencia en el comportamiento del método según aumenta el valor de B. Utilice la gráfica de para sustentar sus argumentos.
Escriba un algorítmo (en MATLAB) basado en el método de la bisección, que aproxime a 12 cifras significativas el valor de tal que la solución x de satisfaga . Puede suponer la existencia de una subrutina solve que dada una matriz C y un vector d, solve(C,d) devuelve como resultado la solución z de Cz=d.
Ayuda: La solución x de se puede ver como una función la cual al sustituirse en la ecuación produce la ecuación (nolineal) en :
.
Calcule una solución aproximada de este sistema usando el Método de Newton.
para la función desconocida z(s). Usando una regla de cuadratura apropiada para discretizar el integral en esta ecuación, obtenga un sistema de ecuaciones nolineales cuya solución es una aproximación de z(s). Resuelva el sistema resultante usando el Método de Newton.