Cálculo numérico. Aritmética en punto flotante.

Anuncio
Cálculo numérico. Aritmética en punto flotante.
José Luis Morales
http://allman.rhon.itam.mx/∼jmorales
Departamento de Matemáticas. ITAM. 2012.
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Sistemas de números en punto flotante F
F está caracterizado por los enteros β, L, U , p en donde
β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión
dp−1
d1
d2
x = ± d0 + 1 + 2 + · · · + p−1
β
β
β
0 ≤ di ≤ β − 1,
βE
L ≤ E ≤ U.
F es un sistema normalizado si d0 6= 0
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Sistemas de números en punto flotante F
F está caracterizado por los enteros β, L, U , p en donde
β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión
dp−1
d1
d2
x = ± d0 + 1 + 2 + · · · + p−1
β
β
β
0 ≤ di ≤ β − 1,
βE
L ≤ E ≤ U.
F es un sistema normalizado si d0 6= 0
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Sistemas de números en punto flotante F
F está caracterizado por los enteros β, L, U , p en donde
β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión
dp−1
d1
d2
x = ± d0 + 1 + 2 + · · · + p−1
β
β
β
0 ≤ di ≤ β − 1,
βE
L ≤ E ≤ U.
F es un sistema normalizado si d0 6= 0
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Sistemas de números en punto flotante F
F está caracterizado por los enteros β, L, U , p en donde
β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión
dp−1
d1
d2
x = ± d0 + 1 + 2 + · · · + p−1
β
β
β
0 ≤ di ≤ β − 1,
βE
L ≤ E ≤ U.
F es un sistema normalizado si d0 6= 0
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Sistemas de números en punto flotante F
F está caracterizado por los enteros β, L, U , p en donde
β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión
dp−1
d1
d2
x = ± d0 + 1 + 2 + · · · + p−1
β
β
β
0 ≤ di ≤ β − 1,
βE
L ≤ E ≤ U.
F es un sistema normalizado si d0 6= 0
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Sistemas de números en punto flotante F
F está caracterizado por los enteros β, L, U , p en donde
β es la base del sistema
L es el menor exponente (entero negativo)
U es el mayor exponente (entero positivo)
p es la precisión
dp−1
d1
d2
x = ± d0 + 1 + 2 + · · · + p−1
β
β
β
0 ≤ di ≤ β − 1,
βE
L ≤ E ≤ U.
F es un sistema normalizado si d0 6= 0
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Almacenamiento: β = 2
Observar que d0 es siempre igual a 1. Entonces el espacio de d0 se
destina al signo del número: 0: positivo; 1: negativo
signo exponente
mantisa
Precisión sencilla (32 bits)
signo
exponente
mantisa
1
8
23
bit
bits
bits
1
11
52
bit
bits
bits
Precisión doble (64 bits)
signo
exponente
mantisa
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Representación de números reales en PF
Si x es un número real en el rango [−M, M ], entonces la regla de
asignación de números en punto flotante es
x 7→ float (x)
en donde float (x) es el el número en PF más cercano a x en
la métrica | · |.
En caso de empate ...¿ float (x)?
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Representación de números reales en PF
Si x es un número real en el rango [−M, M ], entonces la regla de
asignación de números en punto flotante es
x 7→ float (x)
en donde float (x) es el el número en PF más cercano a x en
la métrica | · |.
En caso de empate ...¿ float (x)?
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Representación de números reales en PF
Si x es un número real en el rango [−M, M ], entonces la regla de
asignación de números en punto flotante es
x 7→ float (x)
en donde float (x) es el el número en PF más cercano a x en
la métrica | · |.
En caso de empate ...¿ float (x)?
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Análisis de error
Error absoluto
a = |x − float (x)|.
El error relativo se define como
r =
|x − float (x)|
,
|x|
x 6= 0.
Una conclusión casi inmediata es la siguiente:
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Análisis de error
Error absoluto
a = |x − float (x)|.
El error relativo se define como
r =
|x − float (x)|
,
|x|
x 6= 0.
Una conclusión casi inmediata es la siguiente:
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Análisis de error
Error absoluto
a = |x − float (x)|.
El error relativo se define como
r =
|x − float (x)|
,
|x|
x 6= 0.
Una conclusión casi inmediata es la siguiente:
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Análisis de error
Error absoluto
a = |x − float (x)|.
El error relativo se define como
r =
|x − float (x)|
,
|x|
x 6= 0.
Una conclusión casi inmediata es la siguiente:
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Error unitario
Lema: Sea F un sistema en punto flotante y x un número real en
el rango [-M,M]. Entonces:
1
r ≤ M = β 1−p
2
El número M es llamado: a) épsilon de la máquina; b) error
unitario por redondeo; c) precisión de la máquina.
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Prueba
Supongamos que x ∈ R+ tal que x ∈ [y, ȳ] (dos números
consecutivos de F).
y = .y1 y2 . . . yp × β E ,
y1 6= 0
E
ȳ = y + .00 . . . 1 × β ,
d = β E−p
Si suponemos que y = float (x)
d/2
d/2
d/2
|y − x|
≤
≤
≤
= M .
|x|
|x|
|y|
|.10 . . . 0 × β E |
Corolario:
float (x) = (1 + δ)x,
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
|δ| ≤ M .
Cálculo numérico. Aritmética en punto flotante.
Aritmética en PF
Si la suma en F tiene la propiedad x ⊕ y = float (x + y). Entonces
es posible probar el siguiente resultado:
Teorema: Sea F un sistema en punto flotante; x, y ∈ F. Si el
resultado float (x + y) ∈ F entonces:
float (x + y) = (x + y)(1 + δ),
Prueba. Utilizar el corolario anterior.
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
|δ| ≤ M .
Cálculo numérico. Aritmética en punto flotante.
Interpretaciones
Error relativo en el resultado. Forward error analysis.
|float (x + y) − (x + y)|
≤ M
|x + y|
Error proyectado en los datos. Backward error analysis.
float (x + y) = x(1 + δ) + y(1 + δ) = x0 + y 0 ,
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
|δ| ≤ M .
Cálculo numérico. Aritmética en punto flotante.
A=
−1
1
1
=
1 0
`21 1
u11 u12
0 u22
,
0 < << 1
Claramente, u11 = , u12 = −1, `21 = −1 , u22 = 1 + −1 . En
aritmética de PF, para suficientemente pequeño, û22 = −1 . Si
`21 se calcula exactamente, tenemos que
0 0
A − L̂Û =
.
0 1
Elección del pivote .
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
0
A = LU =
1
1
−1
=
1 0
1
1
1
0 −(1 + )
,
0 < << 1.
En aritmética de punto flotante
1
1
Û =
.
0 −1
Por lo tanto
0
A − L̂Û =
0 0
0 0
Elección del pivote 1.
Observación:
0
A = P A,
P =
.
0 1
1 0
.
P es una matriz de permutación.
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Ejemplo de análisis de error. La suma.
Analizar (cuantificar) el error cometido en la suma, en punto
flotante, de n números en F:
sn = float (x1 + x2 + · · · + xn )
s2 = float (x1 + x2 )(1 + 1 )
= x1 (1 + 1 ) +
x2 (1 + 1 ),
|1 | ≤ M .
s3 = float (s2 + x3 )(1 + 2 )
= x1 (1 + 1 )(1 + 2 ) +
x2 (1 + 1 )(1 + 2 ) +
x3 (1 + 2 ),
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
|2 | ≤ M .
Cálculo numérico. Aritmética en punto flotante.
continuación ...
sn = float (sn−1 + xn ) = (sn−1 + xn )(1 + n−1 )
= x1 (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) +
x2 (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) +
x3 (1 + 2 ) · · · (1 + n−1 ) + · · · +
xn−1 (1 + n−2 )(1 + n−1 ) +
xn (1 + n−1 ),
en donde
|i | ≤ M ,
i = 1, 2, . . . , (n − 1).
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Error proyectado en los datos
Observación: la perturbación más grande se concentra en los dos
primeros sumandos.
sn = float (x1 + x2 + · · · + xn )
= x01 + x02 + · · · + x0n
= x1 (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) +
{z
}
|
x2 (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) + · · · +
|
{z
}
xn (1 + n−1 ).
| {z }
P: ¿Cuál es la magnitud (absoluta/relativa) de dicho error?
R: Acotar la cantidad η1 definida como
(1 + η1 ) = (1 + 1 )(1 + 2 ) · · · (1 + n−1 ) .
|
{z
}
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Resultado técnico
Lema: Si (n − 1)M ≤ 1/10 y |i | ≤ M , entonces:
(1 + η1 ) = (1 + 1 )(1 + 2 ) · · · (1 + n−1 )
|
{z
}
0M = 1.06M ,
η1 ≤ (n − 1)0M
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Error relativo en el resultado
|sn − (x1 + x2 + · · · + xn )|
|x1 + x2 + · · · + xn |
|x1 η1 + x2 η2 + · · · + xn ηn |
≤
||x1 + x2 + · · · + xn |
|η1 |(|x1 | + |x2 | + · · · + |xn |)
≤
|x1 + x2 + · · · + xn |
0
≤ nM cond (sn )
r =
en donde
cond (sn ) =
|x1 | + |x2 | + · · · + |xn |
|x1 + x2 + · · · + xn |
cond (·) es llamado el número de condición del problema.
José Luis Morales http://allman.rhon.itam.mx/∼jmorales
Cálculo numérico. Aritmética en punto flotante.
Descargar