Métodos
Numéricos
Capítulo
1.
Preliminares
matemá4cos
Carlos
Beltrán
Álvarez
Departamento
de
Matemá.cas,
Estadí[Link]
y
Computación
Este
tema
se
publica
bajo
Licencia:
[Link]
Commons
BY-‐NC-‐SA
4.0
FACULTAD DE CIENCIAS
UNIVERSIDAD DE CANTABRIA
APUNTES PARA LA ASIGNATURA:
Métodos Numéricos
Tercero de Grado en Fı́sica
Carlos Beltrán
Profesor Titular de Análisis Matemático
Departamento de Matemáticas, Estadı́stica y Computación
Universidad de Cantabria
2
Índice general
1. Preliminares matemáticos 5
1.1. Lı́mites de funciones y sucesiones, continuidad y derivabilidad . . . . . . . . . . . . . . . . . . . . 5
1.2. La integral de una función de una variable real . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3. El teorema de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4. Algunos comentarios genéricos sobre aritmética computacional . . . . . . . . . . . . . . . . . . . 9
1.5. Exercises. Computer arithmetic: representation and errors . . . . . . . . . . . . . . . . . . . . . . 12
2. Interpolación y aproximación de funciones 13
2.1. Interpolación polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.1. Un comentario sobre el Teorema de aproximación de Weierstrass y los polinomios de Taylor 14
2.1.2. Polinomios interpolantes de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.3. Polinomios interpolantes y funciones derivables . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.4. Diferencias divididas de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.5. La elección de los nodos y los polinomios de Chebyshev . . . . . . . . . . . . . . . . . . . 22
2.2. Interpolación polinomial a trozos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.1. Interpolación lineal a trozos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.2. Trazadores o “splines” cúbicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3. El método de mı́nimos cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4. Exercises. Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3. Derivación e integración numérica aproximada de funciones 39
3.1. Cálculo aproximado de derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.1. Fórmulas para la primera derivada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.2. Fórmulas para la segunda derivada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.1.3. Adivinando el futuro sin saber casi nada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.4. Cálculo de derivadas en presencia de errores de medición . . . . . . . . . . . . . . . . . . 47
3.1.5. Derivadas de orden superior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.1.6. Cálculo de matrices Jacobianas, gradientes, divergencias y Laplacianos . . . . . . . . . . . 48
3.2. Exercises. Numerical differentiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3. Integrales definidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3.1. Métodos basados en la interpolación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3.2. Métodos de cuadratura Gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.3. Integrales múltiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.4. Exercises. Numerical integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3
4 ÍNDICE GENERAL
4. La resolución de ecuaciones y de sistemas de ecuaciones 69
4.1. Ecuaciones de una variable real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1.1. El método de bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1.2. Métodos de punto fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.1.3. Métodos de Newton y de la secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.2. La resolución de sistemas de ecuaciones no–lineales . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.2.1. El método de Newton para varias variables . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.2.2. Método del gradiente o del descenso más rápido . . . . . . . . . . . . . . . . . . . . . . . . 81
4.3. Exercises. Solving f (x) = 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5. Resolución de problemas de valores iniciales 87
5.1. Teorı́a elemental de los problemas de valor inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.2. Reducción al caso de problemas de primer orden . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3. Métodos basados en la expansión de Taylor: Euler y Euler modificado. . . . . . . . . . . . . . . . 90
5.3.1. Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.2. Método de Euler modificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.4. Métodos de Runge–Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.5. Exercises. ODEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6. Problemas resueltos 103
6.1. Un globo sumergido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.2. Una pelota flotando en una piscina grande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.3. Un planeta en un sistema estelar múltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.3.1. Un planeta como Júpiter orbitando uno y dos soles como el nuestro . . . . . . . . . . . . 108
6.3.2. Un planeta como Júpiter orbitando dos soles como el nuestro muy separados . . . . . . . 111
6.4. Puntos de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.5. Altura del impacto de una bala en un muro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.6. Exercises: More proposed problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
7. Algunos temas más allá del alcance de este curso 121
7.1. Análisis del error para los métodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.2. El método de Broyden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3. Métodos de homotopı́a o de continuación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.4. Métodos de Taylor de orden superior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
1
Capı́tulo 1
Preliminares matemáticos
Una de las afirmaciones más famosas de la Historia, tanto por su lucidez como por su fundamental aportación
al cambio de paradigma en el conocimiento humano, se la debemos al padre de la Ciencia moderna, Galileo
Galilei, en su obra maestra “Il Saggiatore”:
La filosofia è scritta in questo grandissimo libro che continuamente ci sta aperto innanzi a gli occhi
(io dico l’universo), ma non si può intendere se prima non s’impara a intender la lingua, e conoscer
i caratteri, ne’ qua li è scritto. Egli è scritto in lingua matematica, e i caratteri son triangoli, cerchi,
ed altre figure geometriche, senza i quali mezi è impossibile a intenderne umanamente parola; senza
questi è un aggirarsi vanamente per un oscuro laberinto.
Siguiendo el consejo de este sabio, para evitar perdernos en el oscuro laberinto en el que vivimos, comenzamos
estos apuntes con un repaso de algunos resultados (más o menos) elementales de cálculo y análisis numérico.
1.1. Lı́mites de funciones y sucesiones, continuidad y derivabilidad
Comenzamos recordando la definición de lı́mite. Para ello es útil recordar que un número real x0 se dice que es
un punto de acumulación de un conjunto X ⊆ Rn si para cada > 0 existe un x ∈ X \ {x0 } tal que kx − x0 k < .
Esto es, si uno puede acercarse a x0 arbitrariamente “pisando” solo en puntos de X.
Definición 1.1.1 Dada una función f : X → Rm con X ⊆ Rn , y dado x0 ∈ Rn un punto de acumulación de
X, decimos que f tiene lı́mite L ∈ Rm en x0 cuando para todo > 0 existe δ > 0 tal que 0 < kx − x0 k < δ
junto con x ∈ X implica kf (x) − Lk < . Escribimos esta propiedad de varias maneras equivalentes:
lı́m f (x) = L, f (x) → L, f (x) → L cuando x → x0 .
x→x0 x→x0
Definición 1.1.2 Dada una función f : X → Rm con X ⊆ Rn , y dado x0 ∈ X un punto de acumulación de
X, decimos que f es continua en x0 si lı́mx→x0 f (x) = f (x0 ). Decimos que la función es continua en A ⊆ X si
lo es en cada punto de A. Si f es continua en todo su dominio, decimos simplemente que f es continua.
Definición 1.1.3 Sea {xk }1≤k≤∞ ⊆ Rn una sucesión infinita de vectores reales o complejos. Decimos que la
sucesión converge a x si para todo > 0 existe algún k0 ≥ 1 tal que k ≥ k0 implica kxk − xk < . Escribimos
esta propiedad de varias maneras equivalentes:
lı́m xk = x, xk → x, xk → x, xk → x cuando k → ∞.
k→∞ k→∞ k
5
6 CAPÍTULO 1. PRELIMINARES MATEMÁTICOS
Las dos definiciones vistas de lı́mite (para funciones y para sucesiones) se relacionan con el siguiente resultado.
Teorema 1.1.4 Dada una función f : X → Rm con X ⊆ Rn , y dado un punto de acumulación x0 ∈ Rn de X,
son equivalentes:
i) lı́mx→x0 f (x) = L
ii) Para cualquier sucesión de vectores {xk }1≤k≤∞ que converja a x0 , la sucesión {f (xk )}1≤k≤∞ converge a
L.
El conjunto de las funciones continuas definidas en un conjunto X se denota por C(X), aunque si X es un
intervalo se abusa ligeramente de la notación y se denota C[a, b] o C(a, b], etc.
Definición 1.1.5 (Derivada Direccional, Diferencial, Matriz Jacobiana) Sea f : X → Rm una función
definida en un conjunto X ⊆ Rn y sea x0 ∈ X tal que hay un entorno abierto que contiene a x0 y está contenido
en X. La función es diferenciable (o derivable) en x0 si existe una aplicación lineal L tal que
kf (x0 + v) − f (x0 ) − Lvk
lı́m = 0.
v→0 kvk
En este caso, la aplicación L se llama derivada o diferencial de f en x0 y se denota por Df (x0 ) con lo que
tenemos
Df (x0 ) : Rn → Rm
f (x0 +tv)−f (x0 )
v 7→ lı́mt→0 t
Nótese que esta aplicación manda cada vector v a la derivada direccional de f en el punto x0 en la dirección de
v. Si f es diferenciable en x0 entonces la aplicación Df (x) en bases canónicas de Rn y Rm es simplemente la
matriz Jacobiana Jf (x0 ) cuya entrada (i, j) es ∂fi /∂xj .
Decimos que la función es derivable en A ⊆ X si lo es en cada punto de A. Si f es derivable en todo su dominio,
decimos simplemente que f es derivable. En dicho caso (que técnicamente solo es posible si el dominio de f
es abierto) la función x → Df (x) está definida en el mismo dominio, se llama la derivada de f , y a veces la
denotamos simplemente por f 0 . Nótese que f 0 va de X al conjunto de aplicaciones lineales de Rn a Rm , esto es,
eligiendo bases canónicas, f 0 va de X al conjunto de matrices Rm×n ≡ Rmn . Si m = n = 1, la derivada usual
es f 0 (x0 ) = Jf (x0 ). Si X = [a, b] ⊆ R, en los extremos a, b hablamos de derivadas laterales, no estrictamente
de derivadas.
Si Df es derivable, podemos considerar su derivada D(Df ) que se denota D2 f y se llama segunda derivada, y
siguiendo este mismo método las derivadas sucesivas. A veces se usa la notación:
f (0) = f = D0 (f ), f (1) = f 0 = D(f ), f (2) = f 00 = D2 (f ), . . .
El conjunto de funciones k veces diferenciables (esto es, tales que está bien definida Dk (f )) en un conjunto
X con dichas k derivadas continuas se denota C k (X, Rm ), de forma que se tiene C(X, Rm ) ≡ C 0 (X, Rm ) ⊇
C 1 (X, Rm ) ⊇ C 2 (X, Rm ) ⊇ · · · . La intersección de todos esos conjuntos (a veces llamado como el conjunto de
funciones infinitamente diferenciables, smooth functions en inglés) se denota C ∞ (X, Rm ). Si m = 1 es habitual
escribir C k (X) en lugar de C k (X, R).
Por el momento, esta definición tiene sentido solo cuando X es un conjunto abierto. Sin embargo, frecuentemente
utilizaremos la notación f ∈ C k [a, b] que no está incluida en la discusión anterior por no ser [a, b] abierto.
Extendemos pues la definición para cualquier X ⊆ Rn : dado X ⊆ Rn , definimos C k (X, Rm ) como el conjunto
de funciones definidas en X que pueden extenderse a algún conjunto abierto U ⊇ X de forma que la extensión
está en C k (U, Rm ).
1.2. LA INTEGRAL DE UNA FUNCIÓN DE UNA VARIABLE REAL 7
Teorema 1.1.6 Supongamos que f : X → Rm con X abierto es tal que existen todas las derivadas parciales de
orden k y que son continuas con respecto a x. Entonces, f ∈ C k (X, Rm ).
En virtud del Teorema 1.1.6, la gran mayorı́a de las funciones con las que trabajaremos son de tipo C ∞ ,
esto es infinitamente diferenciables. Entran en esta categorı́a los polinomios, las funciones trigonométricas e
hiperbólicas, la exponencial, el logaritmo (definido en (0, ∞)), la raı́z cuadrada (que pertenece a C ∞ (0, ∞) y a
C[0, ∞)), etc.
Tres de los resultados básicos más importantes del cálculo son el Teorema de los Valores Intermedios (TVI),
el Teorema de los Valores Extremos (TVE) y el Teorema del Valor Medio (TVM), que resulta imprescindible
conocer y diferenciar. El primero y el tercero de ellos son válidos para funciones de varias variables (el segundo,
no) y los dos primeros tienen corolarios bien conocidos.
Teorema 1.1.7 (Teorema de los Valores Intermedios) Sea f ∈ C(X) con X ⊆ Rn conexo por caminos
(por ejemplo, X un intervalo). Si y1 , y2 están en la imagen de f entonces todo número entre y1 e y2 está también
en la imagen de f . Más generalmente, la imagen de conjunto conexo por una función continua es siempre un
conjunto conexo.
Corolario 1.1.8 (Teorema de Bolzano) Sea f ∈ C(X) con X ⊆ Rn conexo por caminos (por ejemplo, X
un intervalo). Si f (a) y f (b) tienen distinto signo, entonces existe al menos un c en X tal que f (c) = 0.
Teorema 1.1.9 (Teorema del Valor Medio) Sea f ∈ C[a, b] y f derivable en (a, b). Entonces, existe un
número c ∈ (a, b) tal que
f (b) − f (a)
f 0 (c) = .
b−a
Corolario 1.1.10 (Teorema de Rolle) Sea f ∈ C[a, b] y f derivable en (a, b). Si f (a) = f (b) entonces existe
c ∈ (a, b) tal que f 0 (c) = 0.
El Teorema de Rolle tiene una versión más fuerte que no es habitual encontrar en textos básicos de cálculo, y
que se obitene aplicando el resultado básico a f , a f 0 , y ası́ sucesivamente hasta llegar a f (k) :
Corolario 1.1.11 (Teorema de Rolle Generalizado) Sea f ∈ C[a, b] y f k veces derivable en (a, b). Si f
alcanza el mismo valor en k + 1 puntos distintos de [a, b] entonces existe c ∈ (a, b) tal que f (k) (c) = 0.
Teorema 1.1.12 (Teorema de los Valores Extremos) Sea f ∈ C(X) con X ⊆ Rn compacto (esto es,
cerrado y acotado). Entonces, existen c1 , c2 ∈ X tales que f (c1 ) ≤ f (x) ≤ f (c2 ) para todo x ∈ X.
En las condiciones del Teorema 1.1.12, es un resultado elemental estudiado en los primeros cursos de cálculo
que si f es derivable en (a, b) entonces c1 y c2 solo pueden ser puntos en los que la derivada se anula, o bien los
extremos del intervalo. Esto se demuestra fácilmente utilizando los teoremas 1.1.9 y 1.1.12.
De forma similar, si f : X → R con X ⊆ Rn es diferenciable y si f alcanza su máximo o su mı́nimo en x ∈ X
entonces o bien x está en la frontera de X o bien todas las derivadas parciales se anulan en x, esto es, el gradiente
de f en x es 0.
1.2. La integral de una función de una variable real
No trataremos de exponer aquı́ toda la teorı́a que lleva a la definición de la integral de una variable real (cuestión
que merecerı́a todo un curso tratándolo con rigor, y que solo llegó a ser entendida correctamente a partir de
mediados del Siglo XX con la aparición de la Integral de Lebesgue). En su lugar consideraremos una definición
simplificada válida únicamente para funciones continuas en [a, b]:
8 CAPÍTULO 1. PRELIMINARES MATEMÁTICOS
Definición 1.2.1 Dada f ∈ C[a, b], definimos su integral como
Z b n
b−a X b−a
f (x) dx = lı́m f a+i .
a n→∞ n + 1 n
i=0
Esto es, dado n tomamos la media ponderada de los valores de f en los n + 1 puntos que se obtienen al dividir
[a, b] en n partes iguales, y tomamos entonces el lı́mite de esa cantidad.
Pertenece al ámbito de los cursos de integración ver que la definición que hemos dado coincide con la definición
de la integral definida (de Riemann y de Lebesgue) para el caso de f ∈ C[a, b].
Un resultado que no se suele contar en los libros de texto básicos pero que es muy útil conocer es el Teorema
del Valor Medio Ponderado para Integrales (TVMPI):
Teorema 1.2.2 (Teorema del Valor Medio Ponderado para Integrales) Sean f, g ∈ C[a, b].Supongamos
que g no cambia se signo en [a, b]. Entonces, existe c ∈ (a, b) tal que
Z b Z b
f (x)g(x) dx = f (c) g(x) dx.
a a
Cuando g ≡ 1 obtenemos el conocido resultado que nos dice que si f ∈ C[a, b] entonces f alcanza su valor
promedio de f , esto es que existe c ∈ (a, b) tal que
Z b
1
f (c) = f (x) dx.
b−a a
Recordemos ası́mismo otro de los pilares fundamentales del análisis matemático:
Teorema 1.2.3 (Teorema Fundamental del Cálculo) Sea f : [a, b] → R continua. Entonces,
Z x
F (x) = f (t) dt
a
es una primitiva de f , en el sentido de que F 0 (x) = f (x) para todo x ∈ (a, b), y de la misma manera en a, b
utilizando las derivadas laterales. Es más, sea G cualquier primitiva de f en ese mismo sentido. Entonces, F (x)
y G(x) difieren a lo más en una constante, y se tiene
Z x Z x
f (t) dt = G(x) − G(a), esto es G(x) = G(a) + f (t) dt.
a a
La última afirmación del Teorema Fundamental del Cálculo suele llamarse Regla de Barrow.
1.3. El teorema de Taylor
Los polinomios de Taylor son una de las herramientas fundamentales para el estudio de los métodos numéricos.
Recordemos el siguiente resultado.
Teorema 1.3.1 (Teorema de Taylor con Resto de Lagrange y de Cauchy) Supongamos que f ∈ C n [a, b],
que f n+1 existe en (a, b) y que x0 ∈ [a, b]. Entonces, para cada x ∈ [a, b] existe ζx ∈ (x0 , x) tal que
f (x) = Pn (x) + Rn (x),
1.4. ALGUNOS COMENTARIOS GENÉRICOS SOBRE ARITMÉTICA COMPUTACIONAL 9
donde
n
f 00 (x0 ) f (n) (x0 ) X f (k) (x0 )
Pn (x) = f (x0 ) + f 0 (x0 )(x − x0 ) + (x − x0 )2 + · · · + (x − x0 )n = (x − x0 )k
2! n! k!
k=0
es el n–ésimo polinomio de Taylor para f respecto a x0 y Rn (x) (llamado error de truncamiento) es
f (n+1) (ζx )
Rn (x) = (x − x0 )n+1 ,
(n + 1)!
que se suele llamar resto de Lagrange. Es más, si f ∈ C n+1 [a, b], podemos escribir f (x) = Pn (x) + Sn (x) donde
Z x n+1
f (t)
Sn (x) = (t − x0 )n dt,
x0 n!
que se suele llamar resto de Cauchy.
Si dejamos tender n a infinito en el teorema 1.3.1, suponiendo que f es de tipo C ∞ , obtenemos una expresión
llamada serie de Taylor:
∞
X f (k) (x0 )
(x − x0 )k .
k!
k=0
Para muchas de las funciones habituales y para todos los x0 en su dominio, se tiene que esta serie formal coincide
punto a punto con la función original, en un intervalo abierto que contiene a x0 . Sin embargo, no siempre es
cierta esta igualdad. Cuando se cumple decimos que tenemos una función analı́tica (o C ω ), una propiedad más
restrictiva que ser C ∞ , esto es C ω (X) ( C ∞ (X).
En el caso particular x0 = 0 los polinomios de Taylor se suelen llamar polinomios de Maclaurin y las series de
Taylor, las series de Maclaurin.
El siguiente resultado será útil en varias ocasiones.
Teorema 1.3.2 Sean g, u dos funciones continuas en x0 de forma que u es derivable en x = x0 y u(x0 ) = 0.
Entonces, f (x) = g(x)u(x) es derivable en x = x0 y f 0 (x0 ) = g(x0 )u0 (x0 ).
Demostración. Usamos la definición de la derivada como lı́mite:
f (x) − f (x0 ) g(x)u(x)
lı́m = lı́m = g(x0 )u0 (x0 ),
x→x0 x − x0 x→x0 x − x0
luego el lı́mite existe y vale lo que afirma el teorema.
1.4. Algunos comentarios genéricos sobre aritmética computacional
Estamos acostumbrados a operar utilizando las reglas habituales que hacen conmutativos a la suma y al pro-
ducto, que
√ permiten el uso de las propiedades asociativa y distributiva, que proporcionan igualdades muy útiles
como ( 2)2 = 2 ó log(2/3) = log 2 − log 3, y desigualdades también útiles como a > b, c > d ⇒ a + c > b + d
teniendo muchas de estas propiedades un efecto importantı́simo en nuestra capacidad de comprensión del mundo.
Estas propiedades son ciertas para los números reales (muchas de ellas, también para los complejos), pero
lamentablemente pueden fallar cuando utilizamos números en la calculadora o el ordenador. Por ejemplo, si
10 CAPÍTULO 1. PRELIMINARES MATEMÁTICOS
dividimos 1 por 2, el resultado lo dividimos por 2 y ası́ sucesivamente, en un número finito de pasos el ordenador
nos dará el resultado 0.
Este problema es inevitable, dado que por muy potente que sea un ordenador solo contendrá una cantidad finita
de información y es imposible poder representar en él de forma general un número con una cantidad de cifras
arbitrariamente grande en su expansión decimal o binaria. Por ejemplo, no existe ni existirá jamás un ordenador
en el que podamos escribir el número π con toda su precisión. ¿Qué podemos esperar entonces?
El problema de cómo representar números en ordenadores y calculadoras de una forma lo más eficaz posible
(esto es, de forma que las dificultades expresadas más arriba pasen desapercibidas en la mayorı́a de aplicaciones)
ha sido discutido durante decenas de años, y cuando los ordenadores adquirieron una importancia fundamental
en el desarrollo de la ciencia y en el mantenimiento de la paz mundial se hizo necesario alcanzar un estándar
que pudiese ser utilizado por todos a la vez, de modo que, aunque nadie pudiese representar por ejemplo π con
exactitud, sı́ que estuviese garantizado que todo el mundo lo representase de la misma manera, evitando ası́
muchos errores en la comunicación y en el cálculo de resultados.
La importancia de los ordenadores es anterior al establecimiento de este estándar (¿Habrı́a observado Yuri
Gagarin nuestro planeta desde ahı́ arriba, existirı́a el seguro mundial contra ambiciones llamado “destrucción
mútua total y asegurada”, sin los ordenadores primigenios? Estos sucesos son anteriores al estándar de repre-
sentación actual.) pero la aritmética computacional es mucho mejor comprendida desde que en 1985 el Institute
for Electrical and Electronic Engineers, IEEE, de los Estados Unidos, publicó el estándar que se utiliza hoy en
dı́a. Hay, esencialmente, una única variación de un procesador a otro, a saber, el número de bits. Antiguamente
los procesadores de 32 bits eran los más habituales, a fecha de hoy (julio de 2017) son los de 64 bits los que
tienen la mayorı́a de los PCs de sobremesa, pero existen máquinas potentes con mayor precisión usadas en los
cálculos de las grandes compañı́as y de los gobiernos más poderosos del planeta. Tarde o temprano el estándar
en los ordenadores personales pasará a ser el de 128 bits y seguramente más aún en el futuro, pero por mucho
que crezca siempre será un número finito.
Dado que hacer una exposición general es demasiado abstracto, nos centraremos en el estándar IEEE de 64 bits,
que nos permitirá comprobar las afirmaciones que hagamos usando nuestros ordenadores.
Los llamados “números en doble precisión” o “números en coma flotante de 64 bits” o “números en coma flotante
largos”, se representan por 64 cifras binarias (1’s ó 0’s): la cadena
s (1 bit) c (11 bits) m (52 bits)
| {z } | {z } | {z }
signo caracterı́stica mantisa
representa el número
(−1)s 2c−1023 1.m,
donde hemos de entender que tanto m como c están escritos en binario. El número 1023 se escribe en binario
como 01111111111 (el primer 0 lo podemos quitar, pero ası́ tiene 11 cifras). Por lo tanto el número
0 01111111111 0000000000000000000000000000000000000000000000000000
representa a:
(−1)0 20 1,0 = 1,
y es fácil generar más ejemplos usando esta regla. Algunas excepciones a la regla son:
Cuando la caracterı́stica es 00000000000 la fórmula para representar el número se convierte en
(−1)s 2−1023 0.m,
de forma que puede codificar el número 0 (que puede tener signo, nótese).
1.4. ALGUNOS COMENTARIOS GENÉRICOS SOBRE ARITMÉTICA COMPUTACIONAL 11
Cuando la caracterı́stica es 11111111111, si la mantisa es todo ceros el número es +∞ ó −∞ dependiendo
de si s = 0 o s = 1. Si la mantisa no es todo ceros, el número es NaN (“not a number”), por ejemplo el
procesador devuelve este valor si le preguntamos cuánto vale 0/0, ∞ − ∞, u otras indeterminadas.
Si bien el detalle técnico de estas consideraciones es muy farragoso, podemos extraer algunas verdades prácticas
que son las que más nos interesan en este curso:
En nuestros ordenadores se puede representar un subconjunto finito de los números reales, siendo el
cardinal de este conjunto menor que 264 .
Todos los números (señalamos que ±∞ y NaN no son números propiamente dichos) representables
√ en el
estándar IEEE de 64 bits son racionales. En particular, no podemos escribir exáctamente 2, π, e, 1/3, ni
ningún otro número con infinitas cifras binarias.
Algunos números que se pueden escribir fácilmente en notación decimal, por ejemplo 1/5, no tienen
representación finita en binario, luego no se pueden representar exactamente en nuestros ordenadores con
el estándar de IEEE (obviamente, podemos representarlo de otras maneras).
El número más grande que podemos escribir es 21023 (2 − 2−52 ), y el más pequeño pero mayor que 0 es
2−1074 .
Al escribir un número en el ordenador, el procesador toma el número representable en coma flotante más
cercano al que le damos, tomando en caso de que haya dos a la misma distancia el más cercano a 0.
Al operar con números, los procesadores supuestamente devuelven el número representable más cercano
al resultado verdadero de la operación (operación que recibe como input números en coma flotante).
Estas aproximaciones (en el input y en la operación) hacen que en cada operación computacional se genere
un (normalmente muy pequeño) error de redondeo.
El número más grande tal que al añadirlo a 1 sigue siendo 1 se llama “unidad de redondeo”, vale = 2−53 ,
y nos da la precisión relativa esperada en los cálculos. Por ejemplo, al sumar dos números a, b podemos
esperar que el resultado sea (a + b)(1 + δ) donde 0 ≤ |δ| ≤ . Lo mismo para la resta, el producto y la
división.
Hay unas pocas operaciones no recomendables, que deberı́amos evitar en la medida de lo posible por
favorecer la aparición de errores de redondeo (¡en ocasiones, serán inevitables! Lo veremos en el capı́tulo
3): restar dos números muy parecidos entre sı́, dividir por un número muy pequeño, multiplicar un número
muy pequeño por otro muy grande, o sacar la raı́z cuadrada de un número muy pequeño.
Las propiedad conmutativa de la suma y el producto sı́ se mantiene, pero no ası́ la asociativa ni la
distributiva. Probemos por ejemplo a escribir (253 + 1) − 253 frente a (253 − 253 ) + 1. ¡Nótese que estamos
usando una de las operaciones poco recomendables!
12 CAPÍTULO 1. PRELIMINARES MATEMÁTICOS
1.5. Exercises. Computer arithmetic: representation and errors
Exercise 1.1
Let M ,m,δ be respectively the largest number, the smallest nonzero and the smallest but greater than 1 IEEE
64 bits number. Check the result of computing the following operations:
M +1, M +M, 3∗M, m/2, m−m/2, (m+m)/3, 1+δ/2, (2+δ)/2, M −M +1, M +1−M, , m+1−m.
Do the usual associative and conmutative rules apply to this representation of numbers?
Exercise 1.2
Assume that we attempt to compute the harmonic series n≥1 n1 using Matlab by simply adding one term after
P
another. What would be the result? Try to deduce a theoretic estimate. How long would it take to check the
computation with Matlab?
Exercise 1.3
1 1
P P
Same question as above but with n≥1 2n and n≥1 n! .
Exercise 1.4
Write down a program that causes an overflow error, and a program that causes an underflow error.
Exercise 1.5
Write down a program that computes exactly n! where n is a positive integer. Which is the largest n that the
program can work for?
Exercise 1.6
Same question as before but with n2 and nn .
Exercise 1.7
Write down a program that finds the greatest integer n with the property that all integers up to n are represented
exactly in IEEE 64 bits (of course you can figure out this number from the theory!). Which is the largest integer
actually representable in this notation?
Exercise 1.8
Write down a program that writes the number “99999...” until it becomes infinity. Which is the largest non–
infinity number obtained this way?
Exercise 1.9
Same as above but with “0.000....001” (until it becomes equal to 0).