Escolar Documentos
Profissional Documentos
Cultura Documentos
Representación decimal de números reales. Sin duda alguna, el modo más extendido para
denotar números es la notación decimal. Por ejemplo, la igualdad
1 1 1 1
3.1416 = 3 + + 4 2 + 3 + 6 4,
10 10 10 10
lo que realmente indica es que el sı́mbolo a la izquierda del signo de igualdad tiene asignado el
número generado a la derecha de dicho signo. Es conocido que esta representación en base 10
puede también realizarse utilizando como base otros números naturales.
En concreto, si β es un natural estrictamente mayor que uno y x ∈ R, 0 < x ≤ 1, entonces
existe una sucesión de enteros (dj )j≥1 tal que 0 ≤ dj ≤ β − 1 y
∞
X 1
x = (0.d1 d2 · · · dn · · ·)β ! x = dj .
j=1
βj
ej = dj , 1 ≤ j ≤ j0 − 1,
ej0 = dj0 + 1,
ej = 0, dj = β − 1, j > j0 .
La restricción al intervalo (0, 1] no es importante, pues dado |x| > 1, siempre puede encontrarse
el menor natural E tal que
x
± E ∈ (0, 1],
β
x
y si βE
= (0.d1 d2 · · · dn · · ·)β , se define la representación de x en base β como
Además de la representación decimal (base 10), hay otras bases que se utilizan en diversos
contextos. En concreto, en el campo informático se usan ampliamente la representación binaria
(base 2), octal (base 8) y hexadecimal (base 16).
1
Aritmética de precisión finita. Los cálculos numéricos son efectuados usualmente por un
ordenador y, por tanto, debe tenerse en cuenta su forma de realizar las operaciones aritméticas
y poder ası́ evaluar la precisión de los resultados numéricos obtenidos. La inmensa mayorı́a de
los ordenadores actuales utilizan lo que se conoce como aritmética en coma flotante y con un
número finito de dı́gitos.
Denotemos por M el conjunto de los números reales representables en un ordenador idealizado
OM que utiliza aritmética en coma flotante en base β con t dı́gitos. Esto significa que cada número
x ∈ M (x 6= 0) puede escribirse como
d1 d2 dt
x = sig(x) × + 2 + · · · + t β E ≡ sig(x) × (0.d1 d2 · · · dt )β × β E ,
β β β
Sin embargo, en notación normalizada, d1 no se guarda al ser no nulo, y hay un lugar más para
almacenar los exponentes. No obstante, lo que en Matlab, que funciona con precisión doble,
realmente se representa en las 11 casillas del exponente es e = E + 1023 cuyo rango (en base 10)
es [1, 2046] y hay que mencionar que algunos valores del exponente se reservan para inf, NaN
y para números no normalizados.
Dado x ∈ R arbitrario, es bastante probable que x no pertenezca a M. Por tanto, si queremos
introducir x en el ordenador OM , debemos encontrar un número de M que lo aproxime. Este
problema es resuelto por cada ordenador de modo distinto, pero nosotros describiremos un
proceso que modela el comportamiento de todos ellos: el redondeo a t dı́gitos de x. Este proceso
consiste simplemente en elegir un número (puede no ser único) de M donde se alcance la distancia
mı́nima entre x y M.
Si escribimos x = sig(x) × β E × a ∈ R con a = (0.d1 d2 · · · dn · · ·)β ∈ [1/β, 1], se define el
redondeo de x a t dı́gitos como el número
E (0.d1 d2 · · · dt )β , si dt+1 < β/2,
f l(x) := sig(x) × β × −t
(0.d1 d2 · · · dt )β + β , si dt+1 ≥ β/2.
En un ordenador real, donde el exponente está acotado, el proceso anterior no garantiza que
f l(x) pertenezca a M. Hay dos razones por las que f l(x) puede no ser un número del ordenador:
porque x es demasiado grande (su exponente es positivo y es mayor que Emáx ), o bien
Los ordenadores tratan de distintas formas este problema. En general, cuando x es demasiado
grande se produce lo que se conoce como overflow y en la variable correspondiente se almacena
2
una etiqueta que representa al valor infinito. Por otro lado, cuando x es demasiado pequeño se
produce lo que se conoce como underflow y, habitualmente, se redondea x como cero y no se
detienen los cálculos, aunque se suele dar un mensaje de aviso.
El resultado básico sobre aproximación de números reales en M utiliza la cantidad u := 12 β 1−t ,
denominada unidad de redondeo y es la cantidad más importante asociada a M.
Teorema. Si x ∈ R, entonces f l(x) = x(1 + δ), donde |δ| ≤ u.
Una cantidad muy relacionada con la unidad de redondeo u es la denominada precisión
de la máquina εM y que se define como la distancia del número 1 al siguiente número mayor
perteneciente a M o, equivalentemente,
Puede probarse fácilmente que εM = β 1−t = 2u. El programa Matlab utiliza siempre doble
precisión y, en este caso, u = 2−53 ≈ 1.11×10−16 . Conviene aclarar que la orden eps de Matlab
proporciona la precisión de la máquina, esto es, 2u.
En general, al realizar operaciones algebraicas elementales sobre números de M no se obtienen
números de la máquina y, por ello, es necesario definir una aritmética en M o aritmética de
precisión finita. A continuación, expondremos el modelo de aritmética, denominado estándar,
por el que se rigen (o al menos lo intentan) la inmensa mayorı́a de los ordenadores actuales.
Este modelo se basa en que dados x, y ∈ M, debe ocurrir que
Es normal asumir que la extracción de raı́ces cuadradas también verifica el modelo. Conviene
aclarar que f l(x op y) denota el valor de la correspondiente expresión aritmética elemental
(suma, resta, producto y división) realmente computado por el ordenador. Siguiendo un convenio
muy extendido, indicaremos por flop cualquiera de las operaciones aritméticas en coma flotante
anteriores. El costo computacional de muchos métodos numéricos será medido en flops.
Puede comprobarse fácilmente que las leyes habituales de la aritmética usual no se verifican
en este contexto. En concreto, al trabajar en aritmética de precisión finita hay que especificar
el orden en que se realizan las sucesivas operaciones elementales y agruparlas en paréntesis.
Error(b b|.
x) = |x − x
b o error relativo
Para muchos propósitos es preferible considerar el porcentaje de error en x
|x − xb|
Rel(b
x) = , suponiendo x 6= 0.
|x|
Por ejemplo, el teorema de la sección anterior afirma que el error relativo de aproximar x por
f l(x) está acotado por u.
El concepto de error relativo está relacionado con la representación decimal a través de la
noción de dı́gitos significativos correctos. Por simplificar, supondremos que la base es 10. Los
3
dı́gitos significativos en una representación decimal son el primero no nulo y todos los dı́gitos
sucesivos.
Se dice que xb tiene o comparte m ∈ N dı́gitos significativos correctos con x si se verifica que
los redondeos a m dı́gitos de xb y x son iguales. El significado intuitivo de este concepto es que los
m primeros dı́gitos de x b, a partir del primero no nulo, son considerados como verdaderos dı́gitos
de la representación decimal de x que, como es lógico, se supone desconocida. Esta definición,
si bien matemáticamente elegante, tiene el defecto de que se necesita conocer el valor de x para
poderla aplicar. En la práctica, lo que se utiliza es el error relativo pues puede probarse que si
x) ≤ 0.5 × 10−m ,
Rel(b
b.
entonces x tiene o comparte m ∈ N dı́gitos significativos correctos con x
4
Errores de redondeo: se estudia cómo responde el método al implementarlo en aritmética
de precisión finita.
Evidentemente, es también posible diseñar diferentes algoritmos para resolver un mismo proble-
ma numérico. En ese caso, la eficiencia de dichos algoritmos no sólo se mide por los anteriores
factores, asociados a los correspondientes métodos numéricos, sino que aparecen otros nuevos
como, por ejemplo, el uso de la memoria del ordenador. En general, estos nuevos factores tienen
un indudable sesgo informático.
5
Estabilidad de los métodos numéricos. Si un resultado intermedio de un cálculo numérico
presente en un cierto algoritmo es contaminado por un error de redondeo, este error afectará a
todos los siguientes resultados que dependan de este resultado intermedio. Esto es, el error de
redondeo se propaga, y todos esos errores influyen en el resultado final del cálculo. En cier-
tos casos, esos errores tienen un resultado despreciable en el resultado final. Los algoritmos o
métodos numéricos con esta deseable propiedad se dice que son estables numéricamente. Si por
el contrario, los errores de redondeo intermedios tienen un efecto fuerte en el resultado final
decimos que el método numérico es numéricamente inestable.
Combinando los dos conceptos de estabilidad que hemos visto, llegamos a la siguiente regla
práctica: para obtener buenos resultados numéricos hay que aplicar métodos numéricamente
estables a problemas bien condicionados.
Muchas veces es suficiente retocar algunos aspectos de un método numérico para transformar-
lo de inestable en estable. Estos retoques pueden ser, por ejemplo, reordenar ciertos cálculos del
método. Nos gustarı́a precisar que es posible analizar matemáticamente la estabilidad numérica
de muchos métodos numéricos.
6
numérica severa. También pueden aparecer problemas de cancelación numérica importantes si
b2 ' 4ac.
Un modo de paliar el problema es realizar el cálculo de b2 − 4ac en alta precisión y calcular
las raı́ces por las fórmulas
√
b + sig(b) b2 − 4ac c
x1 = − , x2 = .
2a ax1
Debemos subrayar que el diseño de métodos numéricamente estables no se consigue simplemente
evitando cancelaciones. De hecho, no hay ninguna receta simple para lograrlo, aunque pueden
darse los siguientes consejos:
siempre que la corrección pueda calcularse con gran precisión. Ejemplos de esta situación
son el método de Newton o gran parte de los métodos para resolver ecuaciones diferenciales
ordinarias.
7
CUESTIONES
Ejercicio 1. Determinar dos representaciones binarias distintas del número decimal 0.25.
Ejercicio 2. Determinar una representación binaria del número cuya representación decimal es
49.
d
Ejercicio 3. Determinar una representación decimal del número binario 111.101.
Ejercicio 4. Sean x = (211)3 e y = (110.1)2 dos números en bases 3 y 2, respectivamente.
Calcule x + y en base 4.
Ejercicio 5. Considere un ordenador que trabaja en binario con dos dı́gitos y exponente entre
-2 y 2 (β = 2, t = 2, |E| ≤ 2). Sin tener en cuenta el signo, represente de manera aproximada
sobre la recta real el conjunto M de los números de máquina. Conteste razonadamente a las
siguientes preguntas. ¿Cuántos números distintos se pueden representar en este ordenador?,
¿cuánto vale el número de máquina M ?, ¿cuál es el máximo y el mı́nimo de M?, ¿cuáles deben
ser los representantes de 3 y 7 (f l(3) y f l(7))?
10 1
Ejercicio 6. Representar el número 4
+ 222
en precisión simple.
Ejercicio 7. Determinar la representación del número decimal 23.346 utilizando redondeo en
base diez a tres y cuatro dı́gitos. Obtener la representación del número 35 en un ordenador que
funcione en aritmética de coma flotante en base 2 y con cinco dı́gitos.
Ejercicio 8. Sea M el conjunto de números-máquina en precisión simple (β = 2, 24 dı́gitos).
Determinar los dos números más cercanos a 2/3 en M. ¿Cuál de esos dos números debe escogerse
como f l(2/3)?
Ejercicio 9. Demostrar que εM = 2u.
Ejercicio 10. Comprobar que la propiedad asociativa respecto a la suma no se verifica en
aritmética de precisión finita.
Ejercicio 11. Determinar el error absoluto y el error relativo cometido al aproximar el número
1/9 mediante redondeo en base diez a seis dı́gitos.
Ejercicio 12. Analizar geométricamente el condicionamiento respecto al parámetro 0 < α < 1,
de la solución del sistema de ecuaciones lineales
x + αy = 1,
αx + y = 0.
(a) Determine el redondeo de ambos números utilizado por un ordenador que trabaje en base
b = 2 con t = 7 dı́gitos en la mantisa con notación normalizada. Calcule el error que se
comete en cada caso.
8
(b) Determine el valor que proporciona el ordenador para la suma a + b. Calcule el error.
Ejercicio 15. Determinar el valor que asignarı́a un ordenador, que almacena los números en
base 10 a 2 dı́gitos, a la menor raı́z de la ecuación
x2 − 20x + 1 = 0,
usando la fórmula algebraica habitual. ¿Qué ocurre? ¿Qué efecto puede tener el fenómeno de
cancelación numérica al calcular las cuatro raı́ces reales de
x4 − 103 x2 + 1,
PROBLEMAS
Problema 1. Se desea calcular π usando el método ideado por Arquı́medes, esto es, inscribir
polı́gonos regulares de n lados en una circunferencia de radio unidad y hacer tender n hacia
infinito. Denotamos por f (n) la mitad del perı́metro del polı́gono regular de n lados inscrito en
una circunferencia de radio unidad.
1. Demuestre que π
f (n) = n sen ,
n
y que su lı́mite, cuando n → ∞, es π. Si para k ≥ 2 denotamos yk := f (2k ), demuestre
que r
1 p
k+1
yk+1 = 2 1 − 1 − (2−k yk )2 .
2
r
α 1
Para ello, utilice la fórmula sen( ) = (1 − cos(α)).
2 2
2. Utilizando la recurrencia anterior, implemente una función en Matlab para evaluar π.
Muestre una tabla de resultados con las primeras 25 iteraciones. ¿Qué problema surge?
¿Qué ocurre si seguimos iterando?
4. ¿Cómo podrı́a retocarse la recurrencia anterior para obtener un método numérico más
estable?
9
5. Repita el apartado dos con las variaciones expuestas en el apartado anterior.
3. Diseñe una función en Matlab cuyos argumentos de entrada sean un vector, una per-
turbación y una coordenada asociada a dicha perturbación y cuyos argumentos de salida
sean el error relativo de la suma de las coordenadas del vector y el error relativo en la
correspondiente coordenada.
4. Aplique la función del apartado tres a conjuntos numéricos del tipo
2. Diseñe una función en Matlab que implemente la recurrencia anterior y obtenga, para
a = 10, una tabla con los valores de las veinte primeras integrales. ¿Hay algún valor absurdo
en la tabla?
10
3. En las hipótesis del apartado anterior, sea ybn el valor realmente computado por el ordenador
para yn . Supongamos que se comete algún error al calcular y1 , pero que el resto de las
operaciones aritméticas se realizan sin errores de redondeo. Demuestre que
4. Obtenga una fórmula de recurrencia, en orden decreciente, para el cálculo de las integrales
yn e implemente la correspondiente función de Matlab.
5. Para a = 10, calcule y20 utilizando la orden quad de Matlab. Utilizando este valor
numérico y la función del apartado anterior, obtenga una tabla estimando el valor de las
20 primeras integrales. ¿Por qué esta tabla proporciona resultados más precisos que la
obtenida en el apartado segundo?
1. Para x = 0.01, 0.001, 20, 25 determine un número natural N = N(x) tal que la suma de
los N + 1 primeros términos de la serie de McLaurin de e−x proporcione teóricamente una
aproximación de dicha función menor o igual que 10−15 .
2. Diseñe una función en Matlab que evalúe las sumas parciales de la serie de McLaurin de
e−x y que tenga como argumentos de entrada el punto a evaluar y el número de sumandos
menos uno.
4. Represente gráficamente (gráfica de barras) las sumas obtenidas por el algoritmo propuesto
con x = 20 y el número de sumandos variando entre 1 y 100. Interprete dicha gráfica.
5. Plantee razonadamente un método numérico para evaluar e−x que evite las dificultades
observadas anteriormente. Compruébelo repitiendo el apartado tres.
11
EJERCICIOS DE CURSOS ANTERIORES
(a) Determine el redondeo de ambos números utilizado por un ordenador que trabaje en base
b = 2 con t = 7 dı́gitos en la mantisa con notación normalizada. Calcule el error que se
comete en cada caso.
(b) Determine el valor que proporciona el ordenador para la suma a + b. Calcule el error.
12