Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 1
Con el nombre de ceros (o raíces) de una función f (x) designamos aquellos valores del argumento x
que satisfacen la ecuación
f (x) = 0 . (1.1)
En ocasiones, esta ecuación puede resolverse analíticamente, pero otras veces no, tal como se puede com-
probar con los ejemplos siguientes:1
x−sin x = 0 , x−cos x = 0 , x−e−x = 0 , k tan x−tanh x = 0 ,
k cos x+sech x = 0 .
(1.2)
En los casos en que no se puede resolver analíticamente la solución de una ecuación, hay que recurrir a
procedimientos numéricos para conocer una obtener aproximada (con la precisión deseada).
El objetivo de este tema es presentar métodos numéricos para calcular el valor (o valores) de x que
hacen que una función f (x) se anule. La Fig. 1.1 ilustra “artísticamente” este objetivo.
Figura 1.1: El objetivo de este tema está resumido, de forma artística, en la decoración de la fachada
de un taller de bicicletas en el casco antiguo de Atenas. Queda en el aire la pregunta de por qué se
escogió esta imagen para decorar un taller de bicicletas.
Nos restringiremos a buscar sólo los ceros reales de funciones que dependen de una sola variable (es
decir, problemas unidimensionales). Aunque los métodos que presentaremos son generales, para hallar
los ceros de polinomios es necesario tomar algunas precauciones para evitar la propagación peligrosa de
errores. En este tema no estudiaremos los métodos específicos para obtener los ceros de polinomios.
Resolver numéricamente la ecuación f (x) = 0 consiste en dar, dentro de unos límites de error determi-
nados, el valor (o valores) de x que satisface(n) dicha ecuación. Los pasos a seguir para obtener dicho(s)
valor(es) son los siguientes:
1o .- Se propone una estimación aproximada x0 para el valor de x que satisface la ecuación f (x) = 0;
el valor aproximado x0 se suele determinar mediante un método gráfico (Fig. 1.2).
1 Las dos últimas ecuaciones surgen cuando se analizan ciertos tipos de vibraciones.
33
34 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
2o .- Se mejora la estimación anterior del cero mediante un algoritmo iterativo, que proporcione el valor
xk a partir de valores anteriores (xk−1 ,...).
3o .- Se finaliza el proceso en la iteración k cuando se ha obtenido el cero buscado con una determinada
precisión :2
|xk − xk−1 | ≤ (criterio de error absoluto) , (1.3)
xk − xk−1
xk−1 ≤ (criterio de error relativo) . (1.4)
Figura 1.2: Representación esquemática de la obtención del cero de la función f (x). En el primer
paso (Izq.) se propone una solución x0 próxima al punto donde la función f (x) corta al eje X. En el
segundo paso (Der.) se obtiene la secuencia de valores aproximados x1 , x2 , . . . , xk , con la esperanza
de que converjan hacia la solución x̄.
Así pues, salvo excepciones, el procedimiento a seguir en la práctica será siempre el mismo: (1) Es-
coger el valor inicial x0 , (2) establecer la precisión (relativa o absoluta), (3) fijar el número máximo de
iteraciones a ejecutar, kmax , para que el cálculo dure un tiempo razonable, sin eternizarse, y (4) proponer el
algoritmo que se empleará en la resolución. Designaremos por k (| xk − xk−1 | o | xk − xk−1 | /xk−1 ) el
error (absoluto o relativo) en la iteración k.
Para simplificar la escritura, en las expresiones que siguen usaremos el error absoluto, aunque el criterio
del error absoluto o relativo lo decidirá el usuario, según el tipo de problema que esté resolviendo. En
muchas ocasiones conviene emplear un criterio de error relativo, en lugar del criterio de error absoluto;
pero si el denominador es muy próximo a cero, puede haber problemas.3
Antes de aplicar algún algoritmo para obtener los ceros de una función, hay que asegurarse de que
dicha función posee tales ceros. Por ejemplo, no hay ningún algoritmo que permita obtener los ceros de las
funciones f (x) = ex − x o f (x) = x2 + 1, porque no tienen cero reales, como se aprecia en la Fig. 1.3.
En las siguientes secciones se discuten algunos de los algoritmos más empleados para obtener los ceros
reales de una función.
En determinadas funciones, el método de sustitución repetida converge para algunos de sus ceros, pero
diverge para otros; también puede suceder que el algoritmo no converja al resultado correcto si se parte de
un valor inicial u otro. La Fig. 1.4 ilustra el cálculo de los ceros de la función f (x) = ex/2 /2 − x por el
método de sustitución repetida. A partir del valor xk se traza una recta vertical hasta la curva g(x), desde
la cual se traza una línea horizontal hasta la recta y = x. Esto proporciona el valor xk+1 . A partir de xk+1
se repite el proceso anterior (línea vertical hasta la curva g(x) y, desde allí, línea horizontal hasta la recta
y = x). Este procedimiento gráfico recuerda la forma de una escalera o de una espiral (tal como puede
verse en la Fig. 1.4 o en el ejercicio 1.1, respectivamente).
Figura 1.4: Al tratar de calcular los ceros de la función f (x) = ex/2 /2 − x por el método de
sustitución repetida, las iteraciones convergen hacia uno de los ceros (xA = 0.7148), mientras que
divergen cuando se intenta obtener el otro cero (xB = 4.3066). Para más detalles, se puede consultar
el ejercicio 1.2.
Los dos ceros de f (x) = ex/2 /2 − x son xA = 0.7148 y xB = 4.3066, pero el método de sustitución
repetida sólo proporciona el primer cero (cuando el valor x0 para iniciar el cálculo satisface −∞ < x0 <
xB ); pero si x0 > xB , las iteraciones divergen y no se puede obtener el segundo cero. Por lo tanto, el
método de sustitución repetida no es recomendable para la obtención de ceros de una función.
36 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
Las iteraciones de este método sólo convergen en determinadas circunstancias;4 en particular, la secuen-
cia de iteraciones convergerá si |g 0 (x)| < 1 en las proximidades del cero buscado. Esta condición equivale
a decir que la curva g(x) tiene menor pendiente que la recta x en las proximidades de la solución buscada,
lo cual asegura que xk+1 se encuentra más próximo al cero buscado que xk .
Si xk es alternativamente mayor y menor que el cero buscado, la iteración convergerá más rápidamente
si se hace el cambio5 xk+1 = (xk + xk+1 )/2, pero sólo cuando g 0 (x) < −1/3. Para mayores valores de
g 0 (x) el método explicado en el párrafo anterior converge más rápidamente que el que se acaba de comentar.
Sin embargo este segundo método garantiza la convergencia de las iteraciones si −3 < g 0 (x) < 1, es decir,
en un rango mayor de pendientes de g(x) que en el método precedente.
Figura 1.5: El método de bisección comienza el proceso iterativo a partir de dos valores xL y xR tales
que fL fR < 0. La iteración consiste en hallar un nuevo punto intermedio entre los dos anteriores,
que puede obtenerse como el punto medio (Izq.) xM = (xL + xR )/2, o como la posición falsa (Der.)
xFP = (xR fL − xL fR )/(fL − fR ), aunque este último procedimiento no lo usaremos porque es muy
parecido al método de la secante (las diferencias se discuten en Numerical recipes: §9.2).
En el método de bisección, propiamente dicho, la iteración se realiza tomando el punto medio del
4 J. M. Blair, Some practical aspects of finding the roots of equations using fixed-point iteration with a computer program, American
J. M. Blair, Some practical aspects of finding the roots of equations using fixed-point iteration with a computer program, American
Journal of Physics 60 (1990) 929.
6 Los subíndices L y R indican left (izquierda) y right (derecha), ya que los puntos x y x se hallan a la izquierda y a la derecha,
L R
respectivamente, de la solución buscada.
7 DeVries usa el método de “posición falsa” (regula falsi) para dar el punto intermedio o el punto final; este método es muy
parecido al de la secante (tal como se discute al hablar de este último método), aunque hay alguna sutil diferencia. Para una discusión
más detallada puede consultarse Numerical recipes: §9.2. De todos modos, nosotros no discutiremos el método de la posición falsa;
para más información sobre este método puede consultarse http://mathworld.wolfram.com/MethodofFalsePosition.html.
F ÍSICA COMPUTACIONAL , Ceros de una función 37
xR fL − xL fR
xFP = . (1.7)
fL − fR
Puede demostrarse esta relación mediante la semejanza de triángulos ilustrada en la Fig. 1.6:
fL −fR xR fL − xL fR
= ⇒ xFP = . (1.8)
xFP − xL xR − xL fL − fR
En el caso de funciones continuas, el método de bisección (o sus variantes) siempre converge hacia un
valor concreto cuando se parte de valores xL y xR entre los cuales hay un único cero.
Figura 1.6: Los dos triángulos de la figura son semejantes, por lo que coinciden los cocientes de sus
catetos respectivos. Nótese que el cateto vertical derecho tiene longitud −fR , puesto que fR < 0, de
acuerdo con la figura.
método de la tangente, pues extrapola la derivada local para hallar un valor estimado del cero, tal como se
ilustra en la Fig. 1.7.
Este método funciona bien si se puede aproximar la curva mediante una línea recta cerca del cero
buscado, es decir, si la función f (x) tiene un comportamiento lineal cerca del cero.
Si f 0 (xk ) es la pendiente de la curva f (x) en el punto xk , la ecuación de la recta que pasa por el punto
(xk , f (xk )) es
y = f (xk ) + f 0 (xk )(x − xk ) . (1.9)
El valor de x donde esta recta se cruza con el eje X se obtiene haciendo y = 0 en la ecuación anterior:
f (xk )
0 = f (xk ) + f 0 (xk )(x − xk ) ⇒ x = xk − . (1.10)
f 0 (xk )
Esta expresión conduce al siguiente proceso iterativo para calcular xk+1 a partir de xk :
fk
xk+1 = xk − . (1.11)
fk0
Si se parte de un valor inicial x0 , este método genera una secuencia de valores xk que convergen al cero
x̄ si se supone que f (x) es localmente lineal cerca de x̄.
Pueden surgir problemas cuando xk está cerca de un valor extremo (máximo o mínimo), donde f 0 (x) '
0, y también cuando se busca un cero múltiple, pues en este caso se cumple que f 0 (x) = 0.8 La Fig. 1.8
ilustra dos casos patológicos en los que el método de Newton-Raphson no converge. En el ejercicio 1.16
también aparecen patologías dependiendo del valor inicial que se emplee para buscar el cero.
Figura 1.8: Dos casos problemáticos para aplicar el método de Newton-Raphson: (Izq.) La secuencia
de puntos {xk } se encuentra un máximo (o mínimo) local, donde la tangente a la función es horizon-
tal, y busca el siguiente punto de la secuencia en el infinito [Numerical recipes: Fig. 9-4-2]. (Der.) La
secuencia de valores {xk } se mete en un bucle no convergente (cerrado) del cual no puede salir. Este
comportamiento se encuentra frecuentemente cuando la función f se obtiene, totalmente o en parte,
mediante interpolación a partir de datos de una tabla; podría haberse evitado esta situación si se parte
de un valor inicial mejor [Numerical recipes: Fig. 9-4-3].
Como vemos, el método de la secante equivale a aproximar la función f (x) mediante la secante que pasa
por la pareja de puntos (xk−1 , fk−1 ) y (xk , fk ). Para comenzar el proceso iterativo ahora es necesario partir
de dos valores iniciales: x0 y x1 .
El método de la secante es muy parecido al de la posición falsa.10 La única diferencia entre ambos
métodos es que el de la secante retiene la estimación más reciente de las previas (Fig. 1.9 Izq.; esto requiere
una elección arbitraria de la primera iteración), mientras que la posición falsa retiene la estimación previa
para la cual el valor de la función tiene signo opuesto al valor de la función en la mejor estimación actual
de la raíz, de manera que los dos puntos continúan acotando la raíz (Fig. 1.9 Der.). Matemáticamente, el
método de la secante converge más rápidamente cerca de una raíz de una función suficientemente continua.
El método de la posición falsa no converge tan rápidamente como el de la secante, pero es más certero.
Al igual que con el método de Newton-Raphson, puede suceder que el método de la secante no converja,
según la forma que tenga la función en la región donde se aplica.
Figura 1.9: (Izq.) En el método de la secante se determina el nuevo punto mediante la intersección
con el eje de abscisas de la recta (trazos discontinuos) que pasa por los dos puntos calculados más
recientemente [Numerical recipes: Fig. 9-2-1]. (Der.) En el método de la posición falsa se determina
el nuevo punto mediante la intersección con el eje de abscisas de la recta (trazos discontinuos) que
pasa por los puntos más recientes que acotan la raíz. En este ejemplo, el punto 1 permanece “activo”
durante muchos pasos [Numerical recipes: Fig. 9-2-2].
problemas porque los errores de redondeo del ordenador pueden asignar un valor f (x) → 0+ o f (x) → 0−
cuando en realidad no es así, y ante un cambio de signo en la función f (x) estaríamos tentados de localizar
un cero de la función.
Figura 1.10: Diversos casos en los que hay que tener especial cuidado a la hora de buscar ceros de
una función. (a) La función f tiene el mismo signo a ambos lados del cero. (b) Si hay dos ceros muy
próximos, la función no cambia de signo si se busca a la izquierda de x̄1 y a la derecha de x̄2 . (c)
La función no llega a anularse, pero su valor es muy próximo a cero. (d) Aquí hay una cero, pero
cuesta ver dónde se encuentra, pues la función difiere muy poco de cero a ambos lados del punto
donde se anula. [(a)-(d) Maron Fig. 2-1-4]. (e) Función patológica con muchos ceros muy próximos,
especialmente los del centro. (f) El cambio de signo de la función en los puntos a y b se debe a que
entre ellos hay una singularidad, no un cero. [(e)-(f) Numerical recipes: Fig. 9-1-1].
Figura 1.11: Ejemplo en el que tanto el método de la secante como el de la posición falsa ejecutarán
numerosas iteraciones antes de llegar al cero verdadero; esta función también presentará dificultades
para otros métodos de hallar ceros de funciones [Numerical recipes: Fig.9-2-3].
se dice que la convergencia de la sucesión es de orden m y que C es el error asintótico constante. Para
m = 1, 2 y 3, la convergencia es lineal, cuadrática y cúbica, respectivamente.
Puede encontrarse una discusión detallada sobre el orden de convergencia en [Vázquez et al.: §2.5].
Sustitución repetida
En el caso de que el algoritmo converja, la convergencia es lineal:
k+1 ∼ Ck .
Bisección
La precisión con que se determina un cero viene dada por la diferencia entre los valores de x entre los
cuales se acota la solución: k = |xR − xL |. Tras cada iteración, los límites de la región entre los que está
el cero decrecen en un factor 2. Así pues, la convergencia de este método es lineal, ya que si el error en el
paso k vale k , el error en el paso k + 1 vale11
1
k+1 = k .
2
Newton-Raphson
Supongamos que xk es un valor (muy) próximo al verdadero cero x̄ de la función f (x). El error en la
iteración k es k = x̄ − xk .
Si cambiamos de signo la ec. (1.11) y le sumamos x̄ en ambos términos, podemos escribir
f (xk )
k+1 = k + . (1.16)
f 0 (xk )
Tras desarrollar la función f (x) en serie de Taylor, para el punto xk que está muy próximo a x podemos
escribir:
(x̄ − xk )2 00 2
f (x̄) = f (xk ) + (x̄ − xk )f 0 (xk ) + f (xk ) + ... = f (xk ) + k f 0 (xk ) + k f 00 (xk ) + ... (1.17)
2! 2!
11 [DeVries: final p.50 y principio p.51; Numerical recipes: p.346]
42 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
Si retenemos los tres primeros términos en la ec. (1.17) y tenemos en cuenta que f (x̄) = 0, obtenemos
la siguiente expresión para f (xk ):
2k 00
f (xk ) = −k f 0 (xk ) − f (xk ) . (1.18)
2
Tras sustituir esta expresión en la ec. (1.16), tenemos
2
−k f 0 (xk ) − 2k f 00 (xk ) 2 f 00 (xk )
k+1 = k + 0
=− k 0 . (1.19)
f (xk ) 2f (xk )
Si f 00 /f 0 es aproximadamente constante cerca del cero, entonces en cada paso el error es proporcional al
cuadrado del error en el paso previo:
k+1 = C2k .
Esta forma en la que evoluciona el error se denomina convergencia cuadrática: en cada iteración se duplica
el número de cifras significativas que son exactas.12
Método de la secante
El método de la secante converge más rápidamente que el de bisección pero más lentamente que el de
Newton-Raphson.
√ Puede demostrarse13 que el orden de convergencia del método de la secante es la razón
áurea (1 + 5)/2 = 1.618:
k+1 = C1.618
k . (1.20)
~2 d2 ψ(x)
− + V (x)ψ(x) = Eψ(x) . (1.21)
2m dx2
Ésta es una ecuación de valores propios, ya que la función de onda ψ sólo tiene soluciones para determina-
dos valores de la energía E.
12 Aunque es posible que el método no converja si el error inicial es demasiado grande, o si f 0 ' 0 en las proximidades de un cero
(lo cual puede suceder).
13 Numerical Recipes: p. 349; F. S. Acton, Numerical Methods that Work, Part I: pp. 54-55.
14 Este problema se discute típicamente en un curso de mecánica cuántica y puede encontrarse resuelto en los siguientes textos: S.
Gasiorowicz, Quantum Physics, 3rd ed. (Wiley, 2003): §4-5; Constantinescu-Magyari, Problems in Quantum Mechanics: # II.9; G. L.
Squires, Problems in Quantum Mechanics: # 3.3.
F ÍSICA COMPUTACIONAL , Ceros de una función 43
Figura 1.12: Evolución del error en iteraciones sucesivas, k+1 vs. k , cuando se obtienen los ceros
de la ecuación f (x) = x2 /4 − sin(x) por el método de sustitución repetida, bisección, Newton-
Raphson y secante. El error converge como: k+1 ∝ k (sustitución repetida), k+1 ∝ k (bisección)
k+1 ∝ 2k (Newton-Raphson) y k+1 ∝ 1.6 k (secante) [vid. ejercicio 1.9].
En la figura 1.13 aparece representado este potencial y las tres regiones en las que lo dividimos para su
estudio.
Figura 1.13: Pozo de potencial cuadrado, de profundidad V0 y anchura 2a. Para facilitar su estudio
lo dividimos en tres regiones: 1, 2 y 3.
La energía E de los estados ligados de la partícula será negativa (−V0 < E < 0). Por ello,pen lo que sigue
escribiremos
p E = −E, con E > 0. Para simplificar la escritura usaremos la notación α = 2mE/}2 > 0
y β = 2m(V0 − E)/}2 > 0. En las tres regiones del pozo de potencial representadas en la figura 1.13,
la ecuación de Schrödinger y la correspondiente función de onda son:
44 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
d2 ψ1 (x) 2m
− 2 Eψ1 (x) = 0 , ψ1 (x) = Aeαx + Be−αx . (1.23)
dx2 }
Región 2 (−a ≤ x ≤ a):
d2 ψ2 (x) 2m
+ 2 (V0 − E)ψ2 (x) = 0 , ψ2 (x) = C sin(βx) + D cos(βx) . (1.24)
dx2 }
Región 3 (x > a):
d2 ψ3 (x) 2m
− 2 Eψ3 (x) = 0 , ψ3 (x) = F eαx + Ge−αx . (1.25)
dx2 }
Las condiciones de contorno imponen que la función de onda sea nula en x → ±∞, por lo tanto
B = F = 0. Aunque las regiones 1 y 3 están prohibidas clásicamente, en mecánica cuántica hay una
probabilidad no nula de que la partícula se encuentre en ellas. La densidad de probabilidad viene dada por
el módulo al cuadrado de la función de onda y disminuye exponencialmente al alejarse del pozo: |ψ1 |2 =
ψ1∗ ψ1 = A2 e2αx y |ψ3 |2 = ψ3∗ ψ3 = G2 e−2αx .
Si el potencial es simétrico (es decir, tiene paridad par) y la energía no es degenerada, las soluciones
de la ecuación de Schrödinger pueden clasificarse en pares e impares.15 De acuerdo con las ecs. (1.23) –
(1.25), las soluciones pares tienen C = 0 y A = G, mientras que para las soluciones impares D = 0 y
A = −G.
Se pueden obtener los valores propios de la energía, así como las constantes A, C y D, al imponer
la continuidad de la función de onda y de su derivada en la frontera entre las regiones del potencial. La
continuidad de ψ en x = −a permite obtener la relación entre las constantes:
Figura 1.14: Solución gráfica para las energías de los estados ligados del pozo de potencial cuadrado,
ecs. (1.31) y (1.33), correspondientes al caso en que V0 = 10 eV y a = 3 Å. Por comodidad, se ha
trabajado en unidades atómicas, de manera que los datos del pozo de potencial en unidades atómicas
son V0 = 10 eV = 10/27.2 a.u. = 0.3676 a.u. y a = 3 = 3/0.529 a.u. = 5.671 a.u. En la
izquierda se han representado las curvas f (E) = 0 correspondientes a las ecs. (1.31) y (1.33). En el
centro y en la derecha se han representado las intersecciones de las funciones que aparecen a ambos
lados de las igualdades de las ecs. (1.31) y (1.33), respectivamente. Los subíndices de las energías Ei
indican el orden tradicional de los niveles energéticos, contados desde el fondo del pozo de potencial.
La figura 1.14 muestra la solución gráfica de las ecs. (1.31) y (1.33) en términos de la energía. Tras
aplicar el método de bisección, obtenemos las energías para los estados ligados del pozo cuadrado con
V0 = 10 eV y a = 3 Å que aparecen en la tabla 1.1, cuyas funciones de onda se representan en la figura
1.15. Tan sólo hay cuatro estados ligados; el más ligado corresponde al índice n = 1. Nótese que el último
estado ligado está casi a ras del borde del pozo de potencial, es decir, está muy poco ligado.19
19 Como es tradición en física cuántica, los estados ligados se ordenan desde menor hasta mayor energía (en este caso, desde el
Figura 1.15: Funciones de onda de los estados ligados en el pozo cuadrado de profundidad V0 = 10
eV y semianchura a = 3 Å.
Tabla 1.1: Energías de los estados ligados en un pozo cuadrado de profundidad V0 = 10 eV y semianchura a = 3 Å.
n (orden y paridad del estado ligado) En (a.u.) En (eV)
1 (par) −0.3414 −9.285
2 (impar) −0.2640 −7.181
3 (par) −0.1418 −3.856
4 (impar) −0.005025 −0.1367
Bibliografía
J. M. Blair, Some practical aspects of finding the roots of equations using fixed-point iteration with a
computer program, American Journal of Physics 60 (1992) 929.
G. J. Borse, Programación en FORTRAN77, con aplicaciones de cálculo numérico en ciencias e inge-
niería (Anaya, Madrid, 1989). Secc. 4.1, Cap. 11.
P. DeVries, A First Course in Computational Physics (Wiley, New York, 1994). Cap. 2.
A. L. Garcia, Numerical methods for physics, 2nd ed. (Prentice-Hall, Upper Saddle River, NJ, 2000)
Secc. 4.3.
R. Guardiola, E. Higón y J. Ros, Mètodes numèrics per a la física (Universitat de València, Valencia,
1995). Cap. 2.
S. E. Koonin y D. C. Meredith, Computational Physics. Fortran version (Addison-Wesley, Redwood
City, CA, 1990). Secc. 1.3.
W. H. Press, S. A. Teukolsky, W. T. Vetterling y B. P. Flannery, Numerical Recipes, in Fortran. The Art
of Scientific Computing, 2a ed. (Cambridge University Press, Cambridge, 1992). Cap. 9.
L. Vázquez, S. Jiménez, C. Aguirre y P. J. Pascual, Métodos numéricos para la Física y la Ingeniería
(McGraw-Hill, Madrid, 2009). Cap. 2
F ÍSICA COMPUTACIONAL , Ceros de una función 47
Método de bisección
Dados dos puntos xL y xR tales que f (xL )f (xR ) < 0, se obtiene un nuevo punto xM ∈ [xL , xR ] que
bisecta el intervalo inicial:
xL + xR
xM = .
2
Si f (xL )f (xM ) < 0 se repite el proceso anterior tomando ahora xR = xM ; si f (xL )f (xM ) > 0 se
repite el proceso anterior tomando ahora xL = xM .
Convergencia: k+1 ∼ Ck (0 < C < 1).
Método de Newton-Raphson
f (xk )
xk+1 = xk −
f 0 (xk )
Método de la secante
xk − xk−1
xk+1 = xk − f (xk )
f (xk ) − f (xk−1 )
El método de bisección garantiza que se obtiene el cero buscado si está bien acotado mediante los dos
valores iniciales para comenzar la iteración.
Los métodos de Newton-Raphson y de la secantefvalor va pueden conducir a un cero que no es el que
se busca, dependiendo del valor inicial con el que se inicia la iteración.
48 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
Ejercicios resueltos
1.1 Calcula los ceros de la función
f (x) = cos x − x
mediante los siguientes métodos: (a) sustitución repetida, (b) bisección, (c) Newton-Raphson y (d) secante.
Compara el número de iteraciones que necesita cada método para alcanzar la misma precisión en el
resultado, si se parte de un valor inicial común.
La figura adjunta muestra que la función f (x) = cos x − x tiene solo un cero, que vale x ' 0.7.
En todos los casos trabajaremos con una precisión de 10−3 en el error absoluto y partiremos de valores
iniciales de x que se hallen a la misma distancia, aproximadamente, del cero buscado.
Método de sustitución repetida. Al aplicar el método de sustitución repetida, la solución evoluciona
como se muestra en la figura adjunta.
En todos los casos la solución converge al valor x = 0.739. Puede comprobarse que el método más
eficiente es el de Newton-Raphson, seguido por el de la secante y, luego, por el de bisección. El método de
sustitución repetida es el menos eficiente.
Según se observa en la figura adjunta, la función f (x) = 12 ex/2 − x tiene dos ceros, pues las curvas
y = x e y = 12 ex/2 se cortan en dos puntos: x1 ' 0.71 y x2 ' 4.3.
50 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
Sustitución repetida. Mediante el método de sustitución repetida sólo podemos encontrar el cero x1 =
0.714806. El otro cero no lo podemos hallar por este método.
Si comenzamos por cualquier punto a la izquierda del segundo cero (x2 ) siempre se converge a la
solución x1 = 0.7148. En cambio, si comenzamos por cualquier punto a la derecha del segundo cero, cada
vez nos alejamos más del mismo.
A continuación se muestra cómo evoluciona la secuencia de valores que devuelve el programa 1-02SustRep-rgm.f,
cuando se comienza la búsqueda del cero desde la izquierda o la derecha del punto x2 . Aunque en el se-
gundo caso se indica que se alcanzó la precisión deseada, esto no es cierto, pues la secuencia de valores
diverge. Pero como los valores consecutivos tan elevados son idénticos (para la precisión con la que trabaja
el programa), se indica que se alcanzó la precisión, ya que difieren en menos de la precisión deseada. De
todos modos, al escribir +Infinity para el valor está indicando que no se ha alcanzado la convergencia.
1 1-02SustRep-Izq-rgm.dat
2 x0= 1.5000000 tol= 1.00000005E-03
3 1 1.0585001
4 2 0.84882933
5 3 0.76434767
6 4 0.73273343
7 5 0.72124207
8 6 0.71710992
9 7 0.71562982
10 8 0.71510047
11 num.iter.= 8 x= 0.71510047
12 se alcanzo la precision deseada
1 1-02SustRep-Der-rgm.dat
2 x0= 9.1999998 tol= 1.00000005E-03
3 1 49.742153
4 2 3.16476396E+10
5 3 +Infinity
6 4 +Infinity
7 num.iter.= 4 x= +Infinity
8 se alcanzo la precision deseada
1.9 Emplea los métodos de sustitución repetida, bisección, Newton-Raphson y secante, para calcular
el primer cero positivo de la función f (x) = x2 /4 − sin x, con un error menor que 0.001. A partir de los
resultados que obtienes en función del número de iteraciones, ¿cuál es el orden de convergencia de cada
uno de los métodos que has empleado?
Mediante la figura adjunta determinamos la localización aproximada de los ceros. Además del valor
x = 0 (que es un cero trivial), el cero que hemos de buscar está comprendido entre 1 y 3.
Para resolver el ejercicio se han empleado los siguientes programas: 1-09SustRep-rgm.f, 1-09bisecc-rgm.dat,
1-09Newton-rgm.f y 1-09secante-rgm.f, cuyas nombres identifican el método que se ha utili-
zado en cada caso. En la siguiente tabla aparecen los valores que se obtienen para el cero buscado mediante
los diferentes métodos, junto con los valores utilizados para comenzar el proceso iterativo en cada caso. Por
comodidad, se ha utilizado el criterio de error absoluto para detener el proceso iterativo.
F ÍSICA COMPUTACIONAL , Ceros de una función 51
Las cuatro figuras adjuntas muestran la evolución del error k+1 = Cm k cuando se obtienen los ceros
de la función f (x) = x2 /4 − sin x por los métodos de sustitución repetida, bisección, Newton-Raphson y
secante. Al representar log k+1 vs. log k se observa un comportamiento lineal. La pendiente de la recta
que se obtiene tras ajustar por mínimos cuadrados da el orden de convergencia de cada método.
La tabla adjunta muestra la pendiente en cada caso, que toma los siguientes valores: m = 1 (sustitución
repetida), m = 1 (bisección), m = 1.96 ' 2 (Newton-Raphson) y m = 1.57 ' 1.6 (secante). En el caso
del método de bisección puede comprobarse que k+1 = 0.5k , ya que del ajuste lineal de log k+1 =
log C + m log k se obtiene que log C = −0.30, lo cual implica que C = 10−0.30 = 0.5.
1.15 Cuando una onda, cuya longitud de onda es λ, pasa a través de una rendija de anchura b, la
intensidad de la onda difractada depende del ángulo θ respecto de la dirección de incidencia. Mediante la
aproximación de Fraunhofer, los máximos de la intensidad vienen dados por la siguiente ecuación trascen-
dente
tan z = z ,
52 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
λ
sin θ = (2n + 1) ,
2b
la cual funciona tanto mejor cuanto mayor es el valor de n.
Los máximos en la intensidad de una onda de longitud de onda λ que pasa a través de una rendija de
anchura b se obtienen a partir de la siguiente expresión (en la aproximación de Fraunhofer):
tan z = z ,
Debido a la simetría del problema sólo buscaremos los valores de z positivos, a partir de los cuales se
pueden obtener los ángulos θ en los que hay un máximo de la intensidad.
Para evitar problemas con la función tangente (que presenta divergencias cerca de múltiplos impares de
π/2 y, por tanto, varía muy rápidamente cerca de esos puntos), reescribimos la ecuación tan z − z = 0 en
la forma equivalente sin z = z cos z y buscamos los ceros de la función f (z) = sin z − z cos z. Puede verse
en la figura adjunta la localización aproximada de los ceros (Izq.: mediante la intersección entre f (z) = z
y g(z) = tan z; Der.: mediante la intersección de f (z) = sin z − z cos z con el eje de abscisas).
Empleamos el método de bisección (1-15bisecc-rgm.f). Como z = (πb/λ) sin θ ⇒ z ≤ πb/λ,
la búsqueda de ceros finalizará cuando se cumpla que z > πb/λ. La siguiente tabla muestra los resultados
obtenidos para el caso en que λ/b = 0.1, así como los que da la expresión aproximada z = (2n + 1)π/2, .
Una vez conocidos los valores de z, se calcula sin θ = zλ/(πb) y se compara con los resultados obtenidos
a partir de la aproximación sin θaprox = (2n + 1)λ/(2b).
Como puede comprobarse, la diferencia entre los resultados aproximados y los exactos disminuye a
medida que aumenta el orden n de la difracción.
F ÍSICA COMPUTACIONAL , Ceros de una función 53
1.16 Calcula los ceros de la función f (x) = e−x − cos x mediante los métodos siguientes: (a) sustitu-
ción repetida, (b) bisección, (c) Newton-Raphson y (d) secante.
La gráfica adjunta muestra la localización aproximada de los primeros ceros de la función f (x) =
e−x − cos x, cuyos valores son 0 (solución trivial), ∼ 1.3 y ∼ 4.7.
(a) Sustitución repetida. Una posibilidad para despejar es x = − ln(cos x). Este procedimiento falla
porque cos x puede tomar valores negativos, y la función ln no está definida para valores negativos del
argumento. De hecho, sólo se obtiene la solución (trivial) x = 0, si se parte de valores de x0 que están a la
izquierda del primer cero no trivial: x0 < 1.2927.
La otra posibilidad para despejar es x = arc cos(e−x ). Este procedimiento no presenta problemas en lo
que se refiere a los valores del argumento de la función arc cos, pues 0 < e−x ≤ 1. Pero siempre converge
al valor del primer cero, x = 1.2927, independientemente del valor inicial x0 , pues la función arc cos nunca
puede proporcionar un valor que sea mayor que π/2 ' 1.57, por lo que nunca se obtendrá el segundo cero,
x = 4.7213. Puede realizarse una representación gráfica de la intersección entre la recta y = x y la curva
y = arc cos e−x , para comprobar cómo evoluciona la solución.
(b) Bisección. Si se trabaja con una tolerancia de 10−4 obtenemos los siguientes resultados mediante el
programa 1-16bisecc-rgm.f:
Si se parte de los valores iniciales [1.0, 3.0], con 15 iteraciones se obtiene x = 1.292664.
Si se parte de los valores iniciales [4.0, 6.0], con 15 iteraciones se obtiene x = 4.721252.
(c) Newton-Raphson. Si se trabaja con una tolerancia de 10−4 , el programa 1-16Newton-rgm.f
proporciona los siguientes resultados:
Si se parte de x0 = 1.0, con 4 iteraciones se obtiene x = 1.292696.
Si se parte de x0 = 1.5, con 3 iteraciones se obtiene x = 1.292696.
Si se parte de x0 = 4.0, con 4 iteraciones se obtiene x = 4.721293.
Hay que tener cuidado al aplicar el método de Newton-Raphson para buscar los ceros de esta función,
pues puede suceder que alguno de los puntos x0 , x1 , x2 , . . . , xk , . . . conduzca a una pendiente de la función
54 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
tal que el siguiente punto, xk+1 , se aleje mucho de la serie a la que debería converger; esto sucede cerca de
los puntos xk para los cuales la función f (x) tiene poca pendiente (por ejemplo, cerca de los máximos y
los mínimos). En el peor de los casos, la pendiente de la curva es nula (en un máximo o un mínimo) y la
tangente no interseca nunca al eje de las x, por lo que el método de Newton-Raphson no se puede aplicar.
A continuación aparecen algunos ejemplos en los que este método no funciona correctamente.
Si se parte de x0 = 6.0, con 6 iteraciones se obtiene x = −6.3058 × 10−15 ' 0 (dentro de la precisión
requerida). Cerca de x = 6 la pendiente de la función es casi horizontal, de manera que la intersección con
el eje x tiene lugar muy lejos del cero que esperaríamos encontrar, que sería 4.7213 (el más próximo a 6).
(d) Secante. Si se trabaja con una tolerancia de 10−4 , el programa 1-16secante-rgm.f) propor-
ciona los resultados:
Si se parte de x0 = 1.0 y x1 = 3.0, con 4 iteraciones se obtiene x = 1.292696.
Si se parte de x0 = 4.0 y x1 = 6.0, con 4 iteraciones se obtiene x = 4.721293.
Si se parte de x0 = 4.0 y x1 = 7.0, con 9 iteraciones se obtiene x = 4.721293.
Veamos, seguidamente, algunos ejemplos en los que el método de la secante no funciona correctamente.
Si se parte de x0 = 6.0 y x1 = 7.0, con 8 iteraciones se obtiene x = 10.99559. En este caso hubiéramos
esperado obtener el valor x . 8, pero la secante a la curva que pasa por los puntos obtenidos en las
iteraciones conduce a un cero que está más alejado del que esperaríamos obtener.
Si se parte de x0 = 2.0 y x1 = 3.0, con 7 iteraciones se obtiene x = 1.292696. Si se parte de x0 = 3.0
y x1 = 4.0, con 6 iteraciones se obtiene x = 4.721293. En estos dos casos, una variación en los valores
iniciales que no es especialmente importante conduce a dos ceros diferentes.
La explicación de este comportamiento es análoga a la que se ha dado en el caso anterior (método de
Newton-Raphson) cuando las evaluaciones se realizan en puntos que dan lugar a secantes que hacen que la
serie de valores xk se aleje del cero próximo a la región donde comienza la iteración.
1.32 Calcula con una precisión de 10−3 los ceros del polinomio
El comportamiento asintótico del polinomio es f (x → ±∞) → ±∞, por lo tanto está garantizado que
los ceros reales del polinomio están contenidos en la porción de la función f (x) que se representa en la
figura adjunta.
Los dos ceros que se observan son x1 ' −0.5 y x2 ' 2.5. Para calcularlos con mayor precisión
emplearemos alguno de los métodos numéricos estudiados en este tema. El cero x1 es doble, mientras que
el cero x2 es sencillo. En este ejercicio no empleamos ningún método para desinflar polinomios.20
20 Se denomina desinflado de un polinomio P (x) al procedimiento para calcular varios o todos sus ceros x factorizando el poli-
k
nomio en la forma P (x) = (x − xk )Q(x) a medida que se van obteniendo los ceros xk . Procediendo de este modo se calculan los
F ÍSICA COMPUTACIONAL , Ceros de una función 55
La función f (x) no cambia de signo alrededor de x1 , por lo tanto sólo podemos usar el método de
bisección para calcular el cero x2 . Si se parte de los valores iniciales xL = 2.0 y xR = 3.0, con el programa
1-32r8-bisecc-rgm.f se obtiene el resultado x2 = 2.50098 (tras 11 iteraciones).
Mediante el método de Newton-Raphson (1-32r8-Newton-rgm.f), cuando se parte de los valo-
res iniciales x0,1 = −1.0 y x0,2 = 3.0 se obtienen los siguientes resultados: x1 = −0.50084 (tras 10
iteraciones) y x2 = 2.50000 tras 5 iteraciones.
ceros del nuevo polinomio Q(x), que es de un grado menor que el original. Así, el esfuerzo de hallar ceros adicionales disminuye,
pues a medida que vamos hallando más ceros se trabaja cada vez con polinomios de menor grado. Además, y más importante, con el
desinflado se puede evitar que el método iterativo propuesto converja por dos veces al mismo cero (no siendo éste múltiple), en lugar
de converger por separado a dos ceros diferentes.