Sie sind auf Seite 1von 104

APUNTES

DE
MÉTODOS COMPUTACIONALES

J OSÉ A GUSTÍN G ARCÍA


Departamento de Física
1 abril 2017

1
ii
Índice general

1. Errores y sus causas en los métodos numéricos 3


1.1. Errores y sus fuentes en los métodos computacionales . . . . . . . . . . . . . . . . . . . . 3
1.2. Representación binaria de los números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1. Número enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2. Números decimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. Redondeo de los números binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Teorema de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2. Raíces de ecuaciones 17
2.1. introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Métodos de localización de raíces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1. El método de la bisección (de Bolzano) . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2. Criterio de convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3. Método de la falsa posición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.1. Criterio de convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4. El método Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4.1. Velocidad de convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.2. Criterio de convergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5. El método de la secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3. Solución de sistemas lineales 29


3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2. Método de eliminación gaussiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.1. El problema del pivote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.2. Esquema de cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3. La descomposición LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4. Determinante de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5. Inversa de una Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.6. Matrices tridiagonales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.7. Métodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7.1. Método de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.7.2. Método de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
iv ÍNDICE GENERAL

3.7.3. El método de sobre-relajación sucesiva (SOR) . . . . . . . . . . . . . . . . . . . . . 43


3.8. Condición de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.9. Apendice: Permutaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.9.1. Inversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.9.2. Transposición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4. Interpolación 47
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2. Interpolación por funciones polinómicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2.1. Algunas propiedades de los polinomios . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3. Métodos de aproximación polinómica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.1. Solución directa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.2. Polinomios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.3. Polinomios de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.4. Splines o cerchas cúbicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5. Derivación e Integración numéricas 59


5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2. Derivación numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.1. Derivadas de orden superior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3. El método de extrapolacion de Richardson . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.4. Integración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4.2. El método de los coeficientes indeterminados . . . . . . . . . . . . . . . . . . . . . 66
5.4.3. Fórmulas Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4.4. Método del trapecio. Algoritmo iterativo . . . . . . . . . . . . . . . . . . . . . . . . 70
5.4.5. Regla recursiva de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4.6. La fórmula de Euler-Maclaurin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4.7. Integración por extrapolación. El método de Romberg . . . . . . . . . . . . . . . . 73
5.4.8. El método de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6. Integración de ecuaciones diferenciales 79


6.1. Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.1. Algunos ejemplos de ecuaciones diferenciales . . . . . . . . . . . . . . . . . . . . . 80
6.2. Existencia y unicidad de la solución de las ecuaciones diferenciales de primer orden . . 83
6.3. Solución numéricas de las ecuaciones diferenciales . . . . . . . . . . . . . . . . . . . . . . 84
6.3.1. El método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.4. Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.5. Consistencia, orden, estabilidad y convergencia . . . . . . . . . . . . . . . . . . . . . . . . 91
6.6. El método de Euler modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.7. Métodos Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.7.1. El método Runge-Kutta de 4º orden . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
ÍNDICE GENERAL v

6.8. Solución de sistemas de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98


Quiero agradecer a mi compañera del Departamento de Matemáticas María Luisa Soriano la re-
visión realizada de esas notas. Si todavía se encuentra algún error es debido por completo al autor
2 ÍNDICE GENERAL
Capítulo 1

Errores y sus causas en los métodos


numéricos

1.1. Errores y sus fuentes en los métodos computacionales

Cuando a uno de nosotros se nos pide que calculemos la longitud de una circunferencia de radio
r , rápidamente nos podemos a tratar de evaluar la expresión L = 2πr y suponemos a priori que pode-
mos calcular su valor de forma exacta. Sin embargo a la hora de hacer el calculo real nos topamos con
que tenemos que poner valor a los diferentes elementos que aparecen en el calculo. Vamos a suponer
que el radio r está dado de antemano, esto es, queremos evaluar la longitud de una circunferencia
de 1 metro de radio, en este caso r = 1 sin ningún tipo de aproximación, si embargo cuando vamos a
poner el número π aparecen los problemas. En el colegio nos enseñaron que π tiene el valor 3,1416,
pero esto no es mas que un valor aproximado. Al estudiar el bachillerato nos enseñaron que el núme-
ro π es un número real, con infinitas cifras decimales que no es posible de poner como división de
dos números enteros. Así pues a la hora de calcular π con nuestro bolígrafo tenemos que tomar un
número π aproximado. Esto también sucede cuando utilizamos una calculadora de bolsillo o el me-
jor ordenador de la NASA. Para almacenar en memoria del ordenador un número necesitamos una
cierta cantidad de bits finito, dado por la arquitectura de la maquina, y por tanto tenemos que ’trun-
car’ el número de alguna manera. Así pues la necesidad de usar un número finito de bits (unidad de
información básica) para representar los números hace que cometamos un cierto error, es el llamado
error de redondeo. Cuando queramos trabajar con este número truncado vamos inexorablemente a
propagar el error en los cálculos posteriores, por lo que debemos de esperar que la solución encon-
trada mediante un ordenador tenga errores de calculo, independientemente de que nuestro código
4 Capítulo – 1. Errores y sus causas en los métodos numéricos

sea perfecto.

En matemáticas surgen una serie de operaciones que requieren del paso al límite, así por ejemplo
la derivada de una función f (x) se define como el límite

f (x + ∆x) − f (x)
f 0 (x) = lı́m
∆x→0 ∆x

Sin embargo cuando vamos a evaluar la anterior expresión con un ordenador, dada que la represen-
tación de un número usa una cantidad de memoria finita, podemos dar ∆x con un número finito de
decimales lo que significa que ∆x no puede hacerse tan pequeño como queramos, por lo que tenemos
que truncar el cálculo de la derivada. Lo mismo sucede por ejemplo a la hora de evaluar una integral,
sustituimos el valor de la integral por un valor aproximado dado por una suma finita de valores. El
error cometido en estas situaciones recibe el nombre de error de truncamiento

Otro error importante que debemos de considerar es el error asociado a los datos iniciales. Cuan-
do nos hemos puesto a calcular la longitud de la circunferencia, hemos supuesto que r = 1m. Sin
embargo si este valor lo tenemos que medir con una regla, es seguro que cometemos un cierto error
en su medida, por lo que los cálculos realizados a posteriori arrastrarán este error. Es el llamado error
de los valores iniciales

Hemos comentado antes que a la hora de representar los números en un ordenador se va a co-
meter un cierto error, veamos como se van a representar los números con un ordenador para que
podamos al menos acotar el error cometido en la representación de un número.

1.2. Representación binaria de los números

La representación más usual de los números en el interior de los ordenadores es el formato bi-
nario donde los números se expresan como potencias de 2 en de potencias de 10 que es la forma
empleada en el nuestra vida cotidiana. Vamos a distinguir si los números son enteros o reales. Esto es
muy importante en los lenguajes de programación pues no se representa de la misma manera el nú-
mero 4 que el número 4., el primero sin punto decimal y el segundo con un punto decimal. El primero
es un número entero, el segundo es decimal. Para que un ordenador calcule 4+4. necesariamente ha
de convertir el número decimal a entero o al revés, por que se necesita que estén representados de la
misma manera antes de poder sumarlos
1.2 Representación binaria de los números 5

1.2.1. Número enteros

Como es bien conocido los números en un ordenador se guardan en formato binario en vez de
formato decimal que usamos en nuestra vida diaria. Veamos la manera en la que se representan los
números en formato decimal para ver como se pueden representar en formato binario. Considerar el
número 1234, este número lo podemos poner como

1234 = 1 ∗ 103 + 2 ∗ 102 + 3 ∗ 101 + 4 ∗ 100

Esto es, lo expresamos como suma de potencias de 10. Si queremos representarlo en binario tendre-
mos que usar potencias de 2, así tenemos

1234 = 1024 + 128 + 64 + 16 + 2 = 1 · 210 + 1 · 27 + 1 · 26 + 1 · 24 + 1 · 21 =

= 1 · 210 + 0 · 29 + 0 · 28 + 1 · 27 + 1 · 26 + 0 · 25 + 1 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 0 · 20 = 10011010010

necesitamos pues 11 bits de información para poder expresar el número 1234 en formato binario.
Recordar que la cantidad elemental de información en un ordenador recibe el nombre de bit. Corres-
ponde a un 1 ó 0 de los números binarios. 8 bits constituyen 1 byte. La unidad usual de medida es un
byte. Así por ejemplo cuando decimos que un archivo ocupa 10 Mb, se refiere normalmente a que el
archivo ocupa 10 megabytes. O bien, si nos compramos un ordenador de 4Gb (gigas) normalmente
nos referimos a que tiene 4 gigabytes (4 000 millones de bytes ≈ 40 000 millones de bits !!) 1 . En prin-
cipio podemos usar toda la memoria de un ordenador para almacenar un único número, el problema
surge entonces que pasa si tenemos que sumar dos números y queremos almacenar el resultado, jun-
to con los sumandos. Pues que no podríamos hacerlo. Por otra parte el cerebro del ordenador, esto es
el llamado procesador, solo es capaz de manejar una cantidad pequeña de bits a la vez. Los procesa-
dores actuales manejan 64 bits de información, aunque todavía hay en el mercado una gran cantidad
de ordenadores que manejan 32 bits. Vamos a suponer por ahora que nuestro ordenador es de 32 bits.
Esto significa que vamos a usar como mucho esta cantidad de información para almacenar tanto
un número entero como un número decimal, esto es importante tenerlo en cuenta, por eso se ha
resaltado en negrita. En el caso de los enteros, los compiladores (aquella parte del software que pasa
el código escrito en un lenguaje entendible por los humanos a uno entendible por las maquinas) nos
permiten usar diferentes cantidades de memoria, así en el caso del FORTRAN, tenemos enteros de 1
byte (INTEGER*1), 2 bytes (INTEGER*2), 4 bytes (INTEGER*4). Normalmente si no se especifica nada
1 aunque a veces las compañías de comunicaciones se aprovechan de la falta de conocimiento del personal para vender-

nos la moto. Así por ejemplo cuando nos hablan de que la velocidad de la linea de ADSL es de 10 megas, en realidad no son
10 megabytes si no 10 megabits, esto es un factor casi 10 veces más pequeño
6 Capítulo – 1. Errores y sus causas en los métodos numéricos

(esto es no se pone el asterisco seguido por los números 1, 2 ó 4), se sobreentiende que es de 4 bytes.

Para trabajar ahora supondremos que tenemos 1 byte para almacenar nuestros números. En la
vida real tenemos enteros positivos y negativos por lo que debemos de reservar algún bit para indicar
esta incidencia, lo mas normal es que se use el bit que está más a la izquierda para el signo. Se dice en-
tonces que tenemos enteros con signo (hay lenguajes de programación como el C, donde se permiten
enteros sin signo y con signo, en FORTRAN los enteros son siempre con signo). Así pues de nuestros
8 bits, 1 de ello lo vamos a usar para el signo y los otros 7 para almacenar información. Hay varias ma-
neras de representar los números negativos. Una manera es la siguiente si el primer bit de la izquier-
da es un cero, el número es positivo, si es un 1 se supone que es negativo. así por ejemplo el número
01011110 es un número positivo cuyo valor decimal es 1·26 +0·25 +1·24 +1·23 +1·22 +1·21 +0·20 = 94.
De la misma manera el número 11011110 representa al número decimal -94, pues el primer bit repre-
senta el signo y el resto el valor absoluto del número. Así pues de esta forma para obtener un número
negativo damos el correspondiente número positivo que ocupara n-1 bits y ponemos a 1 el bit situado
más a la izquierda. Otra manera de hacerlo es a través de lo que se conoce como complementario a 1.
Suponed que tenemos un número entero positivo y que tenemos n bits disponibles para representar
los números. Se define el complementario a 1 del número N, como

C n,1 (N) = 2n − N − 1

Suponed como antes que N = 94, el complementario a 1 de 94 vale, en representación de 8 bits (n=8),

C8,1 (94) = 28 − 94 − 1 = 256 − 95 = 161 = 128 + 32 + 1 = 10100001

este número así obtenido tiene el bit de la izquierda puesto en 1, por lo tanto dentro de nuestro
sistema anterior sería un número negativo. Podemos por tanto asignar al número positivo N el nú-
mero negativo obtenido como complementario a 1 (C n,1 (N)) de dicho número. Si nos fijamos en la
representación binaria de ambos números, 94=01011110 y C8,1 (94)=10100001, vemos que este último
número se obtiene a partir del primero sin mas que cambiar los ceros por unos y los unos por ceros,
lo cual es una tarea muy fácil desde el punto de vista de la ingeniería de computadores. Como en el
caso anterior el bits más a la izquierda es dedicado al signo por lo que, podemos usar n − 1 bits para
representar números, resultando en 2n−1 números positivos y 2n−1 negativos, pudiendo suceder que
algún número tenga dos representaciones.

Existe otra manera de representar los números negativos es el llamado complemento a 2. Se defi-
1.2 Representación binaria de los números 7

ne el complementario a 2 como el complementario a 1 más 1

C n,2 (N) = C n,1 (N) + 1 = 2n − N

Veamos que número nos sale en el caso de N = 94,

C8,2 (94) = 256 − 94 = 162 = 10100010

como antes, el bit de la izquierda es negativo y por tanto podemos asignar al número positivo N
el número negativo −N = C n,2 (N), de tal forma que al número 94 = 01011110 le corresponde, en la
representación complemento a 2, el número negativo −94 = 10100010. Si nos fijamos en ambos nú-
meros, se puede ver que se puede obtener el complemento a 2 de un número comenzando a contar
por la derecha y localizar el primer 1, a partir del siguiente bit se cambian ceros por uno y unos por
ceros. Como el bit de la izquierda de un número positivo es cero, el bit de la izquierda del correspon-
diente complemento a 2 es siempre un 1 y por tanto lo podemos usar para representar los números
negativos. En cualquier caso como 1 bit lo dedicamos al signo, si tenemos n bits, podemos represen-
tar 2n−1 números positivos y 2n−1 números negativos. Por ejemplo, si n = 8 podemos representar 256
números (28 ). Si tenemos en cuenta el signo tendremos 128 positivos y 128 negativos. Incluyendo el
cero como positivo, los números positivos irían de 0 a 127 (hay 128 números). Respecto de los ne-
gativos va a depender de la manera de representarlo, poniendo sin más el bit de la izquierda a 1, el
complemento a 1 o el complemento a 2 . La figura 1.1 obtenida de la Wikipedia nos muestra la repre-
sentación de los diferentes números a representar con 8 bits en las 3 representaciones comentadas.
Si nos fijamos en la dos columnas de la izquierda tanto en la representación en la que se ha puesto a 1
el bit de la izquierda como en la representación complemento a 1 el cero tiene dos representaciones,
esto no ocurre en la representación complemento a 2. En las dos primeras representaciones el rango
de números a representar va desde -(2n−1 - 1) a +(2n−1 -1) y para la representación en complemen-
to a 2 desde -(2n−1 ) a +(2n−1 -1). La representación complemento a 2 tiene también alguna ventaja
adicional. Vamos a suponer que queremos sumar 2+(-2), que sabemos que es cero, supongamos que
tenemos 4 bits para su representación, en las diferentes representaciones tenemos

2 + (−2) = 0010 + 1010 = 1100 = −4 Representación con el bit de la izquierda 1


2 + (−2) = 0010 + 1101 = 1111 = −0 Representación complemento a 1
2 + (−2) = 0010 + 1110 = 0000 = 0 Representación complemento a 2

Se ve que se obtiene directamente el resultado 0 sin posterior transformación en la representación


8 Capítulo – 1. Errores y sus causas en los métodos numéricos

Figura 1.1: Representación de los números en los diferentes formatos. (fuente:Wikipedia)

complemento a 2, por esta razón la mayor parte de los computadores actuales usan esta representa-
ción.

Supongamos que tenemos un número binario, por ejemplo 10100010, y queremos saber que nú-
mero representa sabiendo que está en complemento a 2. Como sabemos si tenemos un numero po-
sitivo N el complemento a 2 del número (que representa el correspondiente número negativo) es,

C n,2 (N) = 2n − N

de donde
−N = C n,2 (N) − 2n = −1 · 2n−1 − 1 · 2n−1 +C n,2 (N)

como el número tiene el bit de la izquierda a 1, tendremos

−N = −1 · 2n−1 − 1 · 2n−1 + 1 · 2n−1 + an−2 · 2n−2 + · · · + a1 · 21 + a0 · 20 =

= −1 · 2n−1 + an−2 · 2n−2 + · · · + a1 · 21 + a0 · 20 (1.1)

en nuestro caso particular del número 10100010, tendremos que a1 = 1, a5 = 1 y operando

−N = −1 · 27 + 1 · 25 + 1 · 21 = −128 + 32 + 2 = −94
1.2 Representación binaria de los números 9

que es el número representado. Así pues, si nos fijamos en la ecuación 1.1, en la representación com-
plemento a 2, el número decimal asociado al número binario an−1 an−2 · · · a1 a0 viene dado por la ex-
presión
− an−1 · 2n−1 + an−2 · 2n−2 + · · · + a1 · 21 + a0 · 20 (1.2)

independientemente de que el número sea positivo o negativo. Si el número es positivo an−1 = 0 y la


parte negativa no juega ninguna influencia y si es negativo an−1 es 1 y se obtiene la expresión 1.1

1.2.2. Números decimales

La representación de los números decimales es completamente distinta a la representación de


los números enteros. En este caso los números se expresan primero en formato exponencial. Vamos
a verlo primero en formato decimal y luego lo vemos en formato binario. Supongamos que tenemos
el numero 1234.56. Este número lo podemos poner también expresar como 123,456×101 = 12,3456×
102 = 1,23456 × 103 = 0,123456 × 104 = 0,0123456 × 105 = . . .. De todas estas formas, cuando se habla
del formato exponencial nos referimos a la dada por 0,123456×104 , de tal forma que a la izquierda del
punto decimal hay un cero y a la derecha un dígito que es distinto de cero. A la parte con punto de-
cimal del número así representado se le llama mantisa y a la otra parte exponente. Pues bien, puesta
como potencia de 10, la mantisa se escribe 0,123456 = 1·10−1 +2·10−2 +3·10−3 +4·10−4 +5·10−5 +6·10−6 ,
esto es, desarrollamos los números como potencia de 10−1 . Que pasa en formato binario, pues lo mis-
mo que en decimal, solo que ahora usamos la base 2. Suponed que tengamos el numero 12.34, puesto
en formato binario tendremos 12.34 = 8+4+ 0.34 = 1·23 +1·22 +0,34. Ahora la parte decimal la tenemos
que expandir como potencias de 2−1 (de la misma forma que ante se hizo la expansión en términos
de potencias de 10−1 ), esto es

0,34 = 0·0,5+0,25+0,09 = 0·0,5+0,25+0·0,125+1·0,0625+0·0,003125+1·0,015625+1·0,0078125+..

Así pues 12,34 = 1100,0101011..., que podemos poner, corriendo la coma 4 lugares, como 0,11000101011×
24 , que sería la representación binaria del número en formato exponencial. Como el 4 es 100 en
formato binario, escribiendo el exponente con 4 bits, tendremos 12.34 = 0.11000101011 0100, don-
de hemos obviado poner la base 2 del exponente. Así pues todo número puesto en formato expo-
nencial tiene por un lado la mantisa y por el otro el exponente. Dependiendo de la información
disponible para expresar los números, parte de esta cantidad la dedicaremos a la mantisa y parte
al exponente. Hay que decir que la precisión del número viene dada por la mantisa y la magnitud
(lo grande o lo pequeño que es) por el exponente. Normalmente en FORTRAN, se dedican 4 bytes,
esto es 32 bits a representar los números decimales, se habla entonces de números en precisión
10 Capítulo – 1. Errores y sus causas en los métodos numéricos

sencilla (SINGLE PRECISION), es la forma normal si no decimos nada. También se puede expresar
como REAL*4. Es posible también usar 64 bits, se habla entonces de números en precisión doble
(DOUBLE PRECISION) o también REAL*8. En la forma REAL*4, donde se usan 32 bits para representar
los números, se dedican 8 bits a expresar el exponente y 23 bits a la mantisa y uno al signo. En el
exponente, pueden aparecer números positivos y negativos. Para no tener que tratar con el signo en
el exponente normalmente se le añade al exponente real una cierta cantidad para que el exponente a
representar sea siempre positivo o nulo. En el caso de REAL*4, donde se dedican 8 bits al exponente
esta cantidad es 128, de tal forma que el exponente que se representa es el real más 128. Como el
número más grande que podemos expresar con 8 bits es 255(todos unos), el exponente real más alto
será 255-128 = 127 y el exponente real más pequeño será 0-128 = -128, así pues el orden de magnitud
de los números REAL*4, será desde 2−128 hasta 2127 . que expresados en formato decimal van desde
10−38 a 1037 aproximadamente. Como dijimos antes la información dejada para la mantisa es de 23
bits, es la precisión del numero. Para ver cuantas cifras significativas (en formato decimal) corres-
ponden estos 23 bits, vamos a echar la siguiente cuenta. Resulta que 3 cifras decimales significativas
equivale al número 1000, como 210 =1024 que es aproximadamente 1000, se tiene que 10 cifras sig-
nificativas binarias es aproximadamente 3 cifras significativas decimales, de tal forma que 23 cifras
binarias equivalen a 7 (no llega) decimales. Así pues la máxima precisión que se alcanza al expresar
un número en formato decimal REAL*4 es de 7 cifras significativas. En el caso de que se use la doble
precisión para representar los números, tenemos 64 bits de memoria para representar a los números.
En este caso se dejan 11 bits para el exponente, 1 para el signo y 52 para la mantisa. Como en el caso
de la precisión sencilla, para evitar tener que poner un signo - en el exponente, al exponente real se
le añade una cantidad, en este caso 1024. Como el número más grande que podemos alcanzar con
11 bits es 2047, si restamos 1024, tenemos que la magnitud del número más grande a representar es
21023 ≈ 10307 y el más pequeño es 2−1024 ≈ 10−307 . La cantidad de bits dejados para la mantisa son 52,
con las cuentas que echamos antes nos sale una precisión de 16 cifras significativas.

Tal y como hemos echado las cuentas antes, en formato exponencial, el dígito que sigue a la coma
siempre es un uno, los fabricantes de ordenadores tratando de aumentar la precisión lo que hacen
es correr la coma un lugar a la derecha de tal forma que el número a representar es 1.F en vez de
0.F, como siempre es 1.F, el 1 no se pone, de tal forma que si nos dan un número de la forma 0.F el
número actual que representa es (0.F 2E−E0 + 2E−E0 . Estas operaciones pueden cambiar de fabricante
a fabricante, por esta razón la industria ha establecido unos cánones o norma de representación. Una
muy usual es la norma IEEE 754 que podemos ver en la figura 1.2
1.3 Redondeo de los números binarios 11

Figura 1.2: Representación binaria mediante la norma IEEE 754.

1.3. Redondeo de los números binarios

Al expresar un numero decimal con un numero determinado de bits (que depende del modo de
representación, REAL*4 ó REAL*8) en la mayor parte de las situaciones dicho número decimal ne-
cesitaría de más bits de los que tenemos disponibles. Se tiene entonces que realizar un redondeo.
Existen diversas formas de redondeo. Supongamos que tenemos un numero que en formato expo-
nencial (base 10) se expresa como p = m10e = 0.d1 d2 d3 d4 d5 . . . dk dk+1 dk+2 × 10e . Supongamos que
sólo tenemos k dígitos para expresar la mantisa. Tenemos dos posibilidades de aproximación. En una
de ellas, la llamada aproximación por poda, simplemente se ignora lo que está mas allá del k-eximo
dígito, del tal forma que el número p se aproxima por p ∗ = 0.d1 d2 d3 d4 d5 . . . dk × 10e . Otra posibilidad
es la aproximación por redondeo, en cuyo caso se examina el dígito dk+1 , si es menor que 5 el núme-
ro se poda de tal forma que p ∗ = 0.d1 d2 d3 d4 d5 . . . dk × 10e , y si dk+1 > 5 el número 0.d1 d2 d3 d4 d5 . . . dk
se redondea al alza 0.d1 d2 d3 d4 d5 . . . dk ≈ 0.r1 r2 r3 r4 r5 . . . rk = 0.d1 d2 d3 d4 d5 . . . dk + 10−k . Suponed que
se tiene el número 0,129745 y que sólo tenemos 3 dígitos para expresar la parte decimal, el número
0,1297454 se aproxima por 0,129 si la aproximación es por poda o bien 0,130 = 0,129 + 1 × 10−3 si la
aproximación es por redondeo. En el caso de la aproximación por redondeo el error cometido está
acotado por
|p − p ∗ |
≤ 5 × 10−k
|p|

Llamando eps = 5 × 10−k , poner que


p ∗ = p(1 + ²)
12 Capítulo – 1. Errores y sus causas en los métodos numéricos

siendo |²| ≤ eps. La cantidad eps se denomina precisión de la máquina (el número más pequeño que
sumado a 1 lo hace ya distinguible de 1). La cantidad |²| en el caso de aproximación por redondeo es
menor que 5 × 10−k . Este proceso, que lo hemos hecho para una representación decimal, es válida
para la representación en binario. Lo único que tenemos que hacer es expresar los números como
potencias de 2 en vez de 10. Así por ejemplo en el caso de la aproximación por redondeo el número
0.d1 d2 d3 d4 d5 . . . dk dk+1 dk+2 .. es sustituido por 0.r1 r2 r3 r4 r5 . . . rk = 0.d1 d2 d3 d4 d5 . . . dk +1×2−k si dk+1
es uno, en cuyo caso p∗ = p(1 + ²) con |²| ≤ 1 × 2−k , ahora eps = 2−k . Efectivamente, sea x el núme-
ro 0.d1 d2 d3 d4 d5 . . . dk dk+1 dk+2 .., x 0 el número 0.d1 d2 d3 d4 d5 . . . dk y x 00 el número 0.r1 r2 r3 r4 r5 . . . rk =
0.d1 d2 d3 d4 d5 . . . dk +1×2−k . Está claro que el número x está comprendido entre el x 0 y el x 00 . Suponga-
mos que esté más cerca de x 0 que x", Esto significa que estará a la izquierda de la mitad del intervalo
[x 0 , x"] y por tanto
1 1
|x − x 0 | ≤ |x 00 − x 0 | = 2−k
2 2
El valor absoluto del error relativo estará acotado por

1 −k 1 −k
¯ x − x0 ¯ 22 22
¯ ¯
¯ ¯≤
¯ x ¯ 0.d d d d d . . . d d ≤ = 2−k
1 2 3 4 5 d
k k+1 k+2 .. 1/2

Lo mismo sucede si x está más próximo a x", pues ahora sustituyo x por x 00 y la distancia de x a x"
será menor (1/2)(x 00 − x 0 ) = (1/2)2−k . Por lo que el valor absoluto del error relativo está acotado por la
cantidad eps= 2−k .

Así pues en el interior del ordenador se sustituye el número p por otro aproximado p∗ = rd(p) =
p(1 + ²), siendo rd la operación de redondeo (o poda). Cuando vayamos a hacer operaciones mate-
máticas con estos números aproximados, el resultado de las operaciones es en realidad otro número
aproximado. Así tenemos que

a +∗ b = rd(a + b) = (a + b)(1 + ²1 )
a −∗ b = rd(a − b) = (a − b)(1 + ²2 )
a ×∗ b = rd(a × b) = (a × b)(1 + ²3 )
a/∗ b = rd(a/b) = (a/b)(1 + ²4 )

donde +∗ , −∗ , ×∗ , /∗ indican las operaciones de sumar, restar, multiplicar y dividir con redondeo. La
aritmética con redondeo no verifica las reglas usuales de la aritmética, así por ejemplo a +∗ (b +∗ c)
es diferente de (a +∗ b) +∗ c. Veamos un ejemplo, tomemos a=0.23371258×10−4 , b=0.33678429×102 y
1.3 Redondeo de los números binarios 13

c=-0.33677811×102 . Suponed que k=8. Tenemos

b +∗ c = 0,33678429 × 102 − 0,33677811 × 102 = 0,00000618 × 102 = 0,61800000 × 10−3

a+∗ (b+∗ c) = 0,23371258×10−4 +0,61800000×10−3 = 0,02337126×10−3 +0,61800000×10−3 = 0,64137126×10−3

Si hacemos primero a+b, tenemos

a +∗ b = 0,23371258×10−4 +0,33678429×102 = 0,00000023×102 +0,33678429×102 = 0,33678452×102

(a +∗ b) +∗ c = 0,33678452 × 102 − 0,33677811 × 102 = 0,00000641 × 102 = 0,64100000 × 10−3

El resultado exacto, sin redondeo es

a + b + c = a + (b + c) = 0,641371258 × 10−3

Vemos pues que la primera manera de calcular la suma es más precisa. La razón estriba en que hemos
hecho primero la suma(en este caso resta) de dos números de igual magnitud, obteniendo un nuevo
número que era del orden de magnitud del tercer número a sumar. En la segunda forma sin embargo
hemos empezado sumando dos números con magnitudes completamente diferentes y es aquí cuan-
do se produce el mayor error en el redondeo, pues para sumar ambos números hemos tenido que
usar la misma base.

Ejercicio 1.1 Suponiendo que d = b +∗ c = (b + c)(1 + ²2 ) y que a +∗ d = (a + d)(1 + ²1 ), evaluar cual es


el error cometido.

En la aritmética con redondeo, es posible que pasen cosas como x +∗ y = x, basta con que y ≤
eps/B|x|, siendo B la base en la que se están expresando los números. Un parámetro que mide la
precisión de los números en un ordenador es el ² de la máquina. Es el número positivo de la máquina2
más pequeño que podamos encontrar tal que sumado a 1 nos de un número diferente de 1.

eps = mi n{g ∈ A|1 +∗ g > 1 con g > 0}

siendo A el conjunto de números representado por la máquina.


Como primer ejercicio de cálculo, preparad un programa que calcule el ² de vuestro ordenador.
¿ Cuándo aparecen errores de redondeo importantes a la hora de calcular ?. Según hemos visto
2 Un número se dice de la máquina si es representado sin error por la máquina. Por ejemplo el 0.5 es un número de la

máquina, el 0.2 no es un número de la máquina


14 Capítulo – 1. Errores y sus causas en los métodos numéricos

antes, una posibilidad es cuando tenemos que sumar o restar números de magnitudes muy diferen-
tes. Surgen también importantes errores cuando se restan números muy próximos. Introducid en un
programa FORTRAN los siguientes códigos y analizar los resultados.
Código 1:

suma=1
do i =1, 10000
suma=suma+0.00001
end do
write(6,*) suma

Código 2:

a = cos(0.3)
do k=1,20
b = sin(float(k))
z=a/b
w=z*b
y=a-w
write(6,*) a,b,w,y
end do

1.4. Teorema de Taylor

Tanto en física como en matemáticas es muy empleado el llamado teorema de Taylor, que por su
uso continuado en el temario vamos a exponer aquí sin demostración.

Teorema 1.4.1 Sea f (x) una función continua y con derivada continua hasta el orden n+1 en un
intervalo (a, b) , esto es f ∈ C n+1 (a, b). Sea un punto x0 ∈ (a, b). Entonces para cada x ∈ (a, b), existe
un número c = c(x) (que depende de x) que está entre x0 y x, tal que

f (x) = Pn (x) + Rn (x)

siendo Pn (x) el Polinomio de Taylor de grado n de f(x) alrededor de x0 ,

k=n f (k) (x0 )


(x − x0 )k
X
Pn (x) = f (x0 ) +
k=1 k!
1.4 Teorema de Taylor 15

y el resto Rn (x)
f (n+1) (c)
Rn (x) = (x − x0 )(n+1)
(n + 1)!
16 Capítulo – 1. Errores y sus causas en los métodos numéricos
Capítulo 2

Raíces de ecuaciones

2.1. introducción

Es muy frecuente que nos encontremos con problemas donde es necesario encontrar una solu-
ción o raíz de una ecuación del tipo f (x) = 0 que no podamos resolver de forma analítica y tenemos
que usar métodos numéricos para encontrar una solución. Un ejemplo típico se da por ejemplo en
Astronomía. Sabemos por las leyes de Keppler que los planetas siguen órbitas elípticas alrededor del
Sol, estando este último situado en uno de los focos. Una pregunta que surge es la de evaluar la posi-
ción que tiene un astro en un instante determinado. La mecánica celeste nos dice que si no tenemos
en cuenta la presencia de otros planetas la posición del planeta como función del tiempo viene dada
por la ecuación de Kepler,
E − e sin E = n(t − t0 )

siendo E la anomalía excéntrica, t0 el instante de paso del planeta por el perihelio (punto más cercano

Figura 2.1: Posición de un


planeta p respecto del Sol s. E
es la anomalía excéntrica, M
la anomalía media y T la ano-
malía verdadera, c el centro
de la elipse, y z la posición del
perihelio.

al Sol, en el caso de la Tierra tiene lugar hacia el 5 de enero), n = 2π/T la frecuencia de rotación con
periodo T = 365,242198 días medios (caso del la Tierra) y e la excentricidad de la órbita (ver la figura
18 Capítulo – 2. Raíces de ecuaciones

2.1).
Pues bien si nos dan el instante t y queremos obtener la posición del planeta tenemos que resol-
ver la ecuación anterior, que no admite una solución analítica y tenemos que acudir a una solución
numérica.

Definición 1 Sea f (x) una función continua, cualquier número r , tal que f (r ) = 0 se dice que es una
raíz de la ecuación f (x) = 0. Se dice también que r es un cero de la función f (x)

2.2. Métodos de localización de raíces

Vamos en esta sección a hablar de una serie de métodos que nos permiten, más que encontrar
una raíz de forma exacta vamos a encontrar un intervalo, eso si tan pequeño como queramos donde
se encuentra situada la raíz.

2.2.1. El método de la bisección (de Bolzano)

Suponed que tenemos que localizar ceros de la función f(x), y que en un cierto intervalo [a, b] la
función es continúa y tal que f (a) y f (b) tienen signos opuestos (ver la figura 2.2). Por el teorema
de Bolzano sabemos que hay una raíz entre a y b 1 Vamos a suponer además que en ese intervalo
la función f (x) sólo se anula una vez. Dividamos el intervalo [a, b] en dos partes iguales, esto es

Figura 2.2

buscamos un punto c = (a + b)/2.


Pueden suceder 3 situaciones

que f (c) = 0, hemos encontrado la raíz


1 Teorema de Bolzano. Sea f (x) una función continua en el intervalo [a,b], tal que f (a)· f (b) < 0 entonces existe un cierto

c ∈ [a, b], tal que f (c) = 0


2.2 Métodos de localización de raíces 19

que f (c) × f (b) > 0, significa que f (c) tiene el mismo signo que f (b), por tanto la raíz esta en el
intervalo (a, c), tomemos como nuevo punto b al punto c así obtenido y volvamos a repetir el
proceso

que f (c) × f (b) < 0, significa que f (c) tiene diferente signo que f (b) y por tanto la raíz esta en
el intervalo (c, b), tomemos como nuevo punto a al punto c.

Continuando con el proceso se construyen una serie de intervalos de tal forma que si en el paso
n llegamos al intervalo [an , bn ], el siguiente intervalo se construye de la siguiente manera:

an + bn
cn+1 =
2

eligiendo an+1 , bn+1 en función del signo de f (cn+1 )· f (bn ). Si f (cn+1 ) = 0, la raíz r es igual a cn+1
y hemos acabado el proceso. Si f (cn+1 ) · f (bn ) < 0 (la raíz se encuentra entre ambos valores, de
cuerdo con Bolzano) tomaremos an+1 = cn+1 , bn+1 = bn . Si por el contrario f (cn+1 ) · f (bn ) > 0
la raíz se localiza entre an y cn y tomaremos an+1 = an , bn+1 = cn+1

Repitiendo el proceso n veces vamos localizando la raíz en intervalos cada vez más pequeños
[a n , b n ], hasta que paremos el proceso porque suponemos que hemos alcanzado suficiente precisión.
Al cabo de n iteraciones la longitud del intervalo [a n , b n ] es

b−a
∆n =
2n

2.2.2. Criterio de convergencia

En todo proceso iterativo tenemos que parar en algún momento el proceso, en el caso particular
que nos ocupa, como la raíz siempre va a estar en el intervalo [an , bn ], se tiene que (llamando a0 =
a, b0 = b, c1 = (a + b)/2) existe un número r , tal que f (r ) = 0 y que

bn − an (b − a)/2n b − a
|r − cn+1 | ≤ = = n+1 .
2 2 2

Además se tiene que lı́mn→∞ cn+1 = r


Con lo cual podemos prefijar de antemano la precisión, si llamado δ = |r − cn+1 |, con un número
de iteraciones
log(b − a) − log(δ)
N = parte entera( )
log(2)
habremos conseguido una precisión mejor que δ, así pues podemos pensar con que precisión que-
remos nuestra raíz y a partir de aquí evaluar el número de pasos necesarios para alcanzarla. Uno de
20 Capítulo – 2. Raíces de ecuaciones

los problemas que tiene este método es que la velocidad de convergencia no es muy rápida.

2.3. Método de la falsa posición

Es un método bastante popular y sencillo de aplicar. Como antes, debemos de partir del conoci-
miento que f (x) es continua en un cierto intervalo [a, b] de que nuestra raíz está en dicho interva-
lo, de tal forma que f (a), f (b) tienen diferente signo. Vamos a trazar una recta que una los puntos
(a, f (a)), (b, f (b)), la pendiente de esta recta será

f (b) − f (a)
m=
b−a

La intersección con el eje y = 0 será en el punto c (ver la figura 2.3), tal que

0 − f (b) = m(c − b)

de donde, teniendo en cuenta la expresión para m, se obtiene

f (b)(b − a) f (b)a − f (a)b


c =b− = (2.1)
f (b) − f (a) f (b) − f (a)

Figura 2.3

Pueden suceder 3 situaciones

que f (c) = 0, hemos encontrado la raíz

que f (c) × f (b) > 0, significa que f (c) tiene el mismo signo que f (b), por tanto la raíz esta en el
intervalo (a, c), tomemos como nuevo punto b al punto c así obtenido y volvamos a repetir el
proceso
2.3 Método de la falsa posición 21

que f (c) × f (b) < 0, significa que f (c) tiene diferente signo que f (b) y por tanto la raíz esta en
el intervalo (c, b), tomemos como nuevo punto a al punto c.

Continuando con el proceso se construyen una serie de intervalos de tal forma que si en el
paso n llegamos al intervalo [an , bn ], el siguiente intervalo se construye de la siguiente manera
(siguiendo la expresión (2.1)).
f (bn )an − f (an )bn
cn = (2.2)
f (bn ) − f (an )
eligiendo an+1 , bn+1 en función del signo de f (cn ) · f (bn ). Si f (cn ) = 0, la raíz c es igual a cn
y hemos acabado el proceso. Si f (cn ) · f (bn ) < 0 (la raíz se encuentra entre ambos valores, de
cuerdo con Bolzano) tomaremos an+1 = cn , bn+1 = bn . Si por el contrario f (cn )· f (bn ) > 0 la raíz
se localiza entre an y cn y tomaremos an+1 = an , bn+1 = cn

2.3.1. Criterio de convergencia

Se puede ver que la sucesión


f (bn )an − f (an )bn
cn =
f (bn ) − f (an )
converge hacia r siendo r una raíz de la función f (x). En este caso, al contrario que pasaba en el
método de la bisección no podemos calcular la anchura del intervalo (an , bn ) y tenemos que usar
otro criterio de convergencia. Hay varias maneras de parar el proceso. Una de ellas sería evaluar la
función en el punto cn y si | f (cn )| < ², siendo ² una cantidad pequeña entonces se termina el proceso.
Otra posibilidad es mirar la anchura de los intervalos |bn − an |, si estos son menores que una cierta
cantidad δ podemos suponer que estamos cerca de la raíz. Existe también la posibilidad de parar
cuando tengamos una raíz cuyo valor relativo varía muy poco, esto es

2|cn+1 − cn |

|cn | + |cn+1 |

en cuyo caso suponemos que cn es la raíz. Tenemos que ser juiciosos a la hora de elegir los valores
de ² teniendo en cuenta la precisión de la máquina. Un valor de δ de unas 100 veces el epsilon de la
máquina parece razonable. En todo caso, puesto que el proceso iterativo puede ser muy largo y tardar
mucho en converger, en todos estos procesos se limita el número n de iteraciones a realizar. Una vez
superado este límite se para el proceso poniendo un mensaje indicando que se ha alcanzado el límite
de iteraciones establecido.
Existe un problema con el método de la falsa posición y que ocurre cuando cerca de la raíz la
curva es convexa (ver la figura 2.4) o cóncava. En este caso uno de los extremos de los intervalos
22 Capítulo – 2. Raíces de ecuaciones

Figura 2.4

construidos permanece fijo y el otro varía lentamente. En este caso se suele emplear métodos que
aceleren el proceso, uno de ellos recibe el nombre de Illinois y lo exponemos a continuación

Hacer salva = f(b)

f (cn ) = 0, hemos encontrado la raíz, si no

f b = f (bn ), f a = f (an ) (inicialmente bn = b, an = a)

Calculamos, como hemos visto antes

f (bn )an − f (an )bn


cn =
f (bn ) − f (an )

Si f (cn ) · f (bn ) > 0, el signo en cn es el mismo que en bn (caso de la figura): La solución está
en el intervalo (an , cn ) Tomaremos bn = cn como el límite superior del nuevo intervalo, eva-
luamos f (cn ) y hacemos f b = f (cn ), además comparamos f (cn ) con salva, si son del mismo
signo, hacemos f a = f a/2 (para quitarle peso al punto an ) y salva = f (cn ) continuaremos con
nuestro proceso.

Si f (cn · f (bn ) < 0, el signo en cn es diferente al de bn : La solución está en el intervalo (cn , bn ).


Tomaremos an = cn como el límite inferior del nuevo intervalo, evaluamos f (cn ) y hacemos
f a = f (cn ), además comparamos f (cn ) con salva, si son del mismo signo, hacemos f b = f b/2
(para quitarle peso al punto b) y salva = f (cn ) continuaremos con nuestro proceso

Respecto del método de la falsa posición el algoritmo de Illinois introduce una variable adicional
(salva) que se define previamente a cualquier proceso iterativo haciendola igual a la función eva-
luada en uno de los extremos. El valor de la esta variable se va cambiando en el curso del proceso
iterativo. Ademas se introduce una condición adicional a la comparativa del signo de la nueva raíz cn ,
y que consiste en comparar el signo de salva con el signo de f (cn ).
2.4 El método Newton-Raphson 23

2.4. El método Newton-Raphson

Este es uno de los métodos más conocidos y usados para la evaluación de la raíz de una función.
La hipótesis de partida2 es que conocemos de forma aproximada la raíz y partimos de un valor inicial
p0 próximo a esa raíz. Evaluemos la derivada en dicho punto

m = f 0 (p0 )

Tracemos una recta que pasa por p0 y con pendiente m, ver la figura 2.5, esta recta será tangente a la
curva definida por f (x) en el punto p0 , f (p0 ), cortará al eje x en el punto

0 − f (p0 ) = m(p1 − p0 )

esto es
f (p0 ) f (p0 )
p 1 = p0 − = p0 − 0
m f (p0 )

Figura 2.5

Tomando ahora como nuevo punto de partida el p1 y aplicando la anterior expresión se calcula
un nuevo punto p2 y así sucesivamente. Así pues se va construyendo la sucesión

f (pn )
pn+1 = pn − (2.3)
f 0 (pn )

Tal y como se ha construido el método, lo que se ha supuesto es que estamos cerca de la raíz y
2 Matemáticamente hablando, se supone que la función f (x), de la cual queremos hallar la raíz, es diferenciable en un

cierto intervalo (a, b) que contiene la raíz, a la vez que su derivada f 0 (x) no se anula en el interior de dicho intervalo
24 Capítulo – 2. Raíces de ecuaciones

que en el entorno de este punto, podemos linealizar (esto es aproximar por una línea recta) la función
f (x).
Vamos a demostrar que cuando n → ∞ pn → r , la raíz de la ecuación. Para esto vamos a hacer
uso de algunos resultados de los llamados puntos fijos de las funciones. Se dice que un punto x es un
punto fijo de una función g (x), si g (x) = x. Vamos a definir como función g (x) a la función

f (x)
g (x) = x −
f 0 (x)

Vamos a suponer que f (x) es continua y con derivada continua hasta segundo orden y que f 0 (r ) es
distinto de cero, siendo r una raíz. De acuerdo con la definición de g , la expresión 2.3 se pude escribir
como
pn+1 = g (pn )

Como en r se tiene que f (r ) = 0 y por tanto que g (r ) = r , resulta que r es un punto fijo de g . Tene-
mos que demostrar por tanto que la sucesión pn tiende a un punto fijo de g . Vamos a hacer uso del
teorema que dice que si en un intervalo (a, b) una función continua h(x) envía cada punto x ∈ (a, b)
a un punto y ∈ (a, b) y si h 0 (x) está definida y cumple que |h 0 (x)| < 1 en el intervalo (a, b), entonces la
función h(x) tiene un único punto fijo en (a,b).
Calculemos la derivada de g (x)
f (x) f 00 (x)
g 0 (x) =
( f 0 (x))2
en x = r, f (r ) = 0 y por tanto g 0 (r ) = 0, como g (x) es continua y g 0 (r ) = 0, si g 0 es continua, existe un
intervalo de longitud δ en torno a r tal que |g 0 (x)| < 1. Cojamos un punto p0 en el intervalo (r −δ, r +δ),
calculemos su el desarrollo en serie de g (p0 ) en torno a la raíz r ,
¯
d g ¯¯
g (p0 ) = g (r ) + (p0 − r )
d x ¯ζ

siendo ζ un punto intermedio entre p0 y r . Como r es un punto fijo, tendremos g (r ) = r . Llamando


g (p0 ) = p1 , tenemos ¯
d g ¯¯
p1 = r + (p0 − r )
d x ¯ζ
por lo que ¯ ¯ ¯
¯ dg ¯ ¯
|p1 − r | = ¯
¯ ¯ ¯ |p0 − r |
d x ¯ζ ¯
ahora bien, por hipótesis, |d g /d x| es menor que uno dentro del intervalo (r − δ, r + δ) por lo que
|p1 − r | ≤ |p0 − r | y por tanto p1 estará en el intervalo (r − δ, r + δ). De acuerdo con las condiciones
2.4 El método Newton-Raphson 25

del teorema del punto fijo, la sucesión pn+1 = g (pn ) converge al punto fijo de g (x) que es la raíz r .
Obviamente el punto inicial se debe de elegir de tal forma que |g 0 (x)| < 1 en el intervalo (r − δ, r + δ)
Podemos aplicar el método de Newton–Raphson a la evaluación de la raíz cuadrada de un numero
A, para ello, consideremos la ecuación f (x) = x 2 − A = 0, de acuerdo con el método tenemos que
construir la sucesión
xi2 − A A
µ ¶
1
xi +1 = xi − = xi +
2xi 2 xi

2.4.1. Velocidad de convergencia

Para describir de forma precisa a que velocidad la sucesión pn converge a una raíz r vamos a de-
finir el orden de convergencia. Sea pn una sucesión convergente a r , como sabemos esto significa
que dado un cierto ² > 0 existe un numero N(²), tal que |r − pi | < ² para todo i > N(²). Consideremos
una función de iteración g (x), como la definida en el método de Newton–Raphson (aunque no úni-
camente definida de esta forma), sea r un punto fijo de dicha función (que sabemos es una raíz de la
función f (x) = 0). Si para cada p0 inicial tomado en un cierto intervalo (r − ², r + ²), se verifica que

|pn+1 − r | ≤ A|pn − r |R

se dice que la sucesión pi converge con velocidad R. Si R es uno se dice que la sucesión converge de
forma lineal, si R = 2 la sucesión converge de forma cuadrática y así sucesivamente. Cuanto mayor
sea R más rápidamente converge la sucesión.
Resulta que el método de Newton-Raphson (cuando la función f (x) admite derivadas continuas
hasta orden 3) tiene un convergencia de tipo cuadrático, excepto cuando la derivada de la función
f 0 (x) es cero en la raíz, en cuyo caso al convergencia es lineal. Para demostrarlo, como hemos visto la
función de iteración g (x) tiene un punto fijo en la raíz r , desarrollemos en serie g (x) en torno a r

1
pn+1 = g (pn ) = g (r ) + g 0 (r )(pn − r ) + g 00 (r )(pn − r )2 + . . .
2

de la definición de g (x) = x − f (x)/ f 0 (x), se tiene que

f (r ) f 00 (r ) f 00 (r )
g 0 (r ) = = 0, g 00 (r ) = , (se ha tenido en cuenta que f (r ) = 0)
( f 0 (r ))2 f 0 (r )

De donde
1 1
pn+1 = g (pn ) = g (r ) + g 00 (r )(pn − r )2 + . . . = r + g 00 (r )(pn − r )2 + . . .
2 2
26 Capítulo – 2. Raíces de ecuaciones

reordenando e ignorando los términos mas allá del cuadrado en pn − r , se tiene

1 f 00 (r )
pn+1 − r = g 00 (r )(pn − r )2 = (pn − r )2
2 2( f 0 (r ))

donde teniendo en cuenta nuestras definiciones, vemos que R = 2 y

f 00 (r )
A=
2( f 0 (r ))

¿Qué pasa si f 0 (r ) es cero?, pues que la raíz de la función f (x) es doble y la función f (x) la podemos
poner como f (x) = (x − r )2 h(x) y si es de orden M, se puede poner como f (x) = (x − r )M h(x) en esta
situación,
1 M −1
g 0 (r ) = 1 − =
M M
y se tiene que
M −1
pn+1 − r = (pn − r )
M
donde se han ignorado términos cuadráticos y superiores, en este caso el método de Newton–Raphson
es lineal. En este caso se puede usar un método de Newton–Raphson acelerado que consiste en usar
la expresión
f (pn )
pn+1 = pn − M (2.4)
f 0 (pn )
siendo M el orden de la raíz. Esta expresión es similar a la usada para el método normal de Newton–
Raphson (ver 2.3), en la que se ha incluido un factor M en el segundo termino del miembro de la
izquierda.

2.4.2. Criterio de convergencia

¿Como podemos parar el método de Newton-Raphson en su proceso de convergencia hacia la


ráiz?, pues de la misma manera que hicimos en el método de la falsa posición, viendo que la raíz ya
varía muy poco o el valor de la función es ya muy pequeña, esto es

|pn+1 − pn | ≤ δ, variación en el valor absoluto de la raíz


2|pn+1 − pn |
≤ ², variación en el valor relativo de la raíz
|pn+1 | + |pn |
| f (pn )| ≤ ε, valor absoluto de la función
2.5 El método de la secante 27

2.5. El método de la secante

Es una variación del método de Newton–Raphson, para no tener que evaluar la derivada de la
función, que habrá ocasiones que no sea posible calcularlas de forma analítica. La idea es sustituir
la derivada por una expresión aproximada. Suponed que en un instante dado tenemos dos valores
aproximados de la raíz, pn , pn−1 , podemos tratar de estimar la derivada mediante la expresión

f (pn ) − f (pn−1 )
f 0 (pn ) =
pn − pn−1

Llevando esta expresión a la correspondiente del método de Newton–Raphson, se obtiene

f (pn )(pn − pn−1 )


pn+1 = pn − (2.5)
f (pn ) − f (pn−1 )

El problema que presenta el método es que necesitamos dos puntos de partida, p0 y p1 . La ventaja
que tiene es que no hacer falta calcular la derivada de la función. Se puede demostrar que en el caso
p
de una raíz simple el método tiene una velocidad de convergencia R = (1 + 5)/2 ≈ 1,618.
28 Capítulo – 2. Raíces de ecuaciones
Capítulo 3

Solución de sistemas lineales

3.1. Introducción

Vamos a dedicar este capítulo a la solución de sistemas algebráicos lineales

A·x = b

siendo A una matriz de dimensión n × n, x un vector columna de longitud n, con las incógnitas, y
b un vector columna de longitud n, que contiene los términos independientes. Para que el sistema
tenga solución única el determinante de la matriz A debe ser ser distinto de cero. Si el determinante
es cero, significa que no todas las ecuaciones son independientes y por tanto tenemos mas incógnitas
que ecuaciones a mano. En este caso es posible que no haya solución o haya más de una. Si hay más
de una, una manera de buscar soluciones es encontrar una solución particular y una combinación
de n − m vectores, siendo n el número de incógnitas y m el de ecuaciones. Puede ser que nos encon-
tremos con casos en los que tengamos mas ecuaciones que incógnitas, en este caso no hay solución
y se busca una solución de compromiso, aquella que haga la distancia entre la real y la aproximada
lo mas pequeña posible, veremos estos mas adelante cuando desarrollemos el método de mínimos
cuadrados. Por ahora nos centraremos en los sistemas en los cuales el determinante es distinto de
cero y existe una única solución.
Este tema tiene un gran interés pues la resolución de sistemas lineales aparece con mucha facili-
dad en diferentes campos de la física, la matemática y la ingeniería y hay en el ’mercado’ una gran can-
tidad de técnicas para la resolución de sistemas lineales donde pueden aparecer miles de incógnitas.
nosotros mostraremos solo unos cuantos métodos. Estos se pueden dividir en dos grandes grupos,
los llamados directos y los iterativos. En los primero se trata de despejar el vector x de la ecuación
30 Capítulo – 3. Solución de sistemas lineales

que define el sistema lineal. En los segundos, como su nombre indica, se trata de ir refinando una
solución inicial aproximada.

3.2. Método de eliminación gaussiano

Suponed que tengamos un sistema de la forma, siendo A = ai , j y determinante(A) 6= 0

a11 x1 + a12 x2 + . . . + a1n xn = b1


a21 x1 + a22 x2 + . . . + a2n xn = b2
...
an1 x1 + an2 x2 + . . . + ann xn = bn

y queremos despejar las xi . Un manera de hacerlo es, fijar una primera ecuación e ir eliminado varia-
bles de las restantes, combinando apropiadamente las ecuaciones hasta que sólo nos quede una va-
riable en la última, que podemos despejar fácilmente. Una vez evaluada esta variable, vamos marcha
atrás y vamos evaluando el resto de las variables. Vemos un ejemplo con un sistema de tres ecuacio-
nes con tres incógnitas.

a11 x1 + a12 x2 + a13 x3 = b1


a21 x1 + a22 x2 + a23 x3 = b2
a31 x1 + a32 x2 + a33 x3 = b3

Suponiendo que a11 6= 01 , dividamos la primera por a11 , tenemos (aunque esto lo voy a escribir para
que se vea como quedan los factores, esta operación es ’mental’, pues se elimina a partir de la segunda
fila, dejando la primera tal cual)

x1 + (a12 /a11 )x2 + (a13 /a11 )x3 = b1 /a11


a21 x1 + a22 x2 + a23 x3 = b2
a31 x1 + a32 x2 + a33 x3 = b3

1 Como el determinante de A es distinto de cero siempre podemos reordenar las ecuaciones de tal forma que a 6= 0
11
3.2 Método de eliminación gaussiano 31

Para eliminar x1 de la segunda y tercera ecuación basta que multipliquemos la primera por a21 y a31
respectivamente y restemos, tendremos

x1 + a12 x2 + a13 x3 = b1 (3.1)


(a22 − (a21 /a11 )a12 )x2 + (a23 − (a21 /a11 )a13 )x3 = b2 − (b1 /a11 )a21 (3.2)
(a32 − (a31 /a11 )a12 )x2 + (a33 − (a31 /a11 )a13 )x3 = b3 − (b1 /a11 )a31 (3.3)

que podemos reescribir (recordando que la operación que hicimos con la primera fila era mental,
pero que en realidad no la hemos alterado) como

a11 x1 + a12 x2 + a13 x3 = b1


0 0
a22 x2 + a23 x3 = b20
0 0
a32 x2 + a33 x3 = b30

0
Pasemos a la segunda fila y hagamos lo mismo que antes con la primera fila, dividamos por a22
(suponiendo que es distinto de cero, como antes lo haremos mentalmente, aunque yo lo escribo para
ver como quedan los factores)

a11 x1 + a12 x2 + a13 x3 = b1


0 0
x2 + a23 /a22 x3 = b20 /a22
0

0 0
a32 x2 + a33 x3 = b30

0
Multiplicando la segunda por a32 y restando la tercera, se obtiene (eliminando en la tercera fila)

a11 x1 + a12 x2 + a13 x3 = b1 (3.4)


0 0
a22 x2 + a23 x3 = b20 (3.5)
0 0 0 0
(a33 − (a32 /a22 )a23 )x3 = b30 − (b20 /a22
0 0
)a32 (3.6)

De donde

a11 x1 + a12 x2 + a13 x3 = b1


0 0
a22 x2 + a23 x3 = b20
00
a33 x3 = b300
32 Capítulo – 3. Solución de sistemas lineales

De la tercera de las ecuaciones anteriores podemos despejar x3 . Una vez evaluado x3 , podemos ir a
la inmediatamente superior y despejar x2 y por último ir a la primera y despejar x1 , terminando por
tanto el proceso. Como podemos ver de las anteriores ecuaciones, se ha eliminado los términos que
están por debajo de la diagonal principal, quedándonos solo con la diagonal principal y los elementos
que estar por encima de dicha diagonal, a la matriz de los coeficientes resultante se llama matriz
triangular superior. Se podía haber actuado de la misma forma y quedarnos con la matriz triangular
inferior.

3.2.1. El problema del pivote

Un problema que puede surgir a la hora de resolver por el método gaussiano es el problema del
pivote. En cada paso para la eliminación de una variable, hemos dividido por el primer coeficiente
0
que la afecta, en el primer caso, por a11 , en el segundo por a22 y así sucesivamente, este elemento se
llama pivote. Es posible que este elemento sea cero o muy próximo a cero, por lo que al dividir por
él vamos a obtener una indeterminación muy grande o simplemente un error. Tenemos por tanto
que tratar de evitar este problema. Una manera de hacerlo es reorganizar las ecuaciones, de tal forma
que el pivote sea siempre el valor más elevado (en valor absoluto) posible, para lo cual en la primera
iteración debemos de buscar el valor de la columna 1 mas grande e intercambiar la fila 1 y la fila donde
hemos localizado el elemento más grande. Una vez intercambiadas se procede a la eliminación de las
variables como se ha explicado en los pasos anteriormente descritos. Este proceso de localización del
pivote hay que hacerlo en cada paso. El proceso de ’pivotaje’ se puede mejorar trabajando no con los
elementos de la columna, si no con los elementos de la columna normalizados. Para ello, antes de
evaluar cada elemento de la columna, se evalúa el máximo valor (absoluto) de la fila, y se divide por
él. Pongamos un ejemplo, suponed que tenemos el sistema

3x + 2y + 105z = 104
2x − 3y + 103z = 98
1x + 1y + 3z = 3

Si aplicamos directamente el pivote a la primera columna, como el elemento mas grande es el de


la primera ecuación no tendríamos que intercambiar ningún ecuación. Ahora bien si escalamos las
ecuaciones antes de hacer el pivoteo, trendríamos, dividiendo cada elemento de la primera columna
3.2 Método de eliminación gaussiano 33

por el valor mas elevado de cada ecuación,

3/105 = 0,0286
2/103 = 0,0194
1/3 = 0,3333

Vemos que el elemento más grande es el tercero, así que intercambiamos las filas 1 y 3, resultando el
sistema

1x + 1y + 3z = 3
3x + 2y + 105z = 104
2x − 3y + 103z = 98

Ahora ya se eliminan los primeros elementos de las ecuaciones 2 y 3. Una vez eliminadas estos coe-
ficientes se continuaría de la misma manera a como acabamos de hacer, se escalan primero los ele-
mentos que va a actuar de pivotes y se elige el mayor elemento escalado. Con esto se eliminan impor-
tantes efectos de redondeo que suceden en el proceso de cálculo.

3.2.2. Esquema de cálculo

Podemos esquematizar los procesos anteriormente descrito de la siguiente manera ( llamando


ai j a los coeficientes de las incógnitas xi y bi a los valores del termino independiente.)

empezando por la fila k=1 y hasta la n-1(se supone que vamos a eliminar los elementos que
están por debajo de la diagonal principal)

1. localizar en la columna k el mayor elemento en valor absoluto, llamemos r a la fila donde


se localiza el mayor elemento

2. intercambiar las filas k y r , haced lo mismo con el termino independiente.

3. Desde la fila i = k + 1, . . . , n y la columna j = k + 1, . . . , n, recalcular los coeficientes de la


siguiente manera2
ai k ai k
ai j = ai j − ak j bi = bi − bk (3.7)
akk akk

2 El cálculo de los coeficientes b sólo dependen de (i,k), por lo que estos deben de estar fuera del bucle en j
i
34 Capítulo – 3. Solución de sistemas lineales

Una vez alcanzado el final evaluar las incógnitas mediante las expresiones
à !
bn n
X
xn = ; xi = bi − ai j x j /ai i , i = n − 1, . . . , 1 (3.8)
ann j =i +1

El manejo del termino independiente se puede hacer de dos maneras. Una, la más sencilla es incor-
porarlo a la matriz A de los coeficientes de tal forma que en vez de tener una matriz de dimensión
n × n tengamos una matriz de dimensión n × (n + 1). Otra manera de hacerlo es crear un vector de
ordenamiento que tenga como primer elemento la posición que ocupaba la fila donde se encontra-
ba el mayor valor absoluto a1r , en la segunda posición estará el mayor elemento de la fila donde se
0
encontraba el mayor valor absoluto a2r y así sucesivamente. Con este vector de ordenamiento pode-
mos reordenar el termino independiente antes de recalcular los coeficientes bi mediante la expresión
3.7. Aunque es más fácil incorporar en la matriz A, el termino independiente como una columna adi-
cional, el calculo del vector de ordenación es fundamental en la elaboración del método LU que se
mostrará más adelante.

En el esquema anterior no se ha incluido el escalado, podemos incorporarlo en cada paso sin mas
que dividir cada ecuación, antes de cada iteración, por el valor mayor (en términos absolutos) de los
coeficientes ai j .

3.3. La descomposición LU

Suponed que se tiene que resolver un sistema de la forma

A·x = b

Suponed que descomponemos la matriz A como producto de dos matrices3 , una triangular inferior
L y otra triangular superior U, tal que
A = L ·U

Sustituyendo, tendremos
L ·U · x = b

3 Matemáticamente hablando, para que esta factorización sea posible los menores diagonales principales tienen que

tener determinante distinto de cero


3.3 La descomposición LU 35

Multiplicando por L−1 (como determinate de A es distinto de cero, determinante de L es distinto de


cero), tendremos
L−1 · L ·U · x = L−1 b

que podemos poner como

U ·x = b0
L−1 b = b0

o bien, reordenando esta segunda ecuación

U ·x = b0 (3.9)
0
L·b = b (3.10)

Vemos que nos aparecen dos sistemas de ecuaciones. Usando el segundo sistema, resolvemos por b 0
una vez conocido L. Usando el primer sistema obtenemos x, que es lo que queremos. Ahora bien, una
vez conocidos L y U, la solución de estos sistemas es trivial. Suponed que los elementos de la diagonal
principal de L son todos unos, tenemos
 
1 0 0 ... 0
 
 l21 1 0 . . . 0
 
L =  l31 l32 1 . . . 0
 
 
. . . . . . . . . . . . . . . . . . . . . .
 
ln1 ln2 ln3 . . . 1

sustituyendo en la expresión 3.10, se obtiene

b10 = b1 (3.11)
iX
−1
bi0 = bi − li j b 0j , i = 2, . . . , n (3.12)
j =1
36 Capítulo – 3. Solución de sistemas lineales

Usando ahora la ecuación 3.9, teniendo en cuenta que U tiene la forma


 
u11 u12 u13 ... u1n
 
 0 u22 u23 . . . u2n 
 
U = 0 0 u33 . . . u3n 
 
 
. . . . . . . . . . . . . . . . . . . . . . . . . . . 
 
0 0 0 . . . unn

se obtiene

xn = bn0 /unn (3.13)


à !
jX
=n
0
xi = bi − ui j x j /ui i , i = n − 1, . . . , 1 (3.14)
j =i +1

Así pues, una vez obtenidas las matrices L y U la resolución del sistema es trivial. Veamos co-
mo obtener estas matrices. El método de eliminación de Gauss, nos ha permitido ir eliminando los
términos que están por debajo de la diagonal principal y quedarnos sólo con la diagonal y su parte
superior, o sea con la matriz U, así pues recordando como se han obtenido los términos de la mitad
triangular (ecuación 3.7) superior tenemos,

ai k
ai , j ≡ ui j = ai j − ak j k = 1, . . . , n − 1, i = k + 1, . . . , n, j = k + 1, . . . , n (3.15)
akk

Obviamente, para llegar a esta sustitución debemos primero haber tenido el cuenta el problema del
pivoteo y escalado. ¿Qué pasa con la diagonal inferior?. Se puede ver que los podemos calcular me-
diante la expresión
ai k
ai ,k ≡ li k = , k = 1, . . . , n − 1, i = k + 1, . . . , n (3.16)
akk
4
que son precisamente los factores que aparecen en la expresión 3.15 acompañando al término ak j
respectivamente. Así pues estos factores que en el método de eliminación gaussiano no se guardaban,
si no que simplemente se calculaban y se usaban in situ, ahora debemos de guardarlos y usarlos para
evaluar la matriz triangular inferior. Este método de evaluar L y U se denomina método de Doolitle.
De acuerdo con las ecuaciones 3.15 y 3.16, el proceso de obtener la nueva matriz se hace in situ, esto
es, en el proceso de calculo, entra la matriz A con los coeficientes originales y sale la matriz A con
los coeficientes u en su parte triangular superior y los coeficientes l en la parte inferior a la diagonal

4 Respecto del sistema de tres ecuaciones escrito antes para mostrar el método de eliminación gaussiano, estos coefi-
0 en las ecuaciones 3.2, 3.3 y 3.6
cientes son los que aparecen multiplicando a a12 , a13 , a23
3.3 La descomposición LU 37

principal. Obviamente, y al igual que en el método de eliminación de Gauss, pero ahora adquiere
un papel más importante, debemos de construir el vector de ordenamiento, pues mientras en Gauss
podíamos reordenar a la vez la matriz A y el término independiente b, en el caso de la descomposición
LU el método nos devuelve la matriz U, la matriz L y el vector de ordenamiento, que tendremos que
aplicar al vector b antes de comenzar a calcular b 0 en la expresión (3.10).

Podemos expresar la reordenación realizada en la matriz A en el proceso de pivotamiento me-


diante una matriz de permutación P. Una matriz de permutación P, que por ejemplo intercambia las
fila 1 con la fila 3, en una matriz de dimension 4x4 tiene la forma
 
0 0 1 0
 
0 1 0 0
P =
 

1 0 0 0
 
0 0 0 1

Como vemos en cada fila sólo aparece un 1, lo mismo que en cada columna. Se puede demostrar que
este tipo de matrices son invertibles y verifican que P −1 = P T . Se puede demostrar que dada una ma-
triz A invertible (determinante de A distinto de cero) no tiene porque tener una descomposición LU,
ahora bien, se puede encontrar una matriz de permutación P tal que PA si admita la descomposición
LU, (esto es lo que haremos en prácticas mediante el proceso de pivotamiento). En este caso, se tiene

PAx = P b

LLamando b̄ = P b y L̄Ū = PA, tenemos


L̄Ū x = b̄

que al igual que antes podemos poner

Ū x = b̄ 0
L̄b̄ 0 = b̄

que una vez conocido P nos permite evaluar x.


38 Capítulo – 3. Solución de sistemas lineales

3.4. Determinante de una matriz

Una vez hecha la descomposición LU, es trivial el cálculo del determinante de una matriz, pues

Y
Det(A) = Det(L ·U) = Det(L) · Det(U) = Det(U) = ukk

Si se ha llevado a cabo un proceso de pivoteo, esto es si hemos hecho un permutación entonces


debemos de multiplicar el anterior producto por +1 o por −1 de acuerdo al signo de la permutación
P realizada al hacer la descomposición LU mediante el pivoteo. De acuerdo con lo expresado en el
apéndice al final de este capítulo, este signo es el signo de (−1) elevado al numero de transposiciones
realizado en el proceso.

3.5. Inversa de una Matriz

Dada una matriz cuadrada A, la matriz inversa viene determinada por la ecuación
     
a11 a12 a13 ... a1n x11 x12 x13 ... x1n 1 0 0 ... 0
     
 a21 a22 a23 . . . a2n   x21 x22 x23 . . . x2n  0 1 0 . . . 0
     
 a31 a32 a33 . . . a3n  ·  x31 x32 x33 . . . x3n  = 0 0 1 . . . 0
     
     
. . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . .   . . . . . . . . . . . . . . . . . 
     
an1 an2 an3 . . . ann xn1 xn2 xn3 . . . xnn 0 0 0 ... 1

Para obtener los coeficientes xi j , podemos desarrollar el producto obteniendo n ecuaciones del tipo

     
a11 a12 a13 ... a1n x11 1
    
x21 
 0

 a21 a22 a23 . . . a2n    
  
    
x31 
 a31 a32 a33 . . . a3n  ·   = 0
  
   . .. 
. . . . . . . . . . . . . . . . . . . . . . . . . . .  .  
 
   .   .

an1 an2 an3 . . . ann xn1 0

una por cada columna de la matriz X = A−1 . Como la descomposición LU, se hace de una vez por
todas, podemos usar esta descomposición para resolver los diferentes sistemas de ecuaciones en las
que va variando el término independiente correspondiendo este término con cada una de las colum-
nas de la matriz identidad. Esto es, para obtener la primera columna de la matriz inversa, usamos
como términos independientes la primera columna de la matriz identidad, para obtener la segunda
columna se usa la segunda columna de la matriz identidad y así sucesivamente.
3.6 Matrices tridiagonales 39

3.6. Matrices tridiagonales

Un caso especial de la resolución de sistemas de ecuaciones, pero que ocurre con cierta facilidad,
es aquel en el que la matriz de coeficientes A es una matriz tridiagonal con una forma dada por la
expresión
 
a11 a12 0 0 ... 0
 
a21 a22 a23 0 ... 0 
 
A =  0 a32 a33 a34 ... 0 
 
 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
 
0 0 0 0 an−1,n ann

donde únicamente son distinto de cero los elementos de la diagonal principal y los elementos que es-
tán justo por encima y debajo de la diagonal principal. Formemos una matriz A0 de cuatro columnas,
donde la primera columna contiene la diagonal inferior, la segunda columna la diagonal principal, la
tercera la diagonal superior y la cuarta el término independiente. Como la diagonal inferior y supe-
rior tienen n − 1 elementos, rellenamos por un número cualquiera. Este número se coloca en la fila
uno en el caso de la diagonal inferior y en la fila n en el caso de la diagonal superior. Tendremos
 
α a11 a12 b1
 
 a21 a22 a23 b2 
 
A0 =  a32 a33 a34 b3 
 
 
. . . . . . . . . . . . . . . . . . . . . . . .
 
an−1,n ann β bn

Apliquemos el método de descomposición de Gauss a la matriz A y reflejemos el resultado en la matriz


A0 . Como hemos visto antes, en el método de eliminación gaussiano vamos eliminando las ecuacio-
nes en la diagonal inferior, como en este caso sólo hay un termino de la diagonal inferior el proceso
de eliminación se reduce a una única ecuación. Para ver como funcional el método sobre la matriz
A, apliquemos el método (sin pivoteo) de Gauss, para ello dividamos por a11 la primera fila, multipli-
quemos por a21 y restamos, tendremos
   
a11 a12 0 0 ... 0 a11 a12 0 0 ... 0
0
   
 0 a22 − (a12 /a11 ) · a21 a23 0 ... 0    0 a22 a23 0 ... 0 

 
A1 =  0 a32 a33 a34 ... 0  =  0 a32 a33 a34 ... 0 
   
   
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
   
0 0 0 0 an−1,n ann 0 0 0 0 an−1,n ann
40 Capítulo – 3. Solución de sistemas lineales

donde vemos que sólo se ha modificado el termino de la diagonal principal, el termino que esta enci-
ma de la diagonal principal no se ve modificado pues el termino que tiene encima es nulo. Eliminan-
do ahora la tercera fila, tendremos de la misma forma
   
a11 a12 0 0 ... 0 a11 a12 0 0 ... 0
 0 a0 0
   
 22 a23 0 ... 0    0 a22 a23 0
 ... 0  
A2 =  0 0 0
0 a33 − (a23 /a22 )a32 a34 ... 0 = 0 0 a33 a34 ... 0 
   
   
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
   
0 0 0 0 an−1,n ann 0 0 0 0 an−1,n ann

Vemos pues que sólo se modifican los términos de la diagonal principal, los términos que están por
debajo se van anulando (eliminación gaussiana) y los que están por encima se quedan tal cual. Se
puede ver que el i-eximo elemento de la diagonal principal se modifica de la siguiente manera

ai −1,i
ai i → ai0 i = ai i − ai ,i −1
ai −1,i −1

el termino independiente se ve modificado de la misma forma,

bi −1
bi → bi0 = bi − ai ,i −1
ai −1,i −1

Como se reflejan estos cambios en la matriz de 4 columnas. La primera y tercera no se tocan, solo
cambian la segunda y la cuarta. Para la segunda columna, que refleja los cambios en la diagonal
principal, tendremos
0 ak−1,3
ak,2 = ak,2 − ak,1 , k = 2, 3, . . . , n (3.17)
ak−1,2
Para la cuarta columna que refleja los cambios en el termino independiente tendremos

0 ak−1,4
ak,4 = ak,4 − ak,1 , k = 2, 3, . . . , n (3.18)
ak−1,2

De acuerdo con el método de Gauss, ahora, una vez eliminadas los términos que están por debajo de
la diagonal principal, se van despejando las incógnitas, empezando por la n-exima. ¿Cómo se refleja
3.7 Métodos iterativos 41

esto en la matriz de cuatro columnas?. Se puede ver fácilmente que

0
an,4
xn = 0 (3.19)
an,2
0 0
ak,4 − ak,3 · xk+1
xk = 0 , k = n − 1, n − 2, . . . , 1 (3.20)
ak,2

Podemos resumir el proceso de la siguiente manera. Dada la matriz tridiagonal A, formemos una ma-
triz de cuatro columnas de acuerdo a lo dicho antes, apliquemos ahora a esta matriz las ecuaciones
3.17 a 3.20 y tendremos la solución buscada. A la hora de programar el método, todo el proceso ante-
0 0
rior se puede realizar in situ, esto es se sustituye ak,2 , ak,4 por ak,2 , ak,4 en la misma matriz y los mismo
pasa a la hora de calcular las raíces xk que se hace directamente en la cuarta columna. De tal forma
que al comienzo la cuarta columna contiene el término independiente y cuando concluye el proceso
contiene la solución, en téminos de la cuarta columna las anteriores expresiones 3.19 y 3.20 toman la
forma
0
0
an,4
an,4 = 0 (3.21)
an,2
0 0 0
ak,4 − ak,3 · ak+1,4
0
ak,4 = 0 , k = n − 1, n − 2, . . . , 1 (3.22)
ak,2

3.7. Métodos iterativos

Los métodos presentados hasta el momento se pueden considerar como ’casi exactos’, salvo el
error cometido en el proceso de redondeo. Sin embargo el proceso de eliminación y posterior eva-
luación de las incógnitas puede ser muy laborioso si el número de ecuaciones a resolver se hace muy
grande (se puede demostrar que el número de multiplicaciones y divisiones en la descomposición
LU es del orden de N 3 /3, siendo N el orden del sistema), en estas condiciones es posible acudir a un
método de tipo iterativo. Existen diversos métodos, nosotros comentaremos sólo tres. Suponed que
se tiene el sistema
A·x = b

Podemos escribirlo de la siguiente manera

M · x = (M − A) · x + b
42 Capítulo – 3. Solución de sistemas lineales

siendo M una matriz invertible de orden n y ahora usar la anterior ecuación para escribir nuestro
método iterativo
M · xk+1 = (M − A) · xk + b

dependiendo de lo que valga la matriz M, así tendremos uno u otro método.


Sea e k el error cometido en el paso k, esto es e k = xk − x, se puede ver (sin mas que restar las dos
ecuaciones anteriores) que
e k+1 = M −1 · (M − A) · e k = G · e k

Si los módulos de los autovalores de G son menores que la unidad, entonces el método anterior con-
verge a la solución al aumentar el índice k.
Suponed que llamamos, D a la diagonal principal de A, −F a la matriz que se forma con los ele-
mentos que están por encima de la diagonal principal (el resto ceros) y −E la que se forma con los
elementos que están por debajo de la diagonal principal, también cambiados de signo, el resto cero.
Obviamente D − E − F = A

3.7.1. Método de Jacobi

En este caso vamos a usar como matriz M = D la diagonal principal, se tiene

D · xk+1 = (E + F ) · xk + b

En el miembro de la derecha E + F representa a la matriz −A sin la diagonal principal, por lo que


podemos escribir, sin mas que despejar,
à !
jX
=N
1
xi(n+1) = bi − (n)
ai j x j
ai i j =1( j 6=i )

Desde el punto de vista del cálculo por el ordenador podemos poner esta ecuación como

Ri(n)
à !
1 N
(n+1) (n) (n) (n)
X
xi = xi + bi − ai j x j = xi + (3.23)
ai i j =1 ai i

siendo xi(n) el valor de la incógnita xi en la interacción n y

N
Ri(n) = bi − ai j x (n)
X
j
j =1
3.7 Métodos iterativos 43

Se parte entonces de un valor inicial xi0 para cada incógnita y mediante la ecuación 3.23 se van obte-
niendo los nuevos valores de las incógnitas. Se supone que el proceso se para cuando al longitud del
vector de error r
en = (x (n+1) − x (n)
X
j j
)2

es menor que una cierta cantidad, o bien si se han superado un número n0 de iteraciones.

3.7.2. Método de Gauss-Seidel

Es un método muy popular, en este caso se supone que M = D − E que corresponde con tomar la
diagonal principal y su parte inferior, se tiene entonces que

(D − E) · xk+1 = F xk + b

o bien en forma que permita hacer los cálculos

R (n)
à !
1 iX−1 N
xi(n+1) = xi(n) + (n+1) (n)
= xi(n) + i
X
bi − ai j x j − ai j x j (3.24)
ai i j =1 j =i ai i

En la anterior ecuación, en el miembro de la derecha aparece el factor x (n+1)


j
que es el valor que
toma la variable en el paso n + 1, que es el que estamos tratando de calcular, sien embargo cuando
queramos evaluar la i − exi ma variable xi en su paso n + 1, ya se conocen los valores en el paso n + 1
de las variables x1 , x2 , . . . , xi −1 , por lo que ya los tenemos disponibles y no hay ningún problema. El
problema se puede presentar con la variable x1 , sin embargo dado que el sumatorio va desde j=1
hasta j=i-1, si i =1, en este caso el término no aparece, por lo que usar la expresión (3.24 )equivale a
usar la expresión à !
1 N
x1(n+1) = x1(n) + (n)
X
b1 − a1 j x j (3.25)
a11 j =1

que si nos fijamos un poquito más se puede usar para evaluar el resto de incógnitas sin más que
sustituir el 1 por la i ( ¿qué diferencia hay entonces entre usar (3.25) y (3.23) cuando en vez de aparece
un 1 aparece una i , se verá en las clases prácticas).

3.7.3. El método de sobre-relajación sucesiva (SOR)

Es una modificación del método de Gauss-Seidel en donde se introduce un cierto peso w, en este
caso
M = w −1 D − E
44 Capítulo – 3. Solución de sistemas lineales

obteniendose para el proceso iterativo la ecuación

(D − wE) · xk+1 = (wF + (1 − w)D) · xk + wb

y en modo operativo

Ri(n)
à !
1 iX
−1 N
xi(n+1) = xi(n) + w ai j x (n+1) ai j x (n) = xi(n) + w
X
bi − j
− j
(3.26)
ai i j =1 j =i ai i

Si w = 1 se obtiene el método de Gauss-Seidel. Si 0 < w < 1 se dice que el sistema esta sub-relajado y
si 1 < w < 2 se dice que esta sobre-relajado. No existe a priori ningún método que nos diga si es mejor
usar un método sobre o sub relajado.

3.8. Condición de una matriz

Hay situaciones en las que debido a los errores de redondeo si la matriz de coeficientes es casi
singular, las soluciones encontradas pueden ser muy diferentes a las soluciones buscadas. Es por esta
razón que se debe vigilar la singularidad de la matriz. Una forma de verlo es mediante el pivotamiento,
si el pivot no alcanza un valor ‘grande’, o lo que es lo mismo si es muy pequeño tenemos razones para
pensar que la matriz es casi singular y debemos de acabar nuestro proceso. Para determinar el grado
de singularidad de una matriz se define el “número de condición”, definido mediante la expresión

Cond(A) = ||A|| · ||A||−1

Unos números muy elevados del número de condición nos indicaría que el sistema está mal condi-
cionado y en estas condiciones pequeñas variaciones en los datos pueden producir grandes variacio-
nes en los resultados por lo que la solución del sistema es propensa a grandes errores de redondeo.
Existen varias medidas de la norma de una matriz, las más usuales son
qX
||A||e = ai2j , Norma de Frobenious
iX
=n
||A||1 = max |ai j | Máximo suma columnas
i =1
jX
=n
||A||∞ = max |ai j | Máximo suma fila
j =1
p
||A||2 = (maximo del módulo de los autovales de A) Norma euclidea
3.9 Apendice: Permutaciones 45

El problema que presenta esta definición del ’número de condición’ es que se necesita evaluar la
inversa, lo que requiere usar alguno de los métodos anteriormente expuestos.

3.9. Apendice: Permutaciones

Sea A = {1, 2, . . . , n} el conjunto de n números naturales entre 1 y n ordenados de forma creciente.


La aplicación biyectiva π que nos lleva del conjunto A al mismo conjunto A tal que π(i ) = j se dice que
es una permutación. Se supone obviamente que la aplicación es uno a uno e inyectiva. Exiten varias
maneras de representar una permutación. Una de ellas es mediante matrices 2× n en donde en la fila
1 se representa la sucesión creciente 1, 2, . . . , n y la segunda fila nos da el resultado de la permutación.
Llamando πi el resultado de aplicar la permutación π al número natural i , se tiene que
à !
1 2 ... n
π=
π1 , π2 , . . . πn

Otra manera de representar la permutación es mediante una matriz de permutación. Una matriz de
permutación es una matriz cuadrada de dimension n × n cuyos elementos son ceros y unos. En cada
fila solo puede haber un 1, el resto son ceros y lo mismo se puede decir de cada columna. Si en la
i-exima fila aparece el 1 en la j-exima columna nos indica que π( j ) = i . Así por ejemplo la matriz
 
0 1 0
 
P =
1 0 0 

0 0 1

es la matriz de permutación que nos lleva el 1 al 2, el 2 al 1 y el 3 nos lo deja como está, esto es es la
permutación
à !
1 2 3
π=
2, 1, 3

Se puede ver que P tiene como propiedades que su transpuesta coincide con su inversa, esto es P T =
P −1 , por lo que P T P = I. Como el determinante de un producto de matrices es igual al producto de
determinantes y el determinante de la transpuesta de P es el determinante de P se tiene Det(P T P) =
(Det(P))2 = 1 por lo que Det(P) = ±1.
46 Capítulo – 3. Solución de sistemas lineales

3.9.1. Inversion

Sea π una permutación diremos que el par (i , j ) es una inversion si siendo i < j se tiene que
π(i ) > π( j ). Asi por ejemplo si se tiene la permutación
à !
1 2 3
π=
3, 1, 2

se tiene que el par (1,2) es una inversion y el par (1,3) es también una inversion. El par (2,3) no es una
inversion. Si el numero de inversiones de π es par se tiene que la inversion es par y si el numero de
inversiones es impar se tiene que la inversión es impar. Se define el signo de π como

Sign(π) = (−1)numero de inversiones

Se puede ver que si se tiene un producto de dos permutaciones π · σ, el signo del producto es el
producto de los signos,
Sign(π · σ) = Sign(π)Sign(σ)

3.9.2. Transposición

Sea π la permutación que solo intercambia los elementos i , j , de la sucesión 1, 2, . . . , n, esto es


à !
1 2 ... i ... j ... n
π=
1 2 ... j ... i ... n

Se dice que π es una transposición π = ti j . Se puede ver que el numero de inversiones en una trans-
posición del par (i , j ), i < j es igual a 2 ∗ ( j − i ) − 1 por lo que el numero de inversiones en una trans-
posición es impar. Por lo tanto el signo de una transposición es negativo

Sign(ti j ) = −1

Si una permutación constituye un numero par de transposiciones la permutación es par y tiene signo
positivo y si el número es impar la permutación es impar y el signo negativo. El signo del determinante
de la matriz de permutación P es el signo de la permutación. Esto es el Det(P) = +1 si la permutación
es par y Det(P) = −1 si es impar. Para ver pues el signo del determiante de P solo tenemos que contar
el numero de transposiciones, si son pares es positivo y en caso contrario negativo.
Capítulo 4

Interpolación

4.1. Introducción

En muchas ocasiones, sobre todo en física e ingeniería, es posible que necesitemos evaluar una
función en un cierto punto sin que conozcamos de forma explícita la expresión de la función, sin
embargo si que conocemos el valor de la función en una serie de puntos, obviamente diferentes del
punto o puntos donde queremos conocer la función. Este problema no es en general fácil de resolver y
tiene por tanto interés encontrar un método que nos permit aproximar una función arbitraria por otra
más fácil de evaluar. En este curso vamos a usar un polinomio de grado apropiado para aproximar
dicha función y tratar de evaluar el valor de la misma en el punto o puntos donde no es conocida.

4.2. Interpolación por funciones polinómicas

No existe una manera única de aproximar una función, desconocida de forma explícita, para eva-
luarla en una serie de puntos donde su valor es desconocido. En este curso, nosotros vamos a usar
únicamente polinomios, pero es posible usar otro tipo de funciones. Así se tiene, por ejemplo, el desa-
rrollo en serie de Fourier, en este caso se hace un desarrollo en términos de senos y coseno. Otro tipo
muy común de aproximación es la expansión en términos de funciones exponenciales.
Hay dos maneras de hacer la aproximación, una ‘exacta’ en la que el polinomio interpolante (se
supone que vamos a usar la aproximación polinómica) pasa por los puntos en donde la función es
conocida. La segunda es aquella en la que la función aproximada no pasa necesariamente por los
punto originales, esto dará pié, por ejemplo, al método de mínimos cuadrados.
48 Capítulo – 4. Interpolación

4.2.1. Algunas propiedades de los polinomios

Sea f (x) una función continua en un cierto intervalo (a, b), existe entonces un polinomio Pn (x) =
a0 + a1 x + a2 x 2 + . . . , an x n de grado n(²) tal que para todo x ∈ (a, b) se tiene que | f (x) − Pn (x)| ≤ ², sien
o ² una cantidad prefijada de antemano y tan pequeña como se quiera (Teorema de Weierstrass)
Por otra parte existe un teorema de existencia y unicidad, que dice que dado un conjunto de n +1
puntos de R 2 , (x0 , y0 ), (x1 , y1 ), . . . , (xn , yn ) cuyas abscisas xi son diferentes y ordenadas yI arbitrarias
sólo existe un polinomio Pn de grado menor o igual que n que pase por ellos, esto es yi = Pn (xi ). O sea
que si nos dan un conjunto de puntos y encontramos un cierto polinomio de grado igual o menor al
numero de puntos menos 1, cualquier otro que tratemos de encontrar va a ser igual al encontrado en
la primera ocasión. Con lo cual basta que encontremos uno, no hace falta que sigamos buscando, no
es necesario. Si el conjunto de ordenadas son los valores de una cierta función yi = f (xi ), el polinomio
Pn es el polinomio interpolante de f (x).
Dado un conjunto de n + 1 puntos (xi , f (xi )) siempre podemos encontrar un polinomio de grado
menor o igual n que pase por ellos. Para un punto x distinto del conjunto anterior de puntos se puede
demostrar que el error cometido tiene la forma

1
Error(x) = (x − x0 )(x − x1 ) . . . (x − xn ) f (n+1) (ξ), x0 ≤ ξ ≤ x n
(n + 1)!

indicando con f (n+1) la n + 1 derivada de la función f (x) (siempre y cuando exista). Se supone que
x0 < x1 , . . . < xn y que x está en el intervalo x0 , xn

4.3. Métodos de aproximación polinómica

Existen diversas maneras de encontrar un polinomio de grado menor o igual a n que pase por el
conjunto de puntos (x0 , y0 ), (x1 , y1 ), . . . , (xn , yn ). Aquí sólo expondremos algunas de ellas.

4.3.1. Solución directa

Una manera de expresar el polinomio interpolador es

Pn (x) = a0 + a1 x + a2 x 2 + . . . + an x n

y la manera de encontrar los coeficientes ai es mediante la solución directa del sistema de ecuaciones
lineales que se forma exigiendo que el polinomio interpolante Pn (x) pase por el conjunto de puntos
4.3 Métodos de aproximación polinómica 49

(x0 , y0 ), (x1 , y1 ), . . . , (xn , yn ),

a0 + a1 x0 + . . . an x0n = y0
... = ...
a0 + a1 xn + . . . an xnn = yn

en forma matricial escribiríamos


     
1 x0 x02 . . . x0n a y
   0  0
1 x 2 n 
1 x1 . . . x1   a1   y1   
·  =   (4.1)
 

. . . . . . . . . . . . . . . . . . . . .  . . .   . . . 
     
2 n
1 xn xn . . . xn an yn

El coeficiente matricial es una matriz de Vandermonde. Es no singular pues como hemos dicho an-
tes, si los puntos xi son diferentes hay un única polinomio de grado menor o igual que n que pase
por ellos. Resolviendo el sistema se calculan los coeficientes ai . El método es sencillo y rápido si el
número de puntos es pequeño, pero si el número de puntos es elevado el método es lento y propenso
a errores pues con frecuencia las matrices de Vandermonde están mal condicionadas (recordad el
número de condición del tema anterior)

4.3.2. Polinomios de Lagrange

Otra manera de encontrar un polinomio interpolación es mediante el uso de los polinomio au-
xiliares de Lagrange, en este caso se tiene que el polinomio de grado n que pasa por el conjunto de
n + 1 puntos (x0 , y0 ), (x1 , y1 ), . . . , (xn , yn ) tiene la forma

Pn (x) = y0 `0 (x) + y1 `1 (x) + . . . + yn `n (x)

siendo `k (x) los polinomios auxiliares de Lagrange definidos mediante la expresión

(x − x0 )(x − x1 ) · · · (x − xk−1 )(x − xk+1 ) · · · (x − xn )


`k (x) =
(xk − x0 ) · · · (xk − xk−1 )(xk − xk+1 ) · · · (xk − xn )

de tal forma que para x = xk , `k (xk ) = 1. En forma mas explicita tendríamos para Pn (x) la expresión

(x − x1 )(x − x2 ) · · · (x − xn ) (x − x0 )(x − x2 ) · · · (x − xn ) (x − x0 )(x − x1 ) · · · (x − xn−1 )


Pn (x) = y0 + y1 +· · · yn
(x0 − x1 )(x0 − x2 ) · · · (x0 − xn ) (x1 − x0 )(x1 − x2 ) · · · (x1 − xn ) (xn − x0 )(xn − x1 ) · · · (xn − xn−1 )
(4.2)
50 Capítulo – 4. Interpolación

Es fácil de ver que el anterior polinomio pasa por los puntos {x0 , y0 }, {x1 , y1 }, . . . , {xn , yn } por lo que
como el polinomio es único, nos da el polinomio de grado n que pasa por los n + 1 puntos. ¿Como
podemos determinar este polinomio de una manera eficaz?. Existen varios algoritmos, una de los mas
utilizados es el algoritmo de Neville que es el que usaremos nosotros en las clases prácticas. Vamos a ir
viendo paso a paso en que se basa el algoritmo. Antes de describir el algoritmo, una cosa importante
que conviene tener en cuenta es que el algoritmo de Neville no nos da el Polinomio Interpolante si
no el valor interpolado. Consideremos el cuadro 4.1, donde {xi , yi } es el conjunto de puntos inicial,

x0 y 0 = P0
P01
x1 y 1 = P1 P012
P12 P0123
x2 y 2 = P2 P123
P23
x3 y 3 = P3

Cuadro 4.1

a partir de ahí construimos interpolaciones lineales, P01 es la interpolación lineal entre x0 y x1 , P12
la interpolación usando los puntos 1, 2 y así sucesivamente. Vemos como quedan en unos pocos de
casos,

x − x1 x − x0 (x − x0 )P1 − (x − x1 )P0
P01 = P0 + P1 =
x0 − x1 x1 − x 0 x1 − x0
x − x2 x − x1 (x − x1 )P2 − (x − x2 )P1
P12 = P1 + P2 =
x1 − x2 x2 − x 1 x2 − x1
x − x3 x − x2 (x − x2 )P3 − (x − x3 )P2
P23 = P2 + P3 =
x2 − x3 x3 − x 2 x3 − x1

Una vez evaluados Pi (i +1) , i = 0, 1, . . ., podemos evaluar los polinomios en la siguiente interpolación
lineal,

(x − x0 )P12 − (x − x2 )P01
P012 =
x2 − x 0
(x − x1 )P23 − (x − x3 )P12
P123 =
x3 − x 1

de forma similar se evalúan los siguientes términos Pi (i +1)(i +2) , i = 2, 3, . . .. Para el caso que nos apare-
ce en el cuadro 4.1, donde tenemos 4 puntos, el último término a evaluar es el P0123 , que se obtiene a
4.3 Métodos de aproximación polinómica 51

partir de los dos últimos polinomios

(x − x0 )P123 − (x − x3 )P012
P0123 =
x 3 − x0

El valor de P013 contiene el valor interpolado en el punto x usando los 4 puntos {xi , yi }, i = 0, 1, 2, 3. De
forma genérica podemos escribir los anteriores polinomios como

(x − xi )P(i +1)(i +2)...,(i +k) − (x − xi +k )Pi (i +1)(i +2)...(i +k−1)


Pi (i +1)(i +2)...(i +k) = (4.3)
xi +k − xi

Hay varias maneras de implementar la fórmula 4.3, ver por ejemplo el libro de Bulirsch, en este caso
voy a mostrar una encontrada en internet. Sean {xi , yi } el conjunto de puntos a interpolar, los pasos
son los siguientes

1. llamad p(i ) = y(i ) i = 1, n + 1, siendo n el orden de la interpolación

2. Desde i = n, 1 y desde j = 1, i hacer

3.
p( j ) = (x − x( j ))p( j + 1) − (x − x( j + n + 1 − i ))p( j )

4.
p( j ) = p( j )/(x( j + n + 1 − i ) − x( j ))

5. La respuesta está en p(1)

Otra manera de poner en practica el anterior algoritmo es evaluar el cuadro 4.1, teniendo en cuen-
ta que cada columna se obtiene a partir de la columna anterior mediante la expresión 4.3 que pode-
mos darle una forma más simple de poner en un ordenador de la siguiente manera

(x − xi )P[i + 1, k − 1] − (x − xi +k )P[i , k − 1]
P[i , k] = (4.4)
xi +k − xi

en la que para la columna inicial (que podemos poner como columna 0) se tiene que P[i , 0] = f (xi ) =
yi . Según podemos ver del cuadro 4.1, al pasar de una columna a la siguiente, el número de filas que
tenemos que calcular es una unidad menor.
52 Capítulo – 4. Interpolación

4.3.3. Polinomios de Newton

Otra forma del polinomio interpolado es el polinomio de Newton, en este caso

n
X
Pn (x) = c0 + c1 (x − x0 ) + c2 (x − x0 )(x − x1 ) + . . . + cn (x − x0 )(x − x1 ) · · · (x − xn−1 ) = ci qi (x)
i =0

con qi (x) = (x−x0 )(x−x1 ) · · · (x−xi −1 ). El problema que surge ahora es la evaluación de los coeficientes
ci . Un método muy eficiente es el de las diferencias dividida. Este método resuelve de forma eficaz el
sistema de ecuaciones
P(xi ) = yi

que se forma cuando queremos que el polinomio interpolante pase por los n puntos {xi , yi }. Sustitu-
yendo P por su expresión en forma de polinomio de Newton,

n
X
ci qi (x j ) = y j = f (x j )
i =0

supongo que los puntos y j corresponden con el valor de una cierta función (para nosotros descono-
cida) en el punto x j . La anterior ecuación corresponde con un sistema lineal cuyas incognitas son los
coeficientes ci y los coeficientes con el valor de qi (x) en el punto x j . Se puede ver que estos coeficien-
tes forman una matriz triangular inferior. Lo podemos ver, por ejemplo, si tuviésemos tres puntos, en
este caso tendríamos un polinomio de grado dos: P2 (x) = c0 + c1 (x − x0 ) + c2 (x − x0 )(x − x1 ). Hacien-
do ahora que P2 (x) tome valores en los puntos x0 , x1 y x2 e igualando a los valores de y0 = f (x0 ), y1 =
f (x1 ), y2 = f (x2 ) tendríamos el sistema
     
1 0 0 c0 f (x0 )
     
1 (x1 − x0 ) 0  · c1  =  f (x1 )
     
1 (x2 − x0 ) (x2 − x0 )(x2 − x1 ) c2 f (x2 )

que es fácil de resolver empezando por c0 y continuando con c1 , etc. En este proceso, c0 , solo depende
de f (x0 ), c1 depende de f (x0 ) y f (x1 ) y así sucesivamente. Así se tiene que cn depende de los valores
que tome f (x) en los puntos x0 , x1 , . . . , xn . Llamemos f [x0 , x1 , . . . , xn ] a este valor, esto es,

cn = f [x0 , x1 , . . . , xn ]

esta cantidad recibe el nombre de diferencia divida de orden n. Por construcción esta cantidad es el
coeficiente de x n en el polinomio interpolante de la forma Pn (x) = a0 + a1 x + . . . + an x n . ¿Como se
4.3 Métodos de aproximación polinómica 53

pueden construir estas diferencias de forma eficaz?. Pues la idea es construir una tabla de la forma
 
x0 f [x0 ] f [x0 , x1 ] f [x0 , x1 , x2 ] f [x0 , x1 , x2 , x3 ]
 
x f [x1 ] f [x1 , x2 ] f [x1 , x2 , x3 ] 
 1 
 
 x2 f [x2 ] f [x2 , x3 ] 
 
x3 f [x3 ]

siendo f [xi ] = f (xi ),


f [x1 ] − f [x0 ]
f [x0 , x1 ] =
x 1 − x0
y
f [x1 , x2 ] − f [x0 , x1 ]
f [x0 , x1 , x2 ] =
x 2 − x0
y así sucesivamente. En general tendremos

f [x1 , . . . , xn ] − f [x0 , x1 , . . . , xn−1 ]


f [x0 , x1 , . . . , xn ] =
x n − x0

La manera de construirlos es empezar llamando f [xi ] = f (xi ). Con los elementos i , i + 1 de esta co-
lumna se construye el elemento i de la siguiente columna sin mas que restarlos y dividir por xi −xi −1 .
Reiterando este proceso a lo largo de las siguientes columnas se llaga hasta el último elemento. La
primera fila de la tabla anteriormente mostrada nos dará los coeficientes ci que andamos buscando.

Puntos equiespaciados: Polinomios de Newton-Gregory.

Un caso especial del anterior método de Polinomios de Newton se presenta cuando los puntos
están equiespaciados, en este caso se obtienen los polinomios de Newton-Gregory. Vamos a suponer
que tenemos una serie de punto equi–espaciados x0 , x1 , . . . , xn y que conocemos el valor de la función
en dichos puntos f (x0 ), f (x1 ), . . . , f (xn ). Vamos a definir dos operadores, el operador ∆ y el operador
∇. El operador ∆ u operador diferencia hacia adelante viene dado por la expresión

∆ fi = f (xi +1 ) − f (xi )

Mientras que el operador ∇ es el operador diferencia hacia atrás

∇ fi = f (xi ) − f (xi −1 )
54 Capítulo – 4. Interpolación

Podemos usar estos operadores repetidamente, así se tiene

∆2 fi = ∆(∆ fi ) = ∆( f (xi +1 ) − f (xi )) = ∆ f (xi +1 ) − ∆ f (xi ) = f (xi +2 ) − 2 f (xi +1 ) + f (xi )

o
∇2 fi = ∇(∇ fi ) = ∇( f (xi ) − f (xi −1 )) = ∇ f (xi ) − ∇ f (xi −1 ) = f (xi ) − 2 f (xi −1 ) + f (xi −2 )

Podemos proseguir aplicando estos operadores de forma sucesiva, se puede ver fácilmente que para
orden n, se tiene que

n(n − 1) n(n − 1)(n − 2)


∆n f (xi ) = f (xi +n ) − n f (xi +n−1 ) + f (xi +n−2 ) − f (xi +n−3 ) + · · ·
2! 3!

donde los coeficientes que aparecen en el desarrollo son los coeficientes de la expansión binomial.
¿Qué pasa si la función f (x) es un polinomio de grado n?. En este caso se tiene que

∆ f = ∆Pn (x) = Pn (x + h) − Pn (x) = an x n−1 h + términos enx n−2

siendo h la separación entre los puntos xi (que es constante por hipótesis) Si ahora calculamos de
nuevo el ∆, tendremos

∆2 f = ∆(an x n−1 h + términos enx n−2 ) = an n(n − 1)h 2 x n−2 + términos enx n−3

Si proseguimos con nuestro proceso se puede ver que

∆n f = an n!h n

y
∆n+1 f = 0

Esto nos indica que si al aplicar n veces a una función la operación ∆ se obtiene una constante y al
aplicarlo n+1 veces se obtiene cero o próximo a cero, la función f (x) se comporta como un polinomio
de grado n.

Se puede demostrar que la n-exima diferencia dividida vale

∆n f (x0 )
f [x0 , x1 , . . . , xn ] =
n!h n

por lo que el polinomio de Newton toma la forma


4.3 Métodos de aproximación polinómica 55

s(s − 1) 2 s(s − 1)(s − 2) 3 s(s − 1)(s − 2) · · · (s − n + 1) n


P(x) = f0 + s∆ f0 + ∆ f0 + ∆ f0 + · · · + ∆ f0 (4.5)
2! 3! n!

siendo
x − x0 x − x0
s= =
∆x h
Se puede usar de forma similar polinomios construidos con la diferencia hacia atrás, en este caso

s(s + 1) 2 s(s + 1)(s + 2) 3 s(s + 1)(s + 2) · · · (s + (n − 1)) n


P(x) = f0 + s∇ f0 + ∇ f0 + ∇ f0 + · · · + ∇ f0 (4.6)
2! 3! n!

siendo s como antes


x − x0
s=
h

Errores

Vimos anteriormente que cuando se aproxima una función f (x) por un polinomio de grado n el
error cometido está acotado por la expresión

1
Error(x) = (x − x0 )(x − x1 ) . . . (x − xn ) f (n+1) (ξ), x0 ≤ ξ ≤ x n
(n + 1)!

De acuerdo con nuestra notación hemos llamado x = x0 + sh, de tal forma que x − x0 = sh, x − x1 =
xx 0 + x0 − x1 = sh − h = (s − 1)h, x − x2 = (s − 2)h y así sucesivamente de tal forma que

1
Error(x) = h n+1 s(s − 1)(s − 2)(s − n) f (n+1) (ξ), x0 ≤ ξ ≤ x n
(n + 1)!

Podemos tratar de estimar la derivada f (n+1) mediante la n + 1 diferencia, y así podemos escribir

h n+1 f (n+1) (ξ) ≈ ∆n+1 f0

por lo que la cota de error se puede estimar mediante la expresión

1
Error(x) = s(s − 1)(s − 2)(s − n)∆n+1 f0 , x = x0 + hs (4.7)
(n + 1)!

Si se usa el polinomio de Newton-Gregory hacia atrás se puede ver que el error vale

1
Error(x) = s(s + 1)(s + 2)(s + n)∇n+1 f0 , x = x0 + hs (4.8)
(n + 1)!
56 Capítulo – 4. Interpolación

4.4. Splines o cerchas cúbicas

Cuando se quiere interpolar una función en muchos puntos, en vez de usar un único polinomio
para todos los puntos interesa usar varios polinomios de grado más pequeño ajustados a trozos y
convenientemente "bien pegados". Un método muy usual es usar polinomios de grado 3, que se de-
nominan cerchas o splines. La idea de usar polinomios de grado 3 es porque vamos a exigir un cierto
grado de ’lisura’ en los puntos donde los polinomios se unen, exigiendo que tanto los polinomios
como sus derivadas hasta segundo orden sean continuas en las uniones.
Efectivamente, el método más simple de unir una serie puntos mediante un conjunto de polino-
mios es mediante una interpolación lineal entre cada dos puntos cualesquiera.

x j +1 − x x − xj
P1 (x) = yj + y j +1 = A(x)y j + B(x)y j +1
x j +1 − x j x j +1 − x j

Mientras que la función que se obtiene al unir estos segmentos, es continua en los nodos, la primera
derivada deja de serlo, y la segunda derivada está indefinida. Como pretendemos que tanto la función
como la primera derivada que surgían de la union de los diferentes polinomios sean continuas (y con
derivadas continuas), una manera de hacerlo es deformar los segmentos anteriores de tal forma que
enlacen con continuidad en los nodos (ellos y sus derivadas). Vamos a añadir a la anterior expresión
nuevos términos para conseguir la continuidad deseada

P(x) = A(x)y j + B(x)y j +1 +C (x)y j00 + D(x)y j00+1 (4.9)

Puesto que queremos que en los nodos P(x j ) = y j , los nuevos términos tienen que verificar que

1 3
C (x) = (A − A)(x j +1 − x j )2 (4.10)
6
1 3
D(x) = (B − B)(x j +1 − x j )2 (4.11)
6

Como vemos C (x)yD(x), dependen de A3 y por tanto son polinomios de grado 3 en x. El problema que
surge ahora es que desconocemos y j00 . Para poder tratar de estimarla, vamos a imponer la continuidad
de las derivadas de P(x) en los nodos, obteniendo el sistema siguiente

x j − x j −1 x j +1 − x j −1 x j +1 − x j y j +1 − y j y j − y j −1
y j00−1 + y j00 + y j00+1 = − , j = 2, . . . N − 1 (4.12)
6 3 6 x j +1 − x j x j − x j −1

tenemos pues N −2 ecuaciones (una por cada punto interior) para obtener N derivadas y 00 . Necesita-
mos dos ecuaciones adicionales. Una manera de cerrar el sistema es suponer que en los bordes y 00 se
4.4 Splines o cerchas cúbicas 57

anula (se habla entonces de esplines cúbicos naturales). Otra posibilidad es fijar las derivadas en los
puntos inicial y final. De cualquiera de las formas en las que se cierre el sistema, el conjunto de ecua-
ciones 4.12, tiene la forma de un sistema de ecuaciones tridiagonal, una vez resuelto este sistema, se
tienen conocidos todos los términos para poder evaluar el polinomio en el punto x donde queremos
realizar la interpolación. Formalmente hablando el problema del ajuste de n cerchas a n + 1 puntos
requiere encontrar 4 ∗ n coeficientes (cada polinomio de orden 3 requiere conocer 4 coeficientes).
Puesto que estamos imponiendo que deben de pasar por los n +1 puntos que tenemos, esto nos pro-
porciona n + 1 condiciones. La imposición de que las cerchas y sus derivadas hasta segundo orden
sean continuas en los puntos internos proporcionan 3(n − 1) condiciones, por lo que el número de
incógnitas supera en 4∗ n −(n +1+3∗(n −1) = 2 al número de ecuaciones. Necesitamos imponer dos
condiciones adicionales, que es lo que hemos hecho cuando se ha supuesto que y 00 se anula en los
extremos.
58 Capítulo – 4. Interpolación
Capítulo 5

Derivación e Integración numéricas

5.1. Introducción

Como su nombre indica en este capítulo aprenderemos algunas técnicas de derivación e integra-
ción de funciones. Empezaremos estudiando las técnicas de derivación de una función de una sola
variable, f (x) para ver ligeramente como podemos extender nuestras técnicas al caso de varias va-
riables. Pasaremos a continuación a describir varios métodos de integración. Antes de empezar es
interesante recordar el teorema de Taylor ya descrito en el capítulo 1. Bajo la condición de que una
función sea suficientemente lisa se tiene que

1 (2) 1 1
f (x) = f (x0 ) + f 0 (x0 )(x − x0 ) + f (x0 )(x − x0 )2 + f (3) (x − x0 )3 + · · · + f (n) (x0 )(x − x0 )n + · · ·
2! 3! n!

siendo f (n) la enésima derivada. A la serie así generada se la denomina serie de Taylor. Se puede
demostar que se puede sustituir la anterior serie por un polinomio denominado polinomio de Taylor
de grado n, en cuyo caso el último termino está evaluado en un punto ξ intermedio entre x y x0 ,

1 (2) 1 1
f (x) = f (x0 ) + f 0 (x0 )(x − x0 ) + f (x0 )(x − x0 )2 + f (3) (x − x0 )3 + · · · + f (n) (ξ)(x − x0 )n
2! 3! n!

5.2. Derivación numérica

El objeto de esta sección es encontrar métodos de derivación de una función de una sola varia-
ble. Empezaremos por la primera derivada y luego veremos como evaluar derivadas superiores a la
60 Capítulo – 5. Derivación e Integración numéricas

primera. Para su evaluación nos basaremos en el teorema de Taylor descrito antes, así se tiene que

1 (2) 1 1
f (x + ∆x) = f (x) + f 0 (x)∆x + f (x)(∆x)2 + f (3) (∆x)3 + · · · + f (n) (ξ)(∆x)n
2! 3! n!

De tal forma que, despejando

f (x + ∆x) − f (x)
µ ¶
1 (2) 1 1
f 0 (x) = − ∆x f (x) + f (3) (∆x) + · · · + f (n) (ξ)(∆x)n−1
∆x 2! 3! n!

Llamando O(∆x) (que es una cantidad del orden de ∆x) al segundo término, tendremos

f (x + ∆x) − f (x)
f 0 (x) = −O(∆x)
∆x

por lo que de forma aproximada, salvo un término en O(∆x)

f (x + ∆x) − f (x)
f 0 (x) ≈
∆x

Esta manera de evaluar la derivada se denomina un paso hacia adelante, de la misma forma

1 (2) 1 1
f (x − ∆x) = f (x) − f 0 (x)∆x + f (x)(∆x)2 − f (3) (∆x)3 + · · · + (−1)n f (n) (ξ)(∆x)n
2! 3! n!

Despejando como antes

f (x) − f (x − ∆x)
µ ¶
1 (2) 1 1
f 0 (x) = + ∆x f (x) − f (3) ∆x + · · · + (−1)n f (n) (ξ)(∆x)n−1
∆x 2! 3! n!

Llamando ahora O(∆x) al segundo término del segundo miembro, tenemos

f (x) − f (x − ∆x)
f 0 (x) = +O(∆x)
∆x

Por lo que podemos poner


f (x) − f (x − ∆x)
f 0 (x) ≈
∆x
que es correcta salvo un error del orden de O(∆x). Esta forma de derivación se denomina de un paso
hacia atrás. Podemos restar ahora los desarrollos en serie en f (x + ∆x) y f (x − ∆x) para obtener

f (x + ∆x) − f (x − ∆x)
µ ¶
0 2 1 (3) 1 (5) 2
f (x) = − (∆x) f + f (∆x) + · · · +
2∆x 3! 5!
5.2 Derivación numérica 61

por lo que podemos escribir

f (x + ∆x) − f (x − ∆x)
f 0 (x) = +O(∆x 2 )
2∆x

salvo términos en orden ∆x 2 se tiene

f (x + ∆x) − f (x − ∆x)
f 0 (x) ≈
2∆x

que constituye la formula de derivación centrada. Como se ve, suponiendo que ∆x sea pequeño, esta
formula es más precisa que las formulas de derivación un paso adelante o atrás. Se puede mejorar la
derivada si introducimos el valor de la función no sólo en x + ∆x y x − ∆x si no en x + 2∆x y x − 2∆x,
así se puede ver que

4 f (x + ∆x) − f (x − ∆x) 1 f (x + 2∆x) − f (x − 2∆x)


f 0 (x) = − +O(∆x)4
3 2∆x 3 4∆x

5.2.1. Derivadas de orden superior

Estamos ahora interesados en evaluar la segunda derivada, para ello en vez de restar los desarro-
llos en serie en x − ∆x y x + ∆x, los sumamos y reordenando nos queda

d 2 f (x) f (x + ∆x) − 2 f (x) + f (x − ∆x)


µ ¶
2 1 (4)
= + ∆x f +···+
d x2 ∆x 2 4!

por lo que salvo términos en ∆x 2 se tiene

d 2 f (x) f (x + ∆x) − 2 f (x) + f (x − ∆x)



d x2 ∆x 2

Como en casos anteriores se puede mejorar la estimación de la derivada segunda combinando el


valor de la función en puntos más alejados, así se tiene que

d 2 f (x)
µ ¶
1 5 4 1
= − f (x) + [ f (x + ∆x) − f (x − ∆x)] − [ f (x + 2∆x) − f (x − 2∆x)] +O(∆x 4 )
d x2 ∆x 2 2 3 12

por lo que la anterior expresión para la segunda derivada tiene una precisión del orden de ∆x 4 en vez
de ∆x 2 que tiene como precisión la combinación en x + ∆x y x − ∆x.
62 Capítulo – 5. Derivación e Integración numéricas

5.3. El método de extrapolacion de Richardson

Vamos a explicar el método de extrapolación de Richardson en el contexto de la evaluación de la


derivada, pero se puede hacer en un método numérico más general y lo emplearemos más adelante
en el contexto de la integración de funciones.
Vamos a llamar h = ∆x, suponed que hemos desarrollado un método que nos aproxima la deri-
vada mediante una cierta expresión cuyo desarrollo es de la siguiente manera

f 0 (x) = D(h) +C0 h 2 +C1 h 4 +C2 h 6 + . . . (5.1)

Siendo D(h) la expresión aproximada de la derivada, que depende del paso h = ∆x elegido. Suponed
que ahora aplicamos el método para un h = h/2, tenemos

f 0 (x) = D(h/2) +C0 (h/2)2 +C1 (h/2)4 +C2 (h/2)6 + . . . (5.2)

e incluso h/22 , tendríamos

f 0 (x) = D(h/22 ) +C0 (h/22 )2 +C1 (h/22 )4 +C2 (h/22 )6 + . . . (5.3)

Si ignoramos por el momento los términos de orden h 4 y superiores y restamos las expresiones
5.1 y 5.2, puesto que el miembro de la izquierda se anula (es la expresión exacta), se tiene

0 = D(h) − D(h/2) +C0 h 2 − (h/2)2


¡ ¢

de donde
1
C0 (h/2)2 = (D(h/2) − D(h))
22 − 1
y por tanto se tiene

1
f 0 (x) = D(h/2) + (D(h/2) − D(h)) +C10 (h/2)4 +C20 (h/2)6 + · · ·
22 − 1

renombrado los dos primeros términos del segundo miembro

1
D1 (h/2) = D(h/2) + (D(h/2) − D(h))
22 − 1

nos queda
f 0 (x) = D1 (h/2) +C10 (h/2)4 +C20 (h/2)6 + · · · (5.4)
5.3 El método de extrapolacion de Richardson 63

que es exacta hasta un orden h 4 . O sea, si en vez de usar como derivada la expresión D(h) como
expresión aproximada de la derivada usamos D1 (h/2) = [4D(h/2) − D(h)]/3 habremos conseguido
una aproximación a la derivada real salvo en un término de orden h 4 . Si hacemos lo mismo con las
expresiones 5.2 y 5.3 tenemos

1
f 0 (x) = D(h/22 ) + (D(h/22 ) − D(h/2)) +C10 (h/22 )4 +C20 (h/22 )6 + · · ·
22 − 1

que escrita en términos de D1

f 0 (x) = D1 (h/22 ) +C10 (h/22 )4 +C20 (h/22 )6 + · · · (5.5)

Si ahora repetimos la operación y tratamos de eliminar entre 5.4 y 5.5 el término en h 4 tendremos,

f 0 (x) = D1 (h/2) +C10 (h/2)4 +C20 (h/2)6 · · · +


f 0 (x) = D1 (h/22 ) +C10 (h/22 )4 +C20 (h/22 )6 · · · +

Restando y despejando como en el caso anterior, se tiene

D1 (h/22 ) − D1 (h/2)
f 0 (x) = D1 (h/22 ) + +C20 (h/22 )6 + · · · = D2 (h/22 ) +C20 (h/22 )6 + · · ·
24 − 1

que es de orden h 6 por lo que D2 (h) = [16D1 (h/2)−D 0 (h)]/15] es exacta hasta un término del orden h 6 .
Podemos seguir con nuestro proceso de manera continuada hasta alcanzar una precisión requerida.
Podemos esquematizar el proceso seguido de la siguiente forma

1. Evaluemos las cantidades

D(n, 0) = D(h/2n ), para n = 0, . . . , M

siendo D(h) la expresión que hayamos usado para evaluar la derivada, por ejemplo la formula
de derivación centrada. O sea, vamos a calcular la derivada con potencias crecientes de (h/2).

2. Vamos a computar los diferentes D (i ) de la siguiente manera

4k 1
D(n, k) = D(n, k − 1) − D(n − 1, k − 1), k = 1, · · · , M; n = k, k + 1, · · · , M
4k − 1 4k − 1

Se puede demostrar que


f 0 (x) = D(n, n) + λh 2n+2
64 Capítulo – 5. Derivación e Integración numéricas

La matriz de cálculo D(n, k) la podemos expresar en forma tabular de la siguiente manera

n/k 0 1 2 3 ... M
0 D(0,0)
1 D(1,0) D(1,1)
2 D(2,0) D(2,1) D(2,2)
... ... ... ...
M D(M,0) D(M,1) D(M,2) ... D(M,M)

La idea ahora es ir calculando los diferentes elementos de la tabla. Empezamos calculando la


columna de la izquierda. Con los elementos D(n, 0), calculamos ahora el D(n, 1), pues estos dependen
de D(n,0) y D(n-1, 0) que ya tenemos calculados. Vamos ahora a la tercera columna, que depende solo
de los elementos de la segunda columna ya calculados y así sucesivamente hasta llegar al final.
El método de extrapolación de Richardson lo hemos introducido en el calculo de la derivada pero
sirve para cualquier otro método numérico que admita un desarrollo en serie similar al usado en el
cálculo de la derivada, esto es

F (x) = G(h) + A1 h 2 + A2 h 4 + . . . + A n h 2n + . . .

siendo F (x) la expresión exacta de aquello que queramos evaluar y G(h) la expresión aproximada,
que depende de un cierto parámetro h.

5.4. Integración

5.4.1. Introducción

El objetivo de esta sección es estudiar que métodos existen para la integración de una función de
una sola variable Z b
I= f (x)d x
a

Por lo general, si f (x) es conocida la integral se hace mediante métodos analíticos, si esto no es po-
sible, se aborda mediante métodos numéricos. Otra posibilidad que surge con frecuencia es que la
función f (x) no es conocida de forma explícita pero si conocemos sus valores en un conjunto de
puntos del intervalo [a, b]. En este caso sólo la integración por métodos numéricos es posible. En lo
que sigue vamos a aproximar la función f (x) mediante un polinomio (es lo que hemos desarrollado
5.4 Integración 65

en el capítulo anterior) y luego vamos a hacer la integración del polinomio.


Z b Z b
I= f (x)d x ≈ Pn (x)d x
a a

La manera de abordar la integración polinómica depende del problema que tenemos a mano. Si la
función f (x) es conocida podemos discretizarla en un conjunto de puntos elegidos por nosotros. Si
conocemos sólo la función f (x) en un conjunto de puntos discretos la forma de abordar el problema
depende de si estos están equiespaciados o no. Si están equiespaciados podemos usar un polino-
mio de Newton-Gregory, si no lo están podemos usar cualquiera de los otros métodos expuestos. Por
ahora supondremos que la función f (x) es conocida. Elijamos un conjunto de puntos x0 , x1 , . . . , xn .
Podemos usar como polinomio interpolador los polinomios de Lagrange `k (x)

n x − xi
`k (x) =
Y
i =0,i 6=k xk − xi

en cuyo caso, de acuerdo con lo visto en interpolación, el polinomio de grado ≤ n que interpola f (x)
en los nodos xi elegidos antes es
n
`i (x) f (xi )
X
P(x) =
i =0

Así pues, se tiene


Z b Z b n Z b n
`i (x)d x =
X X
f (x)d x ≈ P(x)d x = f (xi ) A i f (xi )
a a i =0 a i =0

con Z b
Ai = `i (x)d x
a

Por la manera en la cual hemos procedido, este método es exacto si f (x) es un polinomio de gra-
do menor o igual que n (recordad que este n viene prefijado por el número de puntos elegido por
nosotros al decir tomemos un conjunto de x0 , x1 , . . . , xn ). Así mismo se verifica que si tenemos una
ecuación del tipo
Z b n
X
f (x)d x ≈ A i f (xi )
a i =0

que es exacta para todos los polinomios de grado ≤ n, entonces


Z b
Ai = `i (x)d x
a
66 Capítulo – 5. Derivación e Integración numéricas

Tomemos f (x) = ` j (x), tenemos entonces

Z b n n
` j (x)d x = A i ` j (xi ) = A i δi j = A j
X X
a i =0 i =0

pues por construcción ` j (xi ) = δi j

5.4.2. El método de los coeficientes indeterminados

Este resultado nos permite introducir el método de los coeficientes indeterminados. Para ilustrar
la forma en la que funciona le método, supongamos que elegimos 3 puntos en el intervalo [0, 1] de tal
forma que
Z 1
f (x)d x ≈ A0 f (0) + A1 f (1/2.) + A2 f (1.)
0

y queremos calcular los coeficientes A i de tal forma que la anterior ecuación sea exacta para po-
linomios de grado menor o igual que dos. Elijamos estos polinomios de la base canónica, esto es
P0 = 1, P1 = x, P2 = x 2 , llegamos al sistema
Z 1
1d x = 1 = A0 1 + A1 1 + A2 1
0
Z 1
xd x = 1/2 = A0 0 + A1 (1/2) + A2 1
0
Z 1
x 2 d x = 1/3 = A0 0 + A1 (1/2)2 + A2 1
0

resolviendo el sistema, A0 = 1/6, A1 = 2/3, A2 = 1/6. Se puede ver que la fórmula es exacta con cual-
quier polinomio de la forma P = a0 + a1 x + a2 x 2 y no solo para los polinomio de la base canónica.

5.4.3. Fórmulas Newton-Cotes

Cuando se tienen puntos equiespaciados el método mas apropiado de integración polinómi-


ca es ajustar los valores xi , fi mediante un polinomio interpolador de Newton-Gregory e integrar
este polinomio. Dependiendo del grado del polinomio a ajustar tenemos las diversas fórmulas de
Newton-Cotes que hay en la bibliografía. La idea es la siguiente, suponed que tenemos un cierto
intervalo [a, b] donde queremos integrar una función f conocida en un conjunto de n+1 puntos,
(a = x0 , f0 ), (x1 , f1 ), . . . , (xn = b, fn ), podemos coger este conjunto de puntos y agruparlos de 2 en 2,
3 en 3, etc. Si los cogemos de dos en dos podemos usar un polinomio de grado 1 que pasa por cada
par de puntos, si los cogemos de tres en tres podemos usar un polinomio de grados dos que pasa por
5.4 Integración 67

ellos y así sucesivamente. Dependiendo de como los vayamos tomando se obtienen los diferentes
métodos.

Regla del trapecio

Vamos a suponer que en cada intervalo usamos un polinomio de grado 1 para hacer la interpo-
lación, eso significa convertir la curva en una recta y el polígono entre la cura teórica y el eje x en un
trapecio (de ahí el nombre, ver la figura 5.1) De acuerdo con la aproximación realizada tendremos

Figura 5.1

Z xi +1 Z xi +1 Z xi +1
f (x)d x ≈ P1 (x)d x = ( fi + s∆ fi )d x
xi xi xi

teniendo en cuenta que x − xi = sh, se tiene que d x = hd s, se tiene


Z xi +1 Z 1 1 1
f (x)d x ≈ ( fi + s∆ fi )hd s = h( fi + ∆ fi ) = h( fi +1 + fi )
xi 0 2 2

Si recordamos el área de un trapecio (semisuma de las bases por la altura), la anterior expresión nos da
el área del trapecio que aproxima a la curva. De acuerdo con la teoría de los polinomio interpoladores,
en la anterior aproximación se ha cometido un error (local) que vale
Z 1 1 1
E =h s(s − 1)h 2 f 00 (ξ)d s = − f 00 (ξ)h 3
0 2 12

Si combinamos los diferentes intervalos usados tendremos que la integral vale,


Z n−1
X Z xi +1 n−1
X
I= f (x)d x = ≈ 0,5 ∗ hi ( fi +1 + fi )
i =0 xi i =0

si todos los intervalos son iguales, se tendrá que hi = h y por tanto

I ≈ 0,5h( f0 + 2 f1 + . . . , 2 fn−1 + fn )
68 Capítulo – 5. Derivación e Integración numéricas

El error cometido será

1 X 3 00 1 1 b − a 3 00 1
E =− h f (ξ) = − nh 3 f 00 (ξ) = − h f (ξ) = − (b − a)h 2 f 00 (ξ), a < ξ < b
12 12 12 h 12

por lo que el error global es del orden de h 2

Regla 1/3 de Simpson

Si en vez de usar dos puntos para ajustarlos a una recta, usamos tres puntos para ajustar una
parábola (ver la figura 5.2), tendremos

Figura 5.2

Z xi +2 Z xi +2 Z 2 1
f (x)d x ≈ P2 (x)d x = ( fi + s∆ fi + s(s − 1)∆2 fi )d x
xi xi 0 2

como en el caso anterior, tendiendo en cuenta que d x = hd s tendremos


Z xi +2 1
f (x)d x ≈ h( fi + 4 fi +1 + fi +2 )
xi 3

Sumando a todos los pares de intervalos, suponiendo que la anchura sea la misma se tiene
Z b 1
I= f (x)d x ≈ h( f0 + 4 f1 + 2 f2 + 4 f3 + 2 f4 + · · · + 4 fn − 1 + fn )
a 3

El error local vale Z 2 1


E =h s(s − 1)(s − 2)h 3 f (3) (ξ)d s = 0
0 6
esto no significa que el error es nulo, si no que debemos de usar el siguiente termino en el desarrollo,
esto es Z 2 1 1
E =h s(s − 1)(s − 2)(s − 3)h 4 f (4) (ξ)d s = − h 5 f (4) (ξ)
0 24 90
Para evaluar el error global debemos de sumar a todos los intervalos. En este caso se obtiene que el
error global es del orden de O(h 4 ). Si en vez de usar un intervalo de anchura h usamos uno de anchura
5.4 Integración 69

h/2, la razón de los errores cometidos teóricamente debe de variar como E(h)/E(h/2)= 16.

Regla 8/3 de Simpson

Podemos incrementar el orden del polinomio integrador y usar 4 puntos para ajustar un polino-
mio de grado 3, (ver la figura 5.3) de tal forma que

Figura 5.3

Z xi +3 Z xi +3 Z 3 1 1
f (x)d x ≈ P3 (x)d x = ( fi + s∆ fi + s(s − 1)∆2 fi + s(s − 1)(s − 2)∆3 fi )d x
xi xi 0 2 6

integrando, Z xi +3 3
f (x)d x ≈ h( fi + 3 fi +1 + 3 fi +2 + f3 )
xi 8
El error local se puede ver que vale
3 5 (5)
E(h) = − h f (ξ)
80
Si se tienen en cuenta todos los subintervalos, suponiendo h constante
Z b 3
I= f (x)d x ≈ h( f0 + 3 f1 + 3 f2 + 2 f3 + 3 f4 + · · · + 3 fn−1 + fn )
a 8

El error global es también como en el caso anterior del orden de h 4 . No parece que la formula de
simpson 3/8 mejore el error cometido por la regla de Simpson 1/3. Sin embargo puede ser útil cuando
el número de intervalos sea impar. Se puede usar la regla de Simpson 3/8, con un conjunto de 3
intervalos y para el resto, que ya es par, usar la regla se Simpson 1/3

Reglas Newton-Cotes de orden superior

Podemos ir incrementando el orden del Polinomio a interpolar y usar cada vez más puntos para
poder hacer el ajuste del polinomio, esto da lugar a diferentes fórmulas denominadas de Newton-
70 Capítulo – 5. Derivación e Integración numéricas

Cotes, por lo general la integral toma la forma


Z xi +n
I= f (x)d x ≈ nβh(α0 f0 + α1 f1 + · · · +) + E
xi

donde n nos indica el número de incrementos (y por tanto el grado de Polinomio) elegido. E nos
indica el error local. La tabla 5.4 nos da los coeficientes α, β para distintos ordenes de integración.

Figura 5.4

5.4.4. Método del trapecio. Algoritmo iterativo

Vamos a hacer la integral de una función


Z b
I= f (x)d x
a

mediante el método del trapecio, usando la expresión,

I(h) = 0,5h( f0 + 2 f1 + . . . + 2 fn−1 + fn )

siendo fi = f (xi ), f0 = f (a), fn = f (b). Para hacer esta suma la vamos a hacer de forma iterativa. Para
ello nos fijamos en la figura 5.5 Para la interación N = 0 evaluamos la integral como si tuviésemos un
solo intervalo,
1
I0 = ∗ (b − a) ∗ ( f0 + f1 )
2
siendo f0 = f (a) y f1 = f (b). Introduzcamos ahora, para N = 1, un punto interno, ahora tendremos
una anchura del intervalo igual a h = (b − a)/2, por lo que

(b − a) (b − a) (b − a)
µ ¶
I1 = 0,5h( f0 + 2 f1 + f2 ) = 0,5 ∗ ( f0 + f2 ) + 0,5 ∗ 2 f1 = 0,5I0 + f 1
2 2 2N
5.4 Integración 71

N=0

N=1

N=2

N=3

Figura 5.5

donde hemos tenido en cuenta que N = 1 y que 2 = 2N . Si N=2, ahora introducimos 2 puntos nuevos,
esto es 2N−1 puntos nuevos, la anchura del intervalo h = (b − a)/22

(b − a)
I2 = 0,5 ( f0 + 2 f1 + 2 f2 + 2 f3 + f4 ) =
22

(b − a) (b − a)
= 0,5 2
( f0 + 2 f2 + f4 ) + 0,5 (2 f1 + 2 f3 )
2 22
(b − a) (b − a)
= 0,5I1 + 2
( f1 + f3 )) = 0,5I1 + ( ( f1 + f3 )) =
2 2N
(N−1)
(b − a) 2 X
= 0,5I1 + f2k−1
2N k=1

donde hemos tenido en cuenta que el nuevo f2 coincide con el f1 cuando sólo teníamos un punto
interior. Vemos pues que la integral en la nueva iteración es igual a la 0.5 veces la integral en la ite-
ración anterior más (b − a)/2N veces el valor de la función en los nuevos 2(N−1) puntos introducidos.
¿En que posición estamos en estos puntos nuevos? . Llamemos h = (b − a)/2N , (N ≥ 1), tendremos
que xk = a + kh .
72 Capítulo – 5. Derivación e Integración numéricas

5.4.5. Regla recursiva de Simpson

Se puede emplear la anterior formula recursiva del trapecio para construir una regla recursiva de
Simpson, para esto se puede demostrar que

4T (J) − T (J − 1)
S(J) = , J = 1, 2 . . . ,
3

por lo que una vez implementado el método recursivo del trapecio es fácil implementar el método de
Simpson.

5.4.6. La fórmula de Euler-Maclaurin

Una formula muy conocida en la integración numérica es la formula de Euler-Maclaurin (E–M)


que relaciona las sumas y series con la integrales. Sea f (x) una función suficientemente lisa, n un
numero natural, la formula de Euler-Maclaurin establece que
Z n 1 1 m B ³ ´ B
2k 2m+2
f (2k−1) (0) − f (2k−1) (n) − n f (2m+2) (ξ), 0 < ξ < n
X
f (x)d x = f (0)+ f (1)+· · ·+ f (n−1)+ f (n)+
0 2 2 k=1 (2k)! (2m + 2)!

siendo B2k los números de Bernouilli, B2 = 1/6, B4 = −1/30, B6 = 1/42, B8 = −1/30, . . . ,. Los primeros
términos del desarrollo corresponden con la aplicación de la formula del trapecio suponiendo que
el intervalo (0,n) se ha dividido en n subintervalos. Se puede extender esta formula para un intervalo
(a, b), con xi = a + i h, i = 0, . . . , n, xn = b, en estas condiciones
Z b m B2k ³ (2k−1) ´ B2m+2
h 2k (b) − f (2k−1) (a) + h 2m+2 (b − a) f (2m+2) (ξ), a < ξ < b
X
T (h) = f (x)d x + f
a k=1 (2k)! (2m + 2)!

siendo T (h) la formula del trapecio

1 1
T (h) = f (a) + f (a + h) + · · · + f (b − h) + f (b)
2 2

Esta expresión de la fórmula de Euler-Maclaurin permite poner la regla del trapecio como una ex-
pansión de la integral en términos de potencias de h similar a la usada en la expresión de la derivada
(ver la sección de extrapolación presentada anteriormente) y poder usar un método de extrapolación
como el usado anteriormente.
5.4 Integración 73

5.4.7. Integración por extrapolación. El método de Romberg

La formula de Euler-Maclaurin nos da pie para aplicar el método de extrapolación desarrollado


anteriormente a la integral. La formula de Euler-Maclaurin la podemos reescribir como
Z b
I= f (x)d x = T (h) + α1 h 2 + α2 h 4 + · · · αm h m + αm+1 h 2m+2
a

siendo
B2k ³ (2k−1) ´
αk = ( f (a) − f (2k−1) (b)
(2k)!
y
B2m+2
αm+1 = αm+1 = (a − b) f (2m+2) (ξ)
(2m + 2)!
El valor de m lo podemos elegir nosotros y supuesto que la función f se continuamente diferencia-
ble en principio lo podemos hacer tan grande como queramos. Supongasé que tenemos aplicada la
formula de E–M para h y h/2, tendremos

I = T (h) + α1 h 2 + α2 h 4 + · · · +
I = T (h/2) + α1 (h/2)2 + α2 (h/2)4 + · · · +

Podemos usar ambas expresiones para evaluar el término en α1 , restando y despreciando términos
superiores a h 2 , podemos estimar el segundo termino mediante la expresión

T (h/2) − T (h) 2
α1 h 2 ≈ 2
22 − 1

Usando esta expresión para el segundo término tenemos

T (h/2) − T (h)
I = T (h/2) + + α2 (h/2)4 + α3 (h/2)6 + · · ·
22 − 1

La anterior expresión es de orden h 4 . La podemos poner como

I = T1 (h/2) + α2 (h/2)4 + α3 (h/2)6 + · · ·

Calculando la anterior expresión para h/2, tenemos


74 Capítulo – 5. Derivación e Integración numéricas

I = T1 (h/2) + α2 (h/2)4 + α3 (h/2)6 · · · +


I = T1 (h/22 ) + α2 (h/22 )4 + α3 (h/22 )6 · · · +

Restando y despejando como en el caso anterior, se tiene

T1 (h/22 ) − T1 (h/2)
I = T1 (h/22 ) + + α3 (h/2)6 + · · · = T2 (h/22 ) + α3 (h/22 )6 + · · ·
24 − 1

que es de orden h 6 . Siguiendo el procedimiento vamos obteniendo integrales que son cada vez más
aproximadas a la real. Podemos por tanto empezar estimando la integral I mediante la expresión
T (h). A continuación pasamos a estimarla mediante T1 (h/2) para lo que se necesita T (h) y T (h/2).
Una vez determinada T1 (h/2) obtenemos T2 (h/22 ) a partir de T1 (h/2) y T1 (h/22 ) y así sucesivamente
hasta que el termino de error se haga tan pequeño como queremos. El método así desarrollado recibe
el nombre de método de Romberg. Podemos disponer las anteriores evaluaciones en forma de tabla
Cada término en la diagonal principal, que es en el que estamos interesados, depende del termino

J\K K=0 K=1 K= 2 K=3


I0 I1 I2 I3
0 T0 (h/20 )
1 T0 (h/21 ) T1 (h/21 )
2 T0 (h/22 ) T1 (h/22 ) T2 (h/22 )
3 T0 (h/23 ) T1 (h/23 ) T2 (h/23 ) T3 (h/23 )

que le precede en la misma fila y en la diagonal principal. Así se empieza calculando T0 (h) y T0 (h/2),
de donde obtenemos T1 (h/2). Pasamos a evaluar T0 (h/22 ) que junto con T0 (h/2) nos permite calcu-
lar T1 (h/22 ) y unido a T1 (h/2) nos permite evaluar T2 (h/22 ). Para este proceso podemos emplear la
ecuación
TK −1 (h/2 J ) − TK −1 (h/2 J−1 )
TK (h/2 J ) = TK −1 (h/2 J ) + , J = 1, 2, . . . , M, K ≤ J
(4K − 1)
donde M representa el número máximo de iteraciones. Podemos usar el método recursivo del trape-
cio para ir evaluando T0 (h/2 J ) y a partir de aquí usando la ecuación anterior ir evaluando los términos
que parecen en el cuadro. Para poder implementar mejor la anterior expresión en un programa de or-
denador vamos a reformularla llamando R(J, K ) = TK (h/2 J ), obteniendo

R(J, K − 1) − R(J − 1, K − 1)
R(J, K ) = R(J, K − 1) + , J = 1, 2, . . . , M, K ≤ J
4K − 1
5.4 Integración 75

El algoritmo puede parar cuando dos estimaciones de la integral R(J, J) y R(J −1, J −1) difieren un una
cantidad pequeña.

5.4.8. El método de Gauss

Las reglas Newton-Cotes aproximan la integral


Z b
I= f (x)d x
a

mediante una suma de la función evaluada en una serie de puntos xi predeterminados. Recordad que
las formulas Newton-Cotes son un caso especial de la integración polinómica cuando el conjunto
de puntos elegidos estaba equiespaciado, pero que en general se tenía que podíamos aproximar la
integral mediante la ecuación
Z b n
X
I= f (x)d x ≈ C i f (xi ) (5.6)
a i =0

siendo exacta para un polinomio de grado menor o igual que n. En estas fórmulas habíamos partido
de la elección previa del conjunto de puntos. Una vez elegidos los nodos, los coeficientes CI venían
determinados por el hecho que la integral fuese exacta para todos los polinomios de grado ≤ n. Su-
poned ahora que en vez de elegir los n +1 puntos x0 , x1 , . . . , xn previamente, los tratamos de buscar de
tal forma que la formula de aproximación polinómica sea exacta para polinomios de grado ≤ 2n +11 .
Así pues tenemos que encontrar los n +1 puntos xi y los n +1 parámetros C i . Para lograrlo utilicemos
el método de los coeficientes indeterminados visto antes e impongamos la condición de la aproxima-
ción (5.6) es exacta para polinomio de grado 2(n + 1) − 1 y nos restringimos a hacer la integral entre
[−1, 1]. Vamos a ilustrar el método suponiendo que tenemos dos puntos, esto es n + 1 = 2 e imponga-
mos la condicione de que la formula de integración polinómica sea exacta hasta polinomios de grado
2(n + 1) − 1 = 3, tenemos

1 Tened en cuenta que tenemos n+1 puntos, por tanto el grado del polinomio para el cual es exacta la integral (2n + 1),

puesto que 2n + 1 = 2(n + 1) − 1, es igual a dos veces el número de puntos menos 1


76 Capítulo – 5. Derivación e Integración numéricas

Z +1
1d x = x|+1
−1 = 2 = C0 · 1 +C1 · 1
−1
+1 1 2 ¯¯+1
Z ¯
xd x = x = 0 = C0 x0 +C1 x1
−1 2 ¯−1
+1 1 3 ¯¯+1 2
Z ¯
x2d x = x = = C0 x02 +C1 x12
−1 3 ¯−1 3
1 4 ¯¯+1
Z +1 ¯
x3d x = x = 0 = C0 x03 +C1 x13
−1 4 ¯ −1

esta ecuación nos permite obtener los puntos x0 , x1 así como los coeficientes C0 , C1 . Resolviendo el
p p
sistema, se obtiene que C0 = C1 = 1, x0 = −1/ 3, x1 = 1/ 3, de tal forma que se estima la integral
Z +1 p p
f (x)d x ≈ f (−1/ 3) + f (1/ 3)
−1

Esta expresión es exacta, por construcción, si f (x) es un polinomio de grado ≤ 3 Se puede ver que los
x0 x1 son los ceros del polinomio de Legendre de grado 2. Cuando en vez de tener n + 1 = 2, se tiene
un conjunto de puntos n + 1 = N, se puede ver que los xi son los ceros de los Polinomios de Legendre
de orden N. Los polinomios de Legendre son soluciones de la ecuación diferencial

d2 y dy
(1 − x 2 ) 2
− 2x + k(k + 1)y = 0
dx dx

Existen diversas formas de generar polinomios de Legendre, una de ellas consiste en fijar los dos
primeros y luego por recurrencia ir obteniendo el resto. Tomando P−1 = 0 y P0 = 1, se tiene

(k + 1)Pk+1 (x) − (2k + 1)xPk (x) + kPk−1 = 0

Así por ejemplo para k=1, tenemos

1
2P2 (x) − 3x 2 + 1 = 0, ⇒ P2 (x) = (3x 2 − 1)
2

donde se ha tenido en cuenta que P0 = 1, P1 (x) = x. Los pesos los podemos calcular mediante la
expresión
2
Cj =
(1 − x 2j )[PN0 (x j )]2
5.4 Integración 77

en donde la derivada PN0 (x) se puede estimar mediante la expresión

N(PN−1 (x) − xPN )


PN0 (x) =
1 − x2

Se puede demostrar2 que


P
C i = 2, que x−i = −xi y que C−i = C i . Si n es impar el punto central x0 = 0.
Debido a estas propiedades sólo tenemos que estimar la mitad de las raíces.
El método de Gauss descrito hasta ahora sirve para calcular la integral entre -1 y +1. ¿Qué pasa si
estamos entre (a, b)?. Basta con hacer un cambio de variable

x = µ + λt

de tal forma que

a = µ + λ(−1)
b = µ + λ(+1)

de donde
a+b b−a
x= + t
2 2
de donde
Z b Z +1 b−a
Z +1 b−a X
f (x)d x = f (x(t ))λd t = f (λt + µ)d t = C i f (λti + µ)
a −1 2 −1 2

siendo C i , ti los pesos y raíces del Polinomio de Legrende obtenido anteriormente. Obviamente está
en nuestra mano elegir el orden N con el que evaluar la integral.

Integrales impropias

Podemos usar la maquinaria del método de Gauss para hacer integrales del tipo
Z ∞
I= x α e −x f (x)d x
0

2 En vez de escribir la formula polinómica I = f (x)d x ≈ Pn C f (x ) se suele escribir de la forma I = f (x)d x ≈


R R
Pn/2 i =0 i i
C f (xi ), de aquí el signo - en los índices de los coeficientes. Si tenemos un numero impar de puntos, por ejemplo
i =−n/2 i
si tenemos 3 puntos, tendríamos I ≈ C−1 f (x−1 ) +C0 f (x0 ) +C1 f (x1 ), aparece el indice cero, si se tienen un numero par, por
ejemplo 4, no aparece, I ≈ C−2 f (x−2 ) +C−1 f (x−1 ) +C1 f (x1 ) +C2 f (x2 )
78 Capítulo – 5. Derivación e Integración numéricas

en este caso se verifica que


Z ∞ jX
=N
I= x α e −x f (x)d x = C j f (x j )
0 j =1

siendo x j los ceros de los Polinomios de Laguerre. Estos último se pueden generar mediante la si-
guiente formula recursiva

(k + 1)Lα α
(k+1) = (−x + 2k + α + 1)L k − (k + α)L(k−1)

con L−1 = 0, L1 = 1. En el caso de ser α = 0 tenemos que los polinomios resultantes verifican la ecua-
ción diferencial
d2 y dy
x + (1 − x) +ky = 0
d x2 dx
Asimismo integrales del tipo Z +∞ 2
I= f (x)e −x d x
−∞

se pueden aproximar mediante sumas

Z +∞ jX
=N
2
I= f (x)e −x d x = C j f (x j )
−∞ j =1

siendo xi los ceros de los polinomios de Hermite, que se pueden generar mediante la ecuación

r s
2 k
H(k+1) = x Hk − H(k−1)
k +1 k +1

con H−1 =0, H0 = 1/π1/4


Capítulo 6

Integración de ecuaciones diferenciales

6.1. Introdución

Como su nombre indica, el propósito de este capítulo es mostrar algunos de los métodos que hay
en la bibliografía para la integración de ecuaciones diferenciales de forma numérica. Las ecuaciones
diferenciales aparecen en todos los ámbitos de la ciencia y la tecnología, aparecen en matemáticas,
en física, en ingeniería, en biología y en un largo etc, su integración es por tanto una parte importante
de los métodos computacionales.
Existen muchos tipos de ecuaciones diferenciales, así tenemos ecuaciones diferenciales de pri-
mer orden, segundo orden etc. El orden lo marca la derivada más alta que aparece en la ecuación
diferencial. Tenemos ecuaciones diferenciales unidimensionales o sistemas de ecuaciones diferen-
ciales. Aparecen también ecuaciones diferenciales homogéneas y ecuaciones diferenciales no homo-
géneas. En nuestro curso nos centraremos en estudiar ecuaciones diferenciales de primer orden y
tocaremos ligeramente los sistemas de varias ecuaciones diferenciales de primer orden. Las ecuacio-
nes diferenciales de orden superior y los sistemas de ecuaciones diferenciales de orden superior se
pueden reducir a estudiar sistemas de ecuaciones diferenciales de primer orden. Así pues nos centra-
remos en estudiar ecuaciones diferenciales del tipo

dy
= f (t , y)
dt

en la que nuestro objetivo es encontrar como es y = y(t ). La función f (t , y) puede tener cualquier
forma. Si esta función es lineal en la incógnita y, se dice que la ecuación diferencial es lineal. Así por
ejemplo la ecuación diferencial
dy
= 3t 1/2 y + 2
dt
80 Capítulo – 6. Integración de ecuaciones diferenciales

es una ecuación lineal. Si embargo la ecuación

dy p
= 3t y + 2 = 3t y −1/2 y + 2
dt

es una ecuación diferencial no lineal, pues el coeficiente que multiplica a y en el termino indepen-
diente depende de y.
Tan importante como la ecuación diferencial que queremos resolver son las condiciones frontera
impuestas. Las ecuaciones diferenciales se dividen también en ecuaciones diferenciales en valores
iniciales y ecuaciones diferenciales con condiciones frontera. En las ecuaciones diferenciales con va-
lores iniciales se supone que uno tiene un dominio ilimitado y que se conoce la función incógnita en
un instante o posición inicial dada, por ejemplo se supone que para un valor del parámetro t = t0 ,
y = y(t0 ) = y0 . En las ecuaciones diferenciales con condiciones frontera, tenemos un dominio limi-
tado y se supone que conocemos la función y(t ) en los límites y(t0 ) = y0 ; y(t1 ) = y(1). Este tipo de
problemas surge cuando tenemos ecuaciones diferenciales de orden superior a uno.
Por regla general los problemas que aparecen en física e ingeniería son de tres tipos,

Problemas de propagación: Problemas con condiciones iniciales en dominios abiertos, en la


cual la información inicial se propaga en el curso del tiempo o espacio

Problemas de equilibrio: Problemas con condiciones fronteras fijadas en dominios cerrados, la


información es conocida en la frontera. La ecuación diferencial es 2 o mayor

Problemas de autovalores.

6.1.1. Algunos ejemplos de ecuaciones diferenciales

Cuerpo que pierde calor por radiación

Un cuerpo que pierde calor por radiación con el espacio exterior. El cuerpo tiene una temperatura
T y el exterior una temperatura Te . La conservación de la energía nos dice que

dh
= q̇ = Aεσ(T 4 − Te4 )
dt

siendo h la entalpía, q̇ el flujo de calor neto, A el área del cuerpo, ε la absortancia , T la temperatura
del cuerpo, Te la temperatura externa y σ la constante de Stefan–Boltzman . Se ha supuesto que el
cuerpo sólo gana o pierde calor mediante radiación y que es un cuerpo gris con una absortancia ε.
Se ha aplicado la ley de Stefan–Boltzman que establece que un cuerpo emite energía en forma de
6.1 Introdución 81

radiación proporcionalmente a la cuarta potencia de su temperatura. Como la entalpia de un cuerpo


viene dada por h = mcT , siendo m la masa, c la capacidad calorífica y T la temperatura tendremos,

dT
mc = q̇ = Aεσ(T 4 − Te4 )
dt

a esta ecuación tendremos que añadir las condiciones iniciales T = T0 para t = t0 . Como se desprende
de la anterior ecuación esta ecuación diferencial es no lineal.

Cohete

Es un problema típico de la ecuación de Newton, donde la masa es variable. La ley de conserva-


ción del momento lineal
dv
M(t ) = T − M(t )g − D
dt
donde M(t ) es la masa del cohete en un instante dado, T es el empuje, que podemos ponerlo como
T = µc, siendo µ = Ṁ, la velocidad a cual pierde masa el cohete y c la velocidad de salida de los gases
del cohete. −M(t )g representa el efecto de la atracción gravitatoria y D el efecto del rozamiento. La
masa del cohete verifica la ecuación

dM
Z t
= −µ(t ), ⇒ M(t ) = M(t0 ) − µ(t 0 )d t 0
dt t0

La resistencia del aire se puede poner como

1
D = ρa (y)CD (ρa , v, y)Av 2
2

siendo CD un coeficiente de fricción, ρ la densidad del aire (que depende de la altura y a la que esté
el cohete) y A el área efectiva del cohete. La ecuación diferencial resultante es,

d2 y 1 1
2
= T −g − ρa (y)CD (ρa , v, y)Av 2
dt M(t ) 2M(t )

Si suponemos despreciable la resistencia del aire, y consideramos que el empuje es constante y la


perdida de masa también constante resulta,

d2 y 1
= T −g, y(0) = 0, y 0 (0) = v0
dt 2 M0 − µt

Tanto el ejemplo anterior como este corresponde con un problema de valores iniciales. Veamos un
ejemplo típico de problema con condiciones frontera.
82 Capítulo – 6. Integración de ecuaciones diferenciales

Transferencia estacionaria de calor

Para ver este problema consideremos una barra homogénea de densidad ρ, longitud L, sección A
que esta situada entre dos focos de calor a temperatura diferente. Como sabemos el calor fluye del
foco caliente al foco frío. La ley que nos dice cuanto vale este flujo de calor es la llamada ley de Fick, la
cual nos dice que el flujo de calor (energía por unidad de areá y tiempo) es proporcional al gradien-
te de temperatura con una constante de proporcionalidad que recibe el nombre de conductividad
calorífica
∂T
FQ = −K ∇T = −K
∂x
(estamos suponiendo que el calor fluye a lo largo del eje x). K tiene unidades de Julios/(m ◦ K s). Si nos
fijamos en un pequeño volumen de la barra de sección Σ y longitud d x, el balance de energía nos dice
que la cantidad de energía que entra menos la que sale debe de ser igual a la variación de la entalpía
del pequeño elemento de volumen. La energía que entra será

∂T ¯¯
¯
FQ (x) = −K
∂x ¯x

La que sale,
∂T ¯¯
¯
FQ (x + d x) = −K
∂x ¯x+d x
Asimismo por la superficie externa habrá un flujo q̇d xΓ, siendo Γ la longitud del contorno (si es un
cilindro de radio a, Γ = 2πa). así pues tendremos

∂H
= [FQ (x) − FQ (x + d x)]Σ + q̇d xΓ
∂t

Teniendo en cuenta que ∆H = ρC ∆T d xΣ, tendremos

∂T [FQ (x) − FQ (x + d x)] Γ


ρC = + q̇
∂t dx Σ

Teniendo en cuenta la expresión para el flujo nos queda

∂T ∂2 T Γ
ρC = −K 2 + q̇
∂t ∂x Σ
6.2 Existencia y unicidad de la solución de las ecuaciones diferenciales de primer orden 83

Suponiendo que el flujo por la pared externa es proporcional a la diferencias de temperatura entre el
aire y la barra, q̇ = −λ(T − Ta ), tendremos

∂T ∂2 T Γ
ρC = −K 2 − λ(T − Ta )
∂t ∂x Σ

Suponiendo que tenemos un estado estacionario, o sea al cabo de un buen rato de haber puesto la
barra y pensando que los focos caloríficos son grandes. Se tiene ∂T /∂t = 0, de donde

d 2T Γ
K = −λ(T − Ta )
d x2 Σ

que es una ecuación de segundo orden. A esta ecuación le tenemos que añadir las condiciones en los
límites T (0) = T1 , T (L) = T2 .

6.2. Existencia y unicidad de la solución de las ecuaciones diferenciales


de primer orden

Como dijimos antes nos vamos a centrar en integrar de forma numérica ecuaciones del tipo

dy
= f (t , y)
dt

Obviamente antes de poder ponernos ha realizar esta integración nos debemos de preguntar si la
ecuación tiene solución y si esta es única. No vamos a entrar a estudiar los teoremas de existencia y
unicidad de las soluciones, únicamente recordarlos.

Teorema 6.2.1 Supongamos que tenemos un problema de valores iniciales

dy
= f (t , y); y(t0 ) = y0
dt

supongamos que f (t , y) es continua en el rectángulo centrado en t0 , y0 , R(t , y) : |t − t0 | < α; |y − y0 | <


β, entonces la anterior ecuación tiene solucción en el intervalo |t − t0 | < min(α, β/M) siendo M el
máximo de | f (t , y)| en el rectángulo R.

Ademas se verifica que

Teorema 6.2.2 Si las funciones f (t , y) y ∂ f /∂y son continuas en el rectángulo R definido anterior-
84 Capítulo – 6. Integración de ecuaciones diferenciales

mente, entonces el problema de valores iniciales

dy
= f (t , y); y(t0 ) = y0
dt

tiene solución única en el intervalo |t − t0 | < min(α, β/M)

Asímismo se verifica

Teorema 6.2.3 Si la función f (t , y) es continua en la banda a < t < b y −∞ < y < +∞ y satisfacen la
desigualdad1
| f (t , y2 ) − f (t , y1 )| ≤ L|y2 − y1 |

entonces el problema de valores iniciales, tiene solución única en el intervalo (a, b).

6.3. Solución numéricas de las ecuaciones diferenciales

Existen varia maneras de abordar la solución numérica de las ecuaciones diferenciales. Una de
las más empleadas es la llamada solución por diferencias finitas. En este caso se trata de aproximar
la derivada por una diferencia finita y convertir la ecuación diferencial (o el sistema de ecuaciones
diferenciales) en un sistema de ecuaciones algebraico que trataremos de resolver usando los méto-
dos mostrados en capítulos anteriores. Tenemos que diferenciar entre la variable y(t ) que verifica
la ecuación diferencial y la variable yn que es solución de la ecuación en diferencias finitas. Obvia-
mente se supone si todo va bien que la variable yn se aproxima a la verdadera solución. Puesto que
vamos a distinguir entre una y otra a la solución de la ecuación diferencial la llamaremos ȳ(t ) y a la
aproximada por yn .
Una vez discretizada por el método de las diferencias finitas, los métodos de integración se divi-
den en dos grandes grupos, los métodos a un solo paso o lo métodos multipaso. En los métodos a un
solo paso la solución numérica en el paso n + 1 se obtiene por completo de la solución numérica en
el paso n. En los métodos multipaso se usa información obtenida en el paso n así como la obtenida
en pasos previos, n −1, n −2,, etc. nosotros en este curso solo nos fijaremos en los métodos de un solo
paso. Para empezar cementaremos introduciendo el método más simple, el método de Euler.

6.3.1. El método de Euler

Suponed que la derivada en el instante tn la aproximamos de la siguiente manera. Hagamos un


desarrollo en serie de la solución ȳ(t ) en torno al valor que toma en tn+1 (obviamente damos por
1 Las funciones que cumplen esta condición se dice que cumple la condición de Lipschitz
6.3 Solución numéricas de las ecuaciones diferenciales 85

supuesto que la función y(t ) solución de la ecuación diferencial es suficientemente lisa para que
admita el desarrollo en serie),

1
ȳn+1 = ȳ(tn+1 ) = ȳn + ȳn0 ∆t + ȳn00 ∆t 2 + · · ·
2

sustituyendo la serie de Taylor por el polinomio de Taylor,

1 1 (m)
ȳn+1 = ȳn + ȳn0 ∆t + ȳn00 ∆t 2 + · · · + ȳ (τ)(∆t )m
2 m! n

con tn < τ < tn+1 . Despejando ȳn0 y quedandonos con términos en segundo orden en ∆t , tenemos

ȳn+1 − ȳn 1 00
ȳn0 = − ȳ (τ)∆t
∆t 2

Por lo que despreciando términos de orden O(∆t )


¯ ¯
d ȳ ¯¯ d y ¯¯ y(tn+1 ) − y(tn )
≈ =
d t ¯n d t ¯n tn+1 − tn

donde hemos quitado la barra de ȳ para indicar que y es la solución aproximada. De la misma manera
podíamos haber aproximado la derivad por la diferencia hacia atrás
¯
d y ¯¯ y(tn ) − y(tn−1 )
=
dt n ¯ tn − tn−1

Introduzcamos la aproximación a la derivada (usando la derivada hacia adelante) en la ecuación di-


ferencial, se obtiene la siguiente expresión:

yn+1 − yn
= f (tn , yn ) (O(∆t ))
∆t

de tal forma que


yn+1 = yn + ∆t f (tn , yn ) (O(∆t 2 ))

Una vez conocido yn la anterior expresión nos permite obtener yn+1 . Esta metodología recibe el nom-
bre de método de Euler explícito, pues una vez conocido la solución en un instante tn nos permite
obtener la nueva solución en el instante tn+1 . La anterior expresión se ha obtenido aproximando la
derivada por la diferencia finita hacia adelante. Podíamos haber usado la diferencia finita hacia atrás,
habríamos obtenido
yn − yn−1
= f (tn , yn )
∆t
86 Capítulo – 6. Integración de ecuaciones diferenciales

de donde
yn = yn−1 + f (tn , yn )

Ahora no es posible evaluar yn conocido yn−1 de forma explícita pues yn aparece en el miembro de
la derecha. Llegamos a una ecuación algebraica donde hay que despejar yn mediante alguno de los
métodos mostrados en el capítulo 2. Como llegamos a una ecuación donde la variable dependiente
aparece de forma implícita, el método recibe el nombre de método de Euler implícito.
Las soluciones anteriores equivalen a hacer lo siguiente. Partiendo de la ecuación diferencial que
queremos resolver
d ȳ
= f (t , ȳ)
dt
Reordenando e integrando Z tn+1
ȳ(tn+1 ) = ȳ(tn ) + f (t , ȳ)d t
tn

Suponiendo que durante el proceso de integración f se mantiene constante e igual a f (tn , yn ) tene-
mos
yn+1 = yn + f (tn , yn )(tn+1 − tn )

Obteniendose la expresión del método de Euler explÍcito. Sin embargo si f = f (tn+1 , yn+1 ), se tiene

yn+1 = yn + f (tn , yn+1 )(tn+1 − tn )

resultado la expresión del método de Euler implícito.


Podemos resumir las propiedades del método de Euler explícito de la siguiente manera

El método es explícito puesto que la función fn es evaluada conociendo la solución hasta ese
momento yn .

El método requiere un solo punto conocido yn . Conocido este punto se puede evaluar sin ma-
yor información el punto siguiente

Sólo requiere una evaluación de la función f en cada paso.

El error local del order de ∆t 2 mientras que el error global es del orden de ∆t .

Para el método de Euler implícito se tienen las siguientes propiedades

El método es implícito puesto que la función fn contiene a la incógnita yn+1 . Si la función f es


lineal esta se despeja fácilmente. Ahora bien si f es no lineal necesitamos resolver una ecuación
no lineal para obtener yn+1 .
6.3 Solución numéricas de las ecuaciones diferenciales 87

El método requiere un solo punto conocido yn . Conocido este punto se puede evaluar sin ma-
yor información el punto siguiente

Requiere más de una evaluación de la función f en cada paso si f es no lineal

El error local del order de ∆t 2 mientras que el error global es del orden de ∆t .

¿Qué ventaja puede tener el método de Euler implícito sobre el explícito si se necesita resolver una
ecuación no lineal (si f es no lineal) en cada paso?. Para verlo consideremos la ecuación diferencial

dy
= −αy
dt

cuya solución analítica es


y(t ) = y0 e −αt

la cual tiende a cero al tender t a infinito cuando α > 0. La solución es pues convergente. Si α < 0
la solución es divergente. Fijemonos en la solución convergente. Si aplicamos el método de Euler
tendríamos en el caso la ecuación en diferencias finitas

yn+1 = yn (1 − α∆t )

y en el caso del método de Euler implicito

yn
yn+1 =
1 + α∆t

Tratemos de resolver el par de ecuaciones anteriores para diferentes ∆t con α = 1. La figura 6.1 nos
muestra las soluciones obtenidas mediante el método de Euler explícito (izquierda) e implícito (dere-
cha). Como podemos ver ambos métodos dan soluciones que se aproximan bien a la solución analíti-
ca (curva azul continua) para valores pequeños de ∆t . Al ir aumentando el intervalo de discretización
la solución empeora, si embargo en el caso del método de Euler implícito todavía se aproxima a la
solución, cosa que no ocurre en el método de Euler explícito donde la solución se inestabiliza. Este
resultado nos indica que tenemos que tener en cuenta la estabilidad o inestabilidad del método de
integración. En el caso que acabamos de ver resulta que el método de Euler implícito es absoluta-
mente estable sin embargo el método de Euler explícito es condicionalmente inestable dependiendo
del valor de ∆t . Esto nos da pie a estudio de la estabilidad de las soluciones.
88 Capítulo – 6. Integración de ecuaciones diferenciales

10 10

t=0.1
8
5 t=0.5

t=1.5 t=1.5
6
t=0.5
0

4
t=0.1

-5
2

-10 0
0 5 10 15 20 0 5 10 15 20

Figura 6.1: La figura de la izquierda nos da la solución mediante el método de Euler explícito de la ecuación
diferencial d y/d t = −y para diferentes valores de ∆t . En la de la derecha se ha aplicado el método de Euler
implícito.

6.4. Errores

Un tema importante en todo método numérico es el de los errores cometidos. En el caso de las
ecuaciones diferenciales podemos agrupar los diferentes errores en

1. Errores en las condiciones iniciales (se supondrán despreciables)

2. Errores de trucamiento

3. Errores de redondeo

4. Errores heredados

Una ecuación diferencial con valores iniciales tiene como solución una familia infinita de solucio-
nes que depende de las condiciones iniciales (ver la figura 6.2). Los errores que se producen en el
transcurso del proceso de integración nos mueven a una curva diferente de la curva ’real’ que debería
seguir la solución exacta.

Errores en las condiciones iniciales

Como su nombre indica proceden de un desconocimiento exacto de las condiciones iniciales. Se


propagan a lo largo de todo el proceso de integración. Equivale a tomar un punto diferente al que
corresponde en el comienzo de las curvas que se muestra en la figura 6.2. Supondremos que son
despreciables. (no es cierto en el mundo real)
6.4 Errores 89

Figura 6.2

Errores de truncamiento

Como su nombre indica proceden de la aproximación hecha al sustituir la derivada por una dife-
rencia finita. Este error se produce en cada paso de tiempo, por lo que se van acumulando. Dependen
del tamaño de ∆t , al ir disminuyendo este, disminuye el error

Errores de redondeo

Se producen al usar un número de cifras finito en la representación de los números. Se hacen


importantes al restar dos números que pueden ser grandes, por lo que pueden aumentar cuando
∆t disminuye. Téngase en cuenta que al disminuir ∆t , más operaciones son necesarias y por tanto
aumenta el error. Los errores de redondeo se van acumulando según vamos avanzando en el proceso
de integración.

Errores heredados

Son los errores acumulados de todos los pasos previos. Esto significa que las condiciones iniciales
para el paso siguiente son incorrectas. En cada paso se sitúa la solución en un miembro diferente de
la familia de soluciones.
Vamos a definir de forma más concreta los errores anteriormente mencionado. Fijémonos en la
figura, (6.3), donde se son muestra la familia de curvas (curvas suaves a trazo) de la solución a una
ecuación diferencial una de las cuales corresponde a la solución particular para una cierta condición
inicial (curva suave continua) etiquetada mediante y(tn ). Asimismo se muestra la solución numérica
mediante la línea recta a trozos yn . Distinguiremos entre la solución numérica y la solución teórica,
en el primer caso pondremos yn y en el segundo bien ȳn o y(tn ) Se define como error global a la
cantidad, en = ȳ(tn ) − yn , para definir el error local, vamos a suponer que hemos usado el método de
90 Capítulo – 6. Integración de ecuaciones diferenciales

Local and global errors


1.15

yn+1

1.1

yn

1.05

y
ŷn+1

1

• •
y(tn ) y(tn+1 ) y(t)
0.95
1.3 1.35 1.4 1.45 1.5 1.55 1.6 1.65 1.7 1.75 1.8
t

Global error en = yn − y(tn ) and en+1 = yn+1 − y(tn+1 )


Local error ln+1 = ŷn+1 − y(tn+1 )

Numerical Methods for Differential Equations – p. 22/52

Figura 6.3

Euler explícito para hacer la integración numérica, en cuyo caso sabemos que

yn+1 = yn + h f (tn , yn )

situémonos en la posición teórica en el paso n y usemos la anterior ecuación para evaluar el nuevo
valor de y en el paso n + 1. La cantidad obtenida será

ŷn+1 = ȳn + h f (tn , ȳn )

a la diferencia entre ŷn+1 e ȳn+1 lo llamaremos error local.

ln = ȳn+1 − ŷn+1 (6.1)

También se define por algunos autores el error de truncamiento mediante la expresión

ln ȳn+1 − ŷn+1
Tn = = (6.2)
h h

De la definición de ln , en el caso que nos sirve de ejemplo del método de Euler explícito, se tiene

ln = ȳn+1 − ŷn+1 = ȳn+1 − ȳn − h f (tn , ȳn )

Desarrollemos en serie la cantidad ȳn+1 usando como punto base el valor de ȳ en el punto tn , tendre-
mos
1 d 2 ȳ ¯¯ 2
¯ ¯
d ȳ ¯¯
ȳn+1 = ȳn + h+ h +···
d t ¯n 2 d t 2 ¯n
6.5 Consistencia, orden, estabilidad y convergencia 91

teniendo en cuenta la ecuación diferencial d ȳ/d t = f (t , ȳ), por lo que sustituyendo se obtiene

1 d 2 ȳ ¯¯ 2
¯
ln = h +···
2 d t 2 ¯n

por lo que vemos que el método de Euler explícito tiene un error local del orden de h 2 o un error de
truncamiento Tn del orden de h. La evaluación del error local se ha hecho en el marco del método de
Euler. Dentro del marco de los métodos a un paso, podemos expresar modelos más generales que el
método de Euler, de la forma
yn+1 = yn + hφ(tn , yn , h) (6.3)

donde se ha sustituido f (t , y) por φ(tn , yn , h). La función φ(tn , yn , h) se supone que es una función
continua de sus argumentos. En este caso

ln = ȳn+1 − ȳn − hφ(tn , ȳn , h) (6.4)

o bien para el error de truncamiento

ȳn+1 − ȳn
Tn = − φ(tn , ȳn , h) (6.5)
h

Una vez evaluado el error de truncamiento o el error local se puede estimar el error global. Es posi-
ble demostrar, suponiendo que la función φ(tn , ȳn , h) cumpla una condición de Lipschitz (esto es se
supone que |φ(x, y, h) − φ(x, z, h)| ≤ Lφ |y − z|), que

e Lφ (tn −t0 ) − 1
en ≤ e Lφ (tn −t0 ) |e0 | + T

siendo T = max|Tk |, 0 ≤ k ≤ n.

6.5. Consistencia, orden, estabilidad y convergencia

Hay una serie de diferentes conceptos que son importantes en la integración numérica de las
ecuaciones diferenciales con valores iniciales, estos son los de consistencia, orden, estabilidad y con-
vergencia. Vamos a llamar FDE a la ecuación en diferencias finitas que aproxima a la ecuación dife-
rencial que llamaremos ODE. Diremos que una FDE es consistente con la ODE a la que sustituye si
la diferencia entre ellas se anula cuando ∆t → 0, esto es el error de truncamiento (6.2) tiende a cero
cuando ∆t → 0. El orden de una FDE, es la velocidad a la que el error de truncamiento tiende a cero
92 Capítulo – 6. Integración de ecuaciones diferenciales

cuando ∆t → 0. Una FDE se dice estable si da lugar a una solución acotada cuando la ecuación dife-
rencial genera una solución estable. Un método en diferencias finitas se dice que es convergente si la
solución numérica obtenida de la FDE se aproxima a la solución exacta cuando ∆t → 0
Para estudiar la estabilidad de la ODE (supuesto que la solución de esta última sea estable), debe-
mos de analizar la manera en la que se obtiene la solución de la FDE. Por norma general la solución
numérica se puede poner como
yn+1 = G yn

en la que dado el valor de y para un cierto paso n nos permite obtener y en el paso n + 1. Por regla
general G es un número complejo y es llamado el factor de amplificación. Repitiendo la ecuación
anterior desde el paso inicial se tiene
yn+1 = G n y0

de tal forma que si |G| > 1, la anterior ecuación diverge al tender n → ∞. Así pues para que el método
sea estable se debe de verificar que |G| ≤ 1. El análisis de estabilidad se puede realizar únicamente si
la ecuación diferencial es lineal. En el caso de tener una ecuación diferencial no lineal, se linealiza y se
hace un análisis de estabilidad local, esto es en el entorno del punto donde efectuamos el desarrollo
en serie. En el caso de tener una ecuación diferencial no homogénea, el análisis de estabilidad solo se
aplica a la solución de la homogénea, no a la solución particular.
Se puede demostrar que si tenemos una FDE que es consistente y estable, dicha ecuación es con-
vergente. O sea la solución obtenida tiende a la real cuando ∆t → 0

6.6. El método de Euler modificado

Los métodos de Euler, tanto explícito como implícito, son métodos de orden 1 (el orden local es 2,
(∆t )2 , pero el global 1 (∆t )). Son ambos de punto simple, (conocida la solución en el n-eximo punto
y la función en el n-eximo punto se evalúa la solución en el punto n+1). Vamos a ver como mejorar el
orden de la solución, manteniendo el resto de las propiedades.Consideremos la ecuación diferencial

d ȳ
= f ( ȳ, t )
dt

Supongamos que hemos discretizado en eje t en intervalos de anchura ∆t , vamos a desarrollar en


serie la función ȳ tomando como punto base un punto intermedio entre el punto tn y el tn+1 , tendre-
mos
∆t 1 ∆t 2
µ ¶
ȳn+1 = ȳn+1/2 + ȳ 0 |n+1/2 + ȳ 00 |n+1/2 +···
2 2 2
6.6 El método de Euler modificado 93

y
∆t 1 ∆t 2
µ ¶
ȳn = ȳn+1/2 − ȳ 0 |n+1/2 + ȳ 00 |n+1/2 −···
2 2 2
Sustituyendo la serie de Taylor por un polinomio de Taylor hasta el tercer orden y restando ambas
expresiones, tenemos ¯
d ȳ ¯¯ ȳn+1 − ȳn 1
= − ȳ 000 (τ)∆t 2
d t n+1/2
¯ ∆t 24
con tn ≤ τ ≤ tn+1 . Sustituyendo ȳ 0 de la ecuación diferencial original, se tiene

ȳn+1 − ȳn 1
= f (tn+1/2 , ȳn+1/2 ) + ȳ 000 (τ)∆t 2
∆t 24

de donde
1 000
ȳn+1 = ȳn + f (tn+1/2 , ȳn+1/2 )∆t + ȳ (τ)∆t 3
24
por lo que salvo un término de orden ∆t 3 , se tiene

yn+1 = yn + f (tn+1/2 , yn+1/2 )∆t

Vemos que hemos mejorado el orden de la integración (en el modelo de Euler normal, el orden era de
∆t 2 ). Ahora bien, tenemos un problema no conocemos yn+1/2 , ahora bien podemos usar el método
de Euler explícito para estimar este valor y luego usar el método anterior, así tenemos el proceso en
dos partes:

Parte predictiva:
P ∆t
yn+1/2 = yn + f (tn , yn )
2

Parte correctiva
C P
yn+1 = yn + ∆t f (tn+1/2 , yn+1/2 )

Juntando ambas partes, podemos escribir

1
yn+1 = yn + h f (tn+1/2 , yn + h f (tn , yn )); h = ∆t
2

de donde resulta que la función φ(t , yn , h) = f (tn+1/2 , yn + 21 h f (tn , yn )) Vamos a analizar la consis-
tencia, el orden y la estabilidad. Para estudiar la consistencia, evaluaremos el error de truncamiento
dado por la ecuación (6.5), desarrollando ȳn+1 en serie, tenemos

ȳn+1 − ȳn 1
= f (tn , ȳn ) + h ȳ 00 +O(h 2 )
h 2
94 Capítulo – 6. Integración de ecuaciones diferenciales

donde se ha tenido en cuenta que ȳn0 = f (tn , ȳn ). Por otra parte desarrollando en serie φ(t , ȳn , h) =
f (tn+1/2 , ȳn + 12 h f (tn , ȳn )), tenemos

1 ∂f ∂f
φ(tn , ȳn , h) = f (tn , ȳn ) + h( + f (tn , ȳn )) +O(h 2 )
2 ∂t ∂ ȳ

Ahora bien,
d ȳ 0 d f (t , ȳ) ∂ f ∂ f d ȳ ∂ f ∂ f
ȳ 00 (t ) = = = + = + f (t , ȳ)
dt dt ∂t ∂ ȳ d t ∂t ∂ ȳ
pues d ȳ/d t = f . Teniendo en cuenta esta expresión se tiene

1
φ(tn , ȳn , h) = f (tn , ȳn ) + h ȳ 00 (tn ) +O(h 2 )
2

por lo que el error de truncamiento vale

1 1
Tn = f (tn , ȳn ) + h ȳ 00 − ( f (tn , ȳn ) + h ȳ 00 (tn )) +O(h 2 ) = O(h 2 )
2 2

por lo que al tender ∆t = h → 0, Tn tiende a cero, por lo que el método es consistente. Puesto que Tn
es de orden 2, el orden del método es 2. Para analizar la estabilidad supondremos que f = −α ȳ

∆t
ȳn+1/2 = ȳn + (−α ȳn ) +O(∆t 2 )
2

sustituyendo en la expresión anterior para ȳn+1 (desarrollo en ∆t 3 anterior), teniendo en cuenta que
ahora f = −α ȳ y que por tanto f (tn+1/2 , ȳn+1/2 ) = −α ȳn+1/2

∆t
· ¸
1
ȳn+1 = ȳn − α ȳn + (−α ȳn ) +O(∆t 2 ) ∆t + ȳ 000 (τ)∆t 3
2 24

Reordenando,
(α∆t )2
· ¸
ȳn+1 = 1 − α∆t + ȳn +O(∆t 3 )
2
despreciando términos en ∆t 3 , obtenemos la FDE (de un solo paso) correspondiente al método del
punto medio modificado
(α∆t )2
· ¸
yn+1 = 1 − α∆t + yn
2
de donde vemos que el factor de amplificación G vale,

(α∆t )2
G = 1 − α∆t +
2
6.7 Métodos Runge-Kutta 95

el cual resulta ser |G| ≤ 1 siempre y cuando α∆t ≤ 2, por lo que el método resulta se condicionalmente
estable. Como es consistente y estable (para ciertos valores de ∆t ) el método es convergente.
Una manera alternativa de evaluar f (tn+1/2 , yn+1/2 ) es suponer que

1
f (tn+1/2 , yn+1/2 ) = ( f (tn , yn ) + f (tn+1 , yn+1 )
2

Ahora bien no conocemos yn+1 , pero podemos usar el método de Euler como en el caso anterior y
por tanto hacer el proceso en dos partes,

Parte predictiva:
P
yn+1 = yn + ∆t f (tn , yn )

Parte correctiva
C 1
yn+1 = yn + ∆t [ f (tn , yn ) + f P (tn+1 , yn+1
P
)]
2

Este método recibe el nombre de método de Euler modificado o método de Heun. Como en el
caso anterior se puede demostrar que

(α∆t )2
· ¸
yn+1 = 1 − α∆t + yn
2

Por lo que el método es consistente, condicionalmente estable (α∆t ≤ 2) y por tanto convergente.

6.7. Métodos Runge-Kutta

Los métodos Runge-Kutta, los cuales son muy polulares a la hora de resolver ecuaciones diferen-
ciales, consisten en evaluar la cantidad ∆y = yn+1 − yn como suma de unos ∆yi con ciertos pesos, y
estos ∆yi se supone que se evalúan como ∆t multiplicado por la función f evaluada en una serie de
puntos intermedios. Por ejemplo en el método Runge-Kutta de segundo orden se supone que

yn+1 − yn = ∆y = C1 ∆y1 +C2 ∆y2

con
∆y1 = ∆t f (tn , yn )

(esta parte equivale al método de Euler) y

∆y2 = ∆t f (tn + α∆t , yn + βy1 )


96 Capítulo – 6. Integración de ecuaciones diferenciales

(esta parte corresponde a la corrección realizada en el método del punto medio). Los parámetros
C1 ,C2 , α, β hay que determinarlos. Sustituyendo tenemos

yn+1 = yn +C1 ∆t f (tn , yn ) +C2 ∆t f (tn + α∆t , yn + βy1 )

Desarrollando en serie la función f , tenemos

df df
f (tn + α∆t , yn + βy1 ) = f (tn , yn ) + α∆t + β∆t f (tn , yn ) +O(∆t 2 )
dt dy

Sustituyendo,
¯ ¯ ¶
d f ¯¯ d f ¯¯
µ
2
yn+1 = yn + (C1 +C2 )∆t f (tn , yn ) + ∆t αC2 + βC2 f (tn , yn ) +O(∆t 3 )
d t ¯n d y ¯n

Por otra parte, haciendo el desarrollo en serie de ȳ en torno al punto ȳn tenemos

1
ȳn+1 = ȳn + ȳn0 ∆t + ȳn00 ∆t 2 + · · ·
2

teniendo en cuenta que


ȳn0 = f (tn , ȳn )

se tiene que
d yn0
¯ ¯ ¯
d f (t , ȳ) ¯¯ d f (t , ȳ) ¯¯ d f (t , ȳ) d ȳ ¯¯
yn00 = = = + =
dt d t ¯tn , ȳn d t ¯tn , ȳn d ȳ d t ¯tn , ȳn
¯
d f (t , ȳ) ¯¯ d f (t , ȳ)
= + f (tn , ȳn )
dt ¯
tn , ȳn d ȳ

De donde
à ¯ !
1 2 d f (t , ȳ) ¯¯ d f (t , ȳ)
ȳn+1 = ȳn + f (tn , ȳn )∆t + ∆t + f (tn , ȳn ) +O(∆t 3 )
2 d t ¯tn , ȳn d ȳ

Comparando las expresiones exacta y aproximada se ve que

C1 +C2 = 1, αC2 = 1/2, βC2 = 1/2

Tenemos 4 incógnitas y tres ecuaciones, el sistema queda indeterminado. Eligiendo C1 = 1/2 se tiene
que C2 = 1/2 y α = β = 1 se obtiene el método de Euler modificado. Sin embargo si elegimos C1 = 0
tenemos C2 = 1, α = β = 1/2 obteniendo el método del punto medio modificado.
6.7 Métodos Runge-Kutta 97

En la literatura se suele nombrar a los ∆yi como ki , obteniendo para el método de Euler modifi-
cado (Heun) la expresión

1
yn+1 = yn + (k1 + k2 )
2
k1 = ∆t f (tn , yn )
k2 = ∆t f (tn + ∆t , yn + k1 )

6.7.1. El método Runge-Kutta de 4º orden

Es uno de los métodos más utilizados en la solución de las ecuaciones diferenciales con condi-
ciones iniciales, como su nombre indica, se supone que ahora tenemos 4 subintervalos

yn+1 = yn +C1 ∆y1 +C2 ∆y2 +C3 ∆y3 +C4 ∆y4

se puede demostrar, de forma parecida al caso anterior de 2º orden que,

1
yn+1 = yn + (k1 + 2k2 + 2k3 + k4 )
6

siendo

k1 = ∆t f (tn , yn )
∆t k1
k2 = ∆t f (tn + , yn + )
2 2
∆t k2
k3 = ∆t f (tn + , yn + )
2 2
k4 = ∆t f (tn + ∆t , yn + k3 )

Se puede demostrar que el método es consistente y que es condicionalmente estable pues el factor
de ganancia vale
1 1 1
G = 1 − α∆t + (α∆t )2 − (α∆t )3 + (α∆t )4
2 6 24
el cual es menor o igual que 1 para α∆t ≤ 2,785. La consistencia y la estabilidad nos garantizan que el
método es convergente. Se puede ver así mismo que el error de truncamiento es del orden de ∆t 4 .
98 Capítulo – 6. Integración de ecuaciones diferenciales

6.8. Solución de sistemas de ecuaciones

Nos proponemos usar ahora el método de RK de cuarto orden para resolver un sistema de ecua-
ciones diferenciales

du
= f (t , u, v)
dt
dv
= g (t , u, v)
dt

Similarmente al caso de una sola ecuación diferencial se puede poner

1
un+1 = un + (k1 + 2k2 + 2k3 + k4 )
6
1
vn+1 = vn + (`1 + 2`2 + 2`3 + `4 )
6

siendo ahora

k1 = ∆t f (tn , un , vn )
∆t k1 `1
k2 = ∆t f (tn + , un + , vn + )
2 2 2
∆t k2 `2
k3 = ∆t f (tn + , un + , vn + )
2 2 2
k4 = ∆t f (tn + ∆t , un + k3 , vn + `3 )

`1 = ∆t g (tn , un , vn )
∆t k1 `1
`2 = ∆t g (tn + , un + , vn + )
2 2 2
∆t k2 `2
`3 = ∆t g (tn + , un + , vn + )
2 2 2
`4 = ∆t g (tn + ∆t , un + k3 , vn + `3 )

Se puede aplicar los métodos para resolver sistemas de ecuaciones para resolver sistemas de segundo
orden. Suponed que se quiere resolver la ecuación para un cohete de masa variable propuesto al
6.8 Solución de sistemas de ecuaciones 99

principio de este tema


d2 y T
= −g
dt 2 M − µt
que es una ecuación diferencial de segundo orden. Introduzcamos la velocidad v, por definición

dy
=v
dt

por lo que
dv T
= −g
dt M − µt
lo que nos ha generado un sistema de dos ecuaciones diferenciales cuya solución nos da y(t ), v(t ).

Das könnte Ihnen auch gefallen