You are on page 1of 16

ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 1

Figura 1: Cálculo Numérico Computacional

El Análisis Numérico es la rama de la Matemática que proporciona métodos de


cálculo, es decir, conjuntos de operaciones matemáticas que permiten obtener,
mediante un número finito de operaciones numéricas con los datos del problema,
resultados que aproximan a alguna solución del mismo.

Los algoritmos numéricos son los métodos numéricos especificados en forma precisa y
completa como un conjunto de operaciones elementales a realizar en un orden determinado,
secuencial o paralelo.

Cálculo Numérico es el conjunto de instrumentos, técnicas y teorı́as que se


requieren para resolver numéricamente en un ordenador los modelos matemáticos
de problemas en Ingenierı́a y Ciencia.
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 2

Figura 2: Proceso de resolución de un problema


ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 3

MÉTODOS NUMÉRICOS

Por Métodos Numéricos denominamos un curso básico de Cálculo Numérico con especial
énfasis en los aspectos prácticos.

La obtención de una solución numérica aproximada es caracterı́stica de los métodos


numéricos, y ello porque la resolución numérica computacional de un modelo matemático
continuo requiere, generalmente, de:
Aritmética de punto flotante. El almacenamiento de los datos reales o complejos y su
operación con ordenadores –máquinas finitas– generan errores que es preciso considerar.
Evaluación de funciones. Funciones como las trascendentes cuya evaluación no requiera
únicamente las cuatro operaciones elementales han de ser evaluadas en forma aproxi-
mada en la mayorı́a de los valores de sus variables.
Discretizaciones. Ciertas operaciones matemáticas como la derivación e integración son
efectuadas numéricamente utilizando sólo un número discreto de valores de la función.
Sin embargo estas operaciones matemáticas son de tipo continuo y su discretización
conlleva un error.
Procesos recurrentes o iterativos. Frecuentemente las soluciones de ciertos problemas
matemáticos están formulados en términos de procesos infinitos como lı́mites o series
que el ordenador ha de finalizar en algún paso intermedio.
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 4

“SCIENTIFIC COMPUTING” - COMPUTACIÓN CIENTÍFICA

Computación Cientı́fica es un modo de investigación cientı́fica que incluye varias fases:

1. Desarrollo de un modelo matemático, a menudo expresado como algún tipo de ecuación,


para un fenómeno fı́sico o sistema de interés.
2. Desarrollo de un algoritmo para resolver la ecuación numéricamente.
3. Implementación del algoritmo en software de ordenador.
4. Simulación numérica del fenómeno fı́sico usando el software de ordenador.
5. Representación de los resultados calculados en forma comprensible, a menudo mediante
visualización gráfica.
6. Interpretación y validación de los resultados calculados, que pueden conducir a cor-
rección y otros refinamientos del modelo matemático original y repetición del ciclo, si
fuese necesario.

Los Métodos Numéricos está involucrados en las fases 2-4: el desarrollo, implementación
y uso de algoritmos numéricos y software.
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 5

Sistema de números en representacion punto flotante

Representación de x número real en el sistema decimal o de base 10:

x = ∓c1 c2c3 . . . cn .cn+1 . . .


cn+1 cn+2
= ∓(c1 10n−1 + c2 10n−2 + . . . + cn + + + . . .)
10 100
con cj ∈ {0, 1, . . . , 9}.
Representación de x número real en el sistema de base β (β ≥ 2):

x = ∓d1 d2 d3 . . . dk .dk+1 . . .(β


dk+1 dk+2
= ∓(d1 β k−1 + d2 β k−2 + . . . + dk + + 2 + . . .)
β β
con dj ∈ {0, 1, . . . , β − 1}.
- Bases usuales en sistemas computacionales: 2, 8 y 16.
- Representación normalizada de x 6= 0 en base β:

x = ∓.d1 d2 d3 . . . dk dk+1 . . . × β e con d1 6= 0, e ∈ Z.

Mantisa normalizada de x, m = ∓.d1d2 d3 . . . dk dk+1 . . . (d1 6= 0)


Exponente de x: e
- Sistema de números en punto flotante con t dı́gitos en base β y con un exponente
entre los valores mı́nimo ` y máximo L:

F (β, t, `, L) = {+.00 . . . .0 × β 0} ∪
{ ∓ .d1d2 d3 . . . dt × β e , 0 < d1 < β, 0 ≤ di < β, i = 2 : t, ` ≤ e ≤ L}

Los valores de β, t, ` y L pueden variar según el sistema computacional. Hay sistemas


que trabajan en simple precisión, en doble precisión, en precisión extendida, . . . .
- Representación de x 6= 0 en un sistema F (β, t, `, L). Para
1
x = u × β e + v × β e−t con ≤| u |< 1, 0 ≤| v |< 1
β
las representaciones pueden ser:
Representación truncada o cortada: fl(x) ≡ xC = u × β e .
Representación redondeada:

 u × βe si | v |< 1/2
fl(x) ≡ xR = u × β e +β e−t si u > 0 y | v |≥ 1/2
 e e−t
u×β −β si u < 0 y | v |≥ 1/2

En los dos últimos casos con normalización del valor resultante.


ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 6

Errores en la representacion de números en punto flotante

Si x∗ es un valor aproximado a x definimos:


Error de x∗ : E = x∗ − x
Error absoluto de x∗ : | E |=| x∗ − x |
x∗ − x
Error relativo de x∗:  =
x
- Cotas de errores en la representación punto flotante truncada de x 6= 0:

EC = −v × β e−t
| EC | = | v | β e−t < β e−t
| C | < β 1−t

- Cotas de errores en la representación punto flotante redondeada de x 6= 0:



 −v × β e−t si | v |< 1/2
ER = (1 − v)β e−t si u > 0 y | v |≥ 1/2

(−1 − v)β e−t si u < 0 y | v |≥ 1/2
1 e−t
| ER | ≤ β
2
1 1−t
| R | ≤ β
2
1 1−t
Definición 1 La unidad de error de redondeo en base β es el número β .
2
Definición 2 El epsilon de máquina es el menor número µ positivo tal que fl(1 +µ) 6= 1.

Definición 3 Un valor x∗ aproximado a x tiene k dı́gitos fraccionarios exactos en base


β si
1
| x∗ − x |≤ β −k .
2
Definición 4 Un valor x∗ aproximado a x tiene k dı́gitos significativos exactos o cor-
rectos en base β si
| x∗ − x | 1
≤ β 1−k .
|x| 2
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 7

Errores en la aritmetica de punto flotante

Una máquina que trabaja con números en un sistema F (β, t, `, L) opera con ellos
en su unidad aritmético-lógica disponiendo para el almacenamiento de operandos y resul-
tados numéricos de registros aritméticos con s posiciones adicionales. Generalmente, los
registros son de doble longitud, es decir, con s = t; pero podrı́a suceder que fuesen de lon-
gitud simple con s = 0. Solución diferente, “económica”, es la de registros con una posición
centinela, es decir, con s = 1.
Las cotas del error en la aritmética de punto flotante (considerando desplazamientos de
mantisas en operandos y redondeo o truncamiento del resultado) son:

| f l(x∗ ◦ y ∗ ) − (x∗ ◦ y ∗) | 1
≤ rµ µ = β 1−t
| x∗ ◦ y ∗ | 2
para x∗ e y ∗ dos números de un sistema F (β, t, `, L), ◦ ∈ {+, −, ∗, /} y r dependiente de
s:

r = 1 si el sistema redondea
• si s = t
r = 2 si el sistema corta

r = 2 para × y /
• si s = 1
r = 4 para + y −

r = 4 para × y /
• si s = 0
r puede ser mucho mayor que 4 para + y −

En la aritmética de punto flotante se pierden, generalmente, las propiedades asociativa y


distributiva.
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 8

La propagación o acumulación de errores

Sean x∗ e y ∗ dos números máquina aproximaciones a x e y, respectivamente, y sean  y


τ los errores relativos correspondientes. Se satisface que:

El error total en una operación aritmética ◦ es la suma del error generado en la


operación y el error propagado.

f l(x∗ ◦ y ∗) − x ◦ y = fl(x∗ ◦ y ∗ ) − x∗ ◦ y ∗ + x∗ ◦ y ∗ − x ◦ y

Definición 5 Se denomina error generado en una operación aritmética al error

fl(x∗ ◦ y ∗ ) − x∗ ◦ y ∗

cometido al realizar la operación un procesador, supuesto que los datos son exactos.

Definición 6 Se denomina error propagado en una operación aritmética al error

x∗ ◦ y ∗ − x ◦ y

que se comete por operar con datos inexactos o erróneos, supuesto que la operación aritmética
es realizada en forma exacta.

Analicemos este último para las distintas operaciones:


Suma: (x∗ + y ∗) − (x + y) = x + yτ = (x∗ − x) + (y ∗ − y)
Resta: (x∗ − y ∗) − (x − y) = x − yτ = (x∗ − x) − (y ∗ − y)
Multiplicación: (x∗ × y ∗) − (x × y) = xy(+ τ + τ ) = y(x∗ − x) + x(y ∗ − y) +(x∗ − x)(y ∗ − y)
x −τ y(x∗ − x) − x(y ∗ − y)
División: (x∗/y ∗ ) − (x/y) = ( )= (y, y ∗ 6= 0)
y 1+τ yy ∗
Si sólo disponemos de cotas δ(·) para los errores absolutos en los operandos,

| x∗ − x |≤ δ(x∗), | y ∗ − y |≤ δ(y ∗),

es claro que, en el supuesto de

| x∗ | δ(x∗) y | y ∗ | δ(y ∗),

se satisfacen:

Suma: δ(x∗ + y ∗) = δ(x∗) + δ(y ∗)


Resta: δ(x∗ − y ∗) = δ(x∗) + δ(y ∗)
Multiplicación: δ(x∗ × y ∗ ) ∼
=| y ∗ | δ(x∗)+ | x∗ | δ(y ∗)
| y ∗ | δ(x∗)+ | x∗ | δ(y ∗)
División: δ(x∗/y ∗) ∼
= (y ∗ 6= 0)
| y ∗ |2
Para el error relativo se obtiene asimismo:
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 9

| (x∗ + y ∗) − (x + y) | δ(x∗) + δ(y ∗)


Suma: ≤
|x+y | |x+y |
| (x∗ − y ∗) − (x − y) | δ(x∗) + δ(y ∗)
Resta: ≤
| x−y | | x−y |
| (x∗ × y ∗) − (x × y) | ∼
Multiplicación: =|  | + | τ |
|x×y |
| (x∗ /y ∗ ) − (x/y) | −τ ∼
División: =| |≤|  | + | τ | (y, y ∗ 6= 0)
| x/y | 1+τ
Si únicamente se conocen x∗, y ∗, δ(x∗) y δ(y ∗), resultados de mayor utilidad práctica
resultan habida cuenta que:
δ(x∗) δ(y ∗)
|  |≤ y | τ |≤
| x∗ | | y∗ |
En las sumas de números de signo contrario y aproximados en módulo o en las difer-
encias de números de mismo signo y aproximados en módulo, el error relativo puede ser
arbitrariamente grande. Estas circunstancias, usualmente referidas como substracciones
cancelativas, deben ser evitadas en todo lo posible, reemplazando las operaciones por otras
equivalentes o utilizando desarrollos en serie.

La propagación de errores al evaluar una función


Si el resultado del cálculo efectuado tras múltiples operaciones puede ser expresado como
función de los datos y dicha función es continuamente diferenciable, una estimación del error
propagado puede ser obtenida usando el desarrollo en serie de Taylor:

Para una función f : R → R:



| f (x∗ ) − f (x) |≤| f 0 (x∗ ) | δ(x∗) (f 0 (x∗ ) 6= 0)

Para una función f : Rn → R:


∼ Xn
∂f (x∗i )
| f (x∗ ) − f (x) |≤ | |δ(x∗i ).
i=1
∂x i

Una expresión diferente es posible si empleamos la norma-2 vectorial:



| f (x∗ ) − f (x) |≤k ∇f (x∗) k2 k x∗ − x k2

Para una función f : Rn → Rm :



k f (x∗ ) − f (x) k≤k Jf (x∗) kk x∗ − x k

donde Jf (x) es la matriz Jacobiana de la función f y k Jf (x∗ ) k es su norma matricial para


x = x∗ .
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 10

Inestabilidad de problemas y métodos numéricos


• Un problema matemático cuya solución, independientemente del método utilizado para
obtenerla, es muy sensible a cambios en los datos se dice que es un problema inestable
o mal condicionado. Si el problema es tal que pequeños cambios en los datos provocan
pequeños cambios en los resultados el problema se dice estable o bien condicionado.

La condición de un problema conviene describirla, en lo posible, por un único número


de condición relativo,
| Cambio relativo en la solución del problema |
| Cambio relativo en el dato de entrada |
y se dirá, en general, que un problema es mal condicionado si tiene un número de condición
bastante mayor que 1.
Si se desea una completa información sobre la sensibilidad de la solución con respecto a
las variables del problema, puede utilizarse un número de condición por cada variable y cada
componente del vector de resultados del problema.

• Un método se dice inestable cuando, en general, produce buenos resultados, pero, a


veces, produce resultados extremadamente malos, ya sea por los datos, ya sea por la forma
en que estos son operados.

En orden a establecer la estabilidad numérica de un método conviene señalar que no se


puede decidir que un método es inestable sólo porque el resultado computado difiere bastante
del resultado exacto para ciertos problemas. Cualquier método aplicado a un problema mal
condicionado puede dar lugar a resultados fuertemente erróneos.
Un análisis regresivo de error puede darnos una clara indicación de la estabilidad del
método dado que considera la solución computada como solución exacta de un problema
perturbado. Si tal perturbación es suficientemente pequeña el método es estable.
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 11

Figura 3: Análisis de error

Métodos de estimación de error


Análisis progresivo o hacia adelante del error: Consiste en el análisis de la generación
y propagación de errores (desde los errores en los datos del modelo y operación a
operación, subproceso a subproceso de cálculo) hasta obtener cotas de error para la
solución final calculada.
Análisis regresivo o hacia atrás del error: Consiste en el análisis de la solución calcula-
da como solución exacta de un modelo perturbado, buscando acotar las perturbaciones
en los datos que posibilitan obtener “exactamente” la solución calculada.
Análisis intervalar del error: Consiste en operar con la aritmética que considera cada
número como perteneciente a un intervalo y el resultado tras cada operación elemental
como perteneciente a otro intervalo claramente determinado. Aplicadas a todo el pro-
ceso de cálculo las correspondientes reglas de aritmética y de funciones entre intervalos
se obtendrá un intervalo para cada uno de los resultados del problema.
Análisis estadı́stico del error: Consiste en suponer que los errores en los datos son vari-
ables aleatorias con una cierta función de distribución y, en base a tal supuesto, aplica
toda la teorı́a estadı́stica para obtener las medias, desviaciones tı́picas de los errores
para cada uno de los resultados del problema.

Ventajas e inconvenientes pueden ser señalados para cada uno de estos métodos (y de
otros como los de significación o de precisión múltiple). De todas formas su uso conjunto
e incluso simultáneo puede ser en algún caso preciso si se desea reducir las incertidumbres
sobre una cuestión simple pero fundamental:
¿La solución obtenida es válida?
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 12

Explicar los siguientes pares de resultados numéricos obtenidos con un


mismo procesador:
• Para x = 3.141593
 2
(sin(x)/x)2 sin(x/2)
= 0.20280447, 2 = 0.20264232
1 + cos(x) x

• Para x = 2 × 1012
√ √ 1
1+x− x = 3.5366975e − 007, √ √ = 3.5355339e − 007
1+x+ x

• Para x = 0.7853981634 (x ≈ π/4 = 0.78539816339745)

cos(2 ∗ x)
sin(x) − cos(x) = 3.6085578969e − 012, − = 3.6086572092e − 012
sin(x) + cos(x)

3
• Para x = 8.000025
1
= 480007.68, 40000(4 + 2x + x2 ) = 480000.5
−2 + x

Resolver la ecuación

x2 + 1000x + 6.2521308 = 0
utilizando aritmética de 8 dı́gitos con redondeo. Analizar la precisión de las
raı́ces.
b2 − 4ac = 9.999749914768000e + 005 f l(b2 − 4ac) = 999974.99
√ √
999974.99 = 9.999874949218116e + 002 f l( 999974.99) = 999.98749
x1 = (−1000 + 999.98749)/2 = −0.0062550000, x2 = (−1000 − 999.98749)/2 = −999.99375
Utilizando MATLAB
a=1; b=1000; c=6.2521308; roots([a b c])
ans = 1.0e+002 *
-9.99993747830110
-0.00006252169890
Es fácil comprobar que x2 tiene sus 8 dı́gitos significativos correctos. Pero x1 sólo tiene 4 dı́gitos
significativos correctos ya que para su error relativo se tiene que

|  |= 4.526605053518824e − 004 < 5 × 10−4 .

Sin embargo, calculada x1 en la forma


c
x1 = = −0.0062521699
x2
se consiguen 8 dı́gitos significativos correctos.
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 13

Cálculo de Z 1
I20 = x20ex−1 dx
0
utilizando la recurrencia (justifı́quese integrando por partes)

Ik = 1 − kIk−1 para I0 = 1 − e−1 .


Utilizando Matlab
 I=1-exp(-1)
I=
0.63212055882856
 for k=1:20, I=1-k*I, end % los sucesivos valores calculados son
0.36787944117144
0.26424111765712
0.20727664702865
0.17089341188538
0.14553294057308
0.12680235656152
0.11238350406936
0.10093196744509
0.09161229299417
0.08387707005829
0.07735222935878
0.07177324769464
0.06694777996972
0.06273108042387
0.05903379364190
0.05545930172957
0.05719187059731
−0.02945367075154
1.55961974427919
−30.19239488558378 % ¿ Es éste el valor de I20 ?

Si para responder a la pregunta se utiliza una conocida fórmula de integración numérica (fórmula
del trapecio compuesta)
Z b " n−1
#
h X
f (x)dx ≈ f (a) + 2 f (a + ih) + f (b)
a 2
i=1

donde h = (b − a)/n, usando Matlab se obtiene:

>> a=0; b=1; n=100; h=(b-a)/n;


>> f=inline(’x.^20.*exp(x-1)’); x=a:h:b; fx=f(x); %se evalúa el integrando
>> I=h*(sum(fx(2:end-1))+(fx(1)+fx(end))/2) % integración numérica
I =
0.04571977247835
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 14

Las raı́ces de la ecuación

x3 + 96x2 − 396x + 400 = 0

son x1 = −100.00000000, x2 = 2.00000000 doble, mientras que las de la


ecuación
x3 + 96x2 − 396x + 399.9998 = 0
son x1 = −99.99999999, x2 = 1.99859971 y x3 = 2.00140027 y las de

x3 + 96.00005x2 − 396x + 400 = 0


son x1 = −100.000048058, x2,3 = 1.999999029 ± 0.001400279i.
¿Qué explicación hay para resultados tan diferentes?

La solución del sistema


    
0.9999 1 x 0.002
=
2 2 y 0.006
es    
x 10.000
=
y −9.997
mientras que la del sistema
    
0.99995 1 x 0.002
=
2 2 y 0.006
es    
x 20.000
= .
y −19.997
¿Qué explicación hay para resultados tan diferentes?
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 15

Utilizar la fórmula
−3f (x − 2h) − 10f (x − h) + 18f (x) − 6f (x + h) + f (x + 2h)
f 0 (x) ∼
=
12h
para estimar f 0 (0) en el caso de f (x) = e10x, con valores de h cada vez más
pequeños. Explicar los resultados.
Utilizando MATLAB
 h=1e-8; x=-2*h:h:2*h; df= [-3 -10 18 -6 1]*exp(10*x)’/(12*h)
ans = 9.99999899183498
 h=1e-9; x=-2*h:h:2*h; df=[-3 -10 18 -6 1]*exp(10*x)’/(12*h)
ans = 9.99999993922529
 h=1e-10; x=-2*h:h:2*h; [-3 -10 18 -6 1]*exp(10*x)’/(12*h)
ans = 9.99999786680898
 h=1e-11; x=-2*h:h:2*h; [-3 -10 18 -6 1]*exp(10*x)’/(12*h)
ans = 10.00000082740371
 h=1e-12; x=-2*h:h:2*h; [-3 -10 18 -6 1]*exp(10*x)’/(12*h)
ans = 10.00000082740371
 h=1e-13; x=-2*h:h:2*h; [-3 -10 18 -6 1]*exp(10*x)’/(12*h)
ans = 9.99792841109108
 h=1e-14; x=-2*h:h:2*h; [-3 -10 18 -6 1]*exp(10*x)’/(12*h)
ans = 10.00681019528808

Es claro que a partir de un cierto valor de h los resultados empeoran. La fórmula utilizada es
un método inestable.
ETSII - MÉTODOS NUMÉRICOS - Errores - ANGEL SANTOS 16

Cálculo de Z 1
x20
I20 = dx
0 x+6
1
utilizando la recurrencia (justifı́quese) Ik = − 6Ik−1 k = 1 : 20.
k
Utilizando MATLAB
 I=log(7/6)
I=
0.15415067982726
 for k=1:20, I=1/k-6*I, end
0.07509592103645
0.04942447378130
0.03678649064553
0.02928105612682
0.02431366323908
0.02078468723218
0.01814901946405
0.01610588321568
0.01447581181704
0.01314512909776
0.01203831632251
0.01110343539829
0.01030246453332
0.00961378422865
0.00898396129478
0.00859623223135
0.00724613602368
0.01207873941346
-0.01984085753341
0.16904514520048 % ¿ Es éste el valor de I20?

Utilizando alguna calculadora, obtener u30 mediante la recurrencia

uk+1 = 4uk − 1 u0 = 1/3

y justificar el resultado.

Resolver el problema diferencial de valor inicial


2
y 0(x) = xy(y − π) y(0) = π
π
para x ∈ [0, 10] utilizando una calculadora, un valor de π redondeado a 8 dı́gitos (3.1415927) y el
método de Euler
2
yi+1 = yi + hf (xi , yi ) (f (x, y) = xy(y − π))
π
con h = 0.1 para calcular sucesivos valores yi , siendo cada yi valor aproximado a la solución en
xi = 0 + ih. Comentar los resultados obtenidos comparando con la solución exacta.

You might also like