Errores en las Operaciones Aritméticas



Documentos relacionados
Aritmética finita y análisis de error

Taller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010

Representación en Punto Flotante

Representación de la Información

Cursada Primer Semestre 2015 Guía de Trabajos Prácticos Nro. 2

TEMA 1 Representación de la información

Organización del Computador. Prof. Angela Di Serio

Representación de números en binario

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

Capítulo 2 REPRESENTACIÓN DE LOS DATOS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Computación I Representación Interna Curso 2011

UNIVERSIDAD DE EXTREMADURA Departamento de Matemáticas. Matemáticas. Manuel Fernández García-Hierro Badajoz, Febrero 2008

SISTEMAS NUMERICOS Y ERRORES

Máster Universitario en Ingeniería de Caminos, Canales y Puertos Introducción al Análisis Numérico

ELO311 Estructuras de Computadores Digitales. Números

Tema 4: Sistemas de Numeración. Codificación Binaria. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Buceando en los MCUs Freescale...

Aritmética del computador. Departamento de Arquitectura de Computadores

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5.

Tema 2. La Información y su representación

1.1 Sistema de numeración binario

SITEMA BINARIO, OCTAL Y HEXADECIMAL: OPERACIONES


Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

Sistemas de numeración

Práctica 2: Datos. Fonaments d Informàtica 1r curs d Enginyeria Industrial

by Tim Tran:

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Tema 1. SISTEMAS DE NUMERACION

SISTEMAS Y CÓDIGOS DE NUMERACIÓN

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales

Estructura de Computadores

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

ARITMÉTICA EN PUNTO FLOTANTE

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Anterior Sistemas binarios: Aritmética binaria Siguiente ARITMÉTICA BINARIA. Operaciones elementales con números binarios

Sebastián García Galán

❷ Aritmética Binaria Entera

TEMA 2 REPRESENTACIÓN BINARIA

Juan Antonio González Mota Profesor de Matemáticas del Colegio Juan XIII Zaidín de Granada

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Sistemas de Numeración Operaciones - Códigos

Medidas de tendencia central o de posición: situación de los valores alrededor

Tema 2 Representación de la información. Fundamentos de Computadores

Primeros conmutadores: diodos de cristal y de tubos de vacío (1906). Transistor (TRT): más pequeño y fiable, de material semiconductor (1950).

Clase 02: Representación de datos

Módulo 9 Sistema matemático y operaciones binarias

Lección 1. Representación de números

1. SISTEMAS DIGITALES

Materia Introducción a la Informática

SISTEMAS DE NUMERACIÓN. Sistema decimal

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

Aritmética Binaria. Luis Entrena, Celia López, Mario García, Enrique San Millán. Universidad Carlos III de Madrid

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Materia: Informática. Nota de Clases Sistemas de Numeración

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Aritmética binaria

x

Representación de Datos. Representación de datos numéricos. Representación de datos caracteres. Representación de otros tipos de datos

Estructuras algebraicas

MÉTODOS MATEMÁTICOS (Curso ) Cuarto Curso de Ingeniero Industrial Departamento de Matemática Aplicada II. Universidad de Sevilla

Fundamentos de Informática 1er curso de ingeniería Industrial. Tema 2. Datos. Tema 2. Datos

Colegio Las Tablas Tarea de verano Matemáticas 3º ESO

Tema I. Sistemas Numéricos y Códigos Binarios

ARQUITECTURA DE LAS COMPUTADORAS PRACTICA

Informática Básica: Representación de la información

Matemáticas para la Computación

Informática Bioingeniería

Los números racionales son todos aquellos números de la forma a con a y b números enteros y b

Estudio Gráfico de Funciones. Departamento de Matemáticas. IES Rosario de Acuña. Gijón 2009

Sistemas de numeración

Notas de Teórico. Sistemas de Numeración

FUNCIONES CUADRÁTICAS Y RACIONALES

Solución: exp Febrero, primera semana. Paso 1º: Cálculo del campo exponente. Según el apartado a) del primer corolario: 53.

Asignatura: PROGRAMACIÓN Y MÉTODOS NUMÉRICOS

SISTEMAS DE NUMERACIÓN (11001, 011) = = (32,12)

INFORMATICA I. Sistemas de Numeración - Representación Interna. Autor: Jorge Di Marco

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo Universidad Carlos III de Madrid

TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN

INFORMÁTICA. Matemáticas aplicadas a la Informática

Apuntes de Microcontroladores (Repaso de temas previos)

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

Informática y Programación Escuela de Ingenierías Industriales y Civiles Grado en Ingeniería Química Curso 2010/2011

Unidad Didáctica. Códigos Binarios

Naturaleza binaria. Conversión decimal a binario

Interpolación polinómica

UNIDAD Nº 1: 1. SISTEMAS DE NUMERACION. Formalizado este concepto, se dirá que un número X viene representado por una cadena de dígitos:

ARITMÉTICA FLOTANTE Y ANÁLISIS DE ERRORES

Juan Antonio González Mota Profesor de Matemáticas del Colegio Juan XIII Zaidín de Granada

LABORATORIO DE COMPUTADORAS

Sistema binario. Representación

Tema 07. LÍMITES Y CONTINUIDAD DE FUNCIONES

TEMA 4. Sistema Sexagesimal. Sistema Octal (base 8): sistema de numeración que utiliza los dígitos 0, 1, 2, 3, 4, 5,

Media vs mediana vs moda Cual medida de tendencia central es mas adecuada? MEDIA conveniencias:

TEMA 2: Representación de la Información en las computadoras

2. Aritmética modular Ejercicios resueltos

1.1. Introducción y conceptos básicos

Representación de números enteros: el convenio signo y magnitud

Transcripción:

Errores en las Operaciones Aritméticas Matemáticas de la Especialidad (Mecánica-Máquinas) Madrid, 8 de octubre de 2001 Javier García de Jalón ETSII - Departamento de Matemática Aplicada a la Ingeniería Industrial Errores en los Resultados de los Cálculos Tipos de errores: Modelización, Truncamiento, Discretización, Redondeo Errores de Modelización o Idealización Debidos a las hipótesis realizadas para convertir un modelo real en un modelo matemático: sólido rígido, pequeños desplazamientos, material homogéneo e isótropo, diferentes teorías de fleión,... Errores de Truncamiento Debidos a la sustitución de un proceso infinito por otro finito: series de Taylor, funciones de interpolación en elementos finitos,... Errores de Discretización Debidos a la sustitución de un proceso continuo por otro discreto, o de un infinitésimo por una cantidad finita: diferencias finitas, elementos finitos, integración numérica,... Errores de Redondeo Debidos al número limitado de cifras que almacena el ordenador Lo ideal es que los distintos errores mantengan un cierto equilibrio 1

Eemplo 1: Errores en una suma sencilla El siguiente programa de Matlab % fichero suma01.m suma=0; n=1000000 for i=1:n suma=suma+0.1; end suma, eabs=n/10-suma, erel=(n/10-suma)/(n/10) da como resultado n = 1000000 suma = 1.000000000013329e+005 eabs = -1.332882675342262e-006 erel = -1.332882675342262e-011 (0.1) = (0.00011001100110011...) 10 2 1011011100110.111010011000 + 1011011100111.000000110001.000110011001100110011001100= Este error es mucho más elevado de lo que cabría esperar. Causas: El número 0.1 no es eacto en base 2 Cuando suma crece se desprecian más cifras de 0.1 Eemplo 2: Diferencia entre números El siguiente programa de Matlab evalúa la misma función de dos formas diferentes function dife1 =logspace(1,8,8); f=f() g=g() dif=g-f function ff=f() ff=.*(sqrt(+1)-sqrt()); function gg=g() gg=./(sqrt(+1)+sqrt()); ( ) f( ) = * + 1 g ( ) = + 1 + y da como resultado f = 1.0e+003 * 0.00154347130187 0.00498756211209 0.01580743742896 0.04999875006249 0.15811348772559 0.49999987504634 1.58113879024313 5.00000005558832 g = 1.0e+003 * 0.00154347130187 0.00498756211209 0.01580743742896 0.04999875006250 0.15811348772569 0.49999987500006 1.58113879055572 4.99999998750000 dif = 1.0e-004 * 0.00000000002220 0.00000000032863-0.00000001803002 0.00000010651036 0.00000101522346-0.00046279410526 0.00312590145768-0.68088316766080 2

Eemplo 3: Evaluación de sucesiones El siguiente programa de Matlab evalúa una sucesión de tres formas diferentes % fichero suces1.m (1)=1; (2)=1/3; p(1)=1; p(2)=1/3; q(1)=1; q(2)=1/3; for n=1:20 (n+2)=1/3^(n+1); % valor eacto p(n+2)=4*p(n+1)/3-p(n)/3; q(n+2)=10*q(n+1)/3-q(n); disp(['n=',num2str(n+2,4),' =',num2str((n+2),14),' p=',num2str(p(n+2),14),' q=',num2str(q(n+2),14)]); end y da como resultado n=1 =1. p=1. q=1. n=2 =0.33333333333333 p=0.33333333333333 q=0.33333333333333 n=3 =0.11111111111111 p=0.11111111111111 q=0.11111111111111 n=4 =0.037037037037037 p=0.037037037037037 q=0.037037037037036... n=14 =6.2722547438631e-007 p=6.272254743846e-007 q=6.2719238832859e-007 n=15 =2.0907515812877e-007 p=2.0907515812706e-007 q=2.0897589995562e-007 n=16 =6.9691719376256e-008 p=6.9691719374552e-008 q=6.9393944856812e-008 n=17 =2.3230573125419e-008 p=2.3230573123715e-008 q=2.2337249567086e-008 n=18 =7.7435243751396e-009 p=7.7435243734353e-009 q=5.063553700141e-009 n=19 =2.5811747917132e-009 p=2.5811747900089e-009 q=-5.4587372332825e-009 n=20 =8.6039159723773e-010 p=8.6039159553347e-010 q=-2.3259344477749e-008 n=21 =2.8679719907924e-010 p=2.8679719737498e-010 q=-7.2072411025882e-008 n=22 =9.5599066359748e-011 p=9.5599064655482e-011 q=-2.1698202560852e-007 1 1 n = ; n n = n 1 3 3 4 1 1 1 pn = pn 1 pn 2; p0 = 1, p1 = ; pn = A + B ( A= 1, B = 0 n ) 3 3 3 3 10 1 1 n qn = qn 1 qn 2; q0 = 1, q1 = ; qn = A + B 3 A= 1, B = 0 n 3 3 3 ( ) Eemplo 4: Inversión de una matriz El siguiente programa de Matlab % fichero hilbert1.m clear all n=10; for i=1:n for =1:n A(i,)=1/(i+-1); end end B=inv(A); error=norm(b*a-eye(n)) da como resultado» error = 1.117171034133376e-004 es decir que se han perdido unas 12 cifras significativas 1 Condición numérica de una matriz b b κ ( A) b κ ( A) κ ( A) = A A A A A 3

Introducción a los errores de redondeo En un ordenador los números se representan con un nº finito de cifras Ciertos números no se pueden representar eactamente y al aproimarlos se comete un error Los resultados de muchas operaciones aritméticas tienen más cifras de las que se puede almacenar y hay que aproimarlos eliminando las cifras menos significativas. A este proceso se llama "redondeo" Redondeo simétrico Redondeo truncado Los errores de redondeo son inevitables, pero controlables En muchas ocasiones son poco significativos y no tienen ninguna importancia Sin embargo, en algunos problemas pueden llegar a destruir por completo el significado de un resultado. Conviene detectar estos casos y tomar las medidas adecuadas Unos errores de redondeo catastróficos pueden ser consecuencia de un problema difícil, de un mal algoritmo, o de ambas cosas a la vez Tipos de variables y de almacenamiento El tipo de dato en la realidad determina el tipo de variable que se debe utilizar en un programa. Los ordenadores disponen de diversos tipos de datos. Eemplos: Char o String, para almacenar caracteres alfanuméricos Integer, para numerar las filas y columnas de una matriz no muy grande Long, para numerar los habitantes de una ciudad Logical, para una opción con sólo dos valores (sí, no; true, false) Single, para variables físicas que no eian mucha precisión Double, para variables físicas que eian precisión Currency, para cantidades grandes de dinero Se debe utilizar el tipo de dato más sencillo que represente correctamente el dato real Se pueden numerar los elementos de un conunto con Double en vez de con Long o con Integer, pero ocupará más memoria y las operaciones serán más lentas Matlab utiliza fundamentalmente variables tipo Double 4

Sistemas binario, octal, decimal y headecimal Decimal Binario Octal Headec. 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 La mayor parte de los ordenadores modernos utilizan el sistema binario Cambio de base Paso de base 8 a base 10 4725 8 = 4 8 3 + 7 8 2 + 2 8 + 5 = 2517 Paso de base 10 a base 8 2517 10 =4725 8 2517 = 314 8 + 5 314 = 39 8 + 2 39 = 4 8 + 7 Paso de base 10 a base 2 2517 10 =100111010101 2 Es fácil pasar de base 8 a base 2 sin más que concatenar las conversiones de los dígitos octales a base 2 4725 8 =100 111 010 101 2 2517 = 1258 2 + 1 1258 = 629 2 + 0 629 = 314 2 + 1 314 = 157 2 + 0 157 = 78 2 + 1 78 = 39 2 + 0 39 = 19 2 + 1 19 = 9 2 + 1 9 = 4 2 + 1 4 = 2 2 + 0 2 = 1 2 + 0 5

Almacenamiento de variables enteras Los enteros se guardan en 2, 4 u 8 bytes Con 16 bits se pueden guardar: 2 16 = 65.536 Si se reserva un bit para el signo: 2 15 = 32.768 Rango de enteros representables: -32.768 < número < 32.767 Con 32 bits se pueden guardar: 2 32 = 4.294.967.296 Si se reserva un bit para el signo: 2 31 = 2.147.483.648 Rango de enteros representables: -2.147.483.648 < número < 2.147.483.647 Forma interna de representar los enteros con signo Codificación independiente del signo Complemento a uno Complemento a dos (Intel) Por eceso a 2 N-1-1 (eponentes de números de punto flotante) Almacenamiento de variables enteras (2) Codificación independiente del signo N 2 s N 2 N 3 2 1 0 = 0 { } sd d... ddd ( 1) d 2, sd, 0,1 0000...0000 0 1000...0000 0 0000...0001 1 1000...0001 1...... N 1 N 1 0111...1111 2 1 1111...1111 ( 2 1) Complemento auno N-1 N-1 = 0 = 0 d 2 - (1- d )2 0000...0000 0 1111...1111 0 0000...0001 1 1111...1110 1...... N 1 N 1 0111...1111 2 1 1000...0000 (2 1) Complemento ados ( Intel) N-1 N-1 = 0 = 0 d 2-1 + (1- d )2 0000...0000 0 0000...0001 1 1111...1111 1...... N 1 1000...0000 2 N 1 N 1 0111...1111 2 1 1000...0001 (2 1) Por eceso a N 1 N 2 2 1 0 N 1 2 1 d d... ddd 0 d d ddd N-1 N 1 N 2... 2 1 0 -(2-1) N-1 0000...0000-2 + 1 +... 0111...1111 0 1111...1111 2 N-1 0000...0001-2 2 1000...0000 1 N 1 6

Variables de punto flotante Estandarizadas por IEEE 784:1985 y IEC 559:1989 Simple precisión (32 bits) 1 8 23 Doble precisión (64 bits) 1 11 52 Elementos: signo, eponente, mantisa Signo: independiente de resto. Simetría respecto a cero Mantisa: nº real, no negativo, con punto fio m =. ddd... d = d 2 + d 2 +... + d 2 p 1 2 1 2 3 p 1 2 p Eponente: valor entero entre e min y e ma Otras características Normalización: Para evitar ambigüedades se eige d 1 0. Desnormalización: Se permite d 1 =0 cuando el eponente es e=e min. Éste es el criterio para reconocerlos. De esta forma se recuperan los números pequeños. Variables de punto flotante (2) Un conunto de números de punto flotante F queda determinado por cinco parámetros F(base, p, e min, e ma, denorm) Para los procesadores Intel estos valores son F(2, 24, 126, 127, true) simple precisión F(2, 53, 1022, 1023, true) doble precisión F(2, 64, 16382, 16383, true) precisión etendida Los eponentes se guardan por eceso a 2 N-1 1 Con 11 bits, sin bit de signo, se almacenan enteros entre 0 y 2048 Bit oculto El valor real del eponente es (e 1023), con lo cual 1023 e 1024 En la práctica se hace e min = 1022, e ma =1023 Como en los números normalizados d 1 =1 y en los desnormalizados d 1 =0, no es necesario almacenar este bit y se dispone de un bit adicional para la mantisa La mantisa es entonces 1.d 1 d 2 d 3...d p y cumple la condición 1 m<2 7

Variables de punto flotante (3) Números máimo y mínimo representables Los números de punto flotante normalizados y mayores que cero se encuentran en el intervalo (sin y con bit oculto) 1 emin p ema emin p ema [2 2, (1 2 ) 2 ] [1 2, (2 2 ) 2 ] Los números desnormalizados están en el intervalo p emin p emin [2 2, (1 2 ) 2 ] Distancia entre dos números consecutivos La distancia absoluta entre números normalizados varía para cada valor del eponente, pero en el intervalo [2 e, 2 e+1 ] es constante y viene dada por 2 p 2 e 2 e = = p = u 2 e donde u = 2 -p es el llamado incremento básico Valor eps: mínimo número que sumado a 1 da un resultado 1 Se verifica que eps=u Variables de punto flotante (4) Distancia relativa La distancia relativa entre números consecutivos positivos normalizados es / = 2 e-p /(m() 2 e ) = 2 -p /m() epresión que permanece casi constante, pues depende del valor de la mantisa m(), que varía 1/2 y 1-2 -p, sin bit oculto, pero no depende del valor de e Vacío alrededor del cero (números normalizados) Entre 0 y 2-1 2 emin (sin bit oculto) no hay ningún número en F Sin embargo entre 2-1 2 emin y 2-1 2 emin+1 hay números cada u=2 -p Con números desnormalizados entre 0 y 2-1 2 emin hay números cada u=2 -p 0 2-1 2 emin 2-1 2 emin+1 0 2-1 2 emin 2-1 2 emin+1 Números ±infinito, ±0 y NaN (Not a Number) Los ceros con signo (+0 y 0) se representan con m=0 y e=e min 1 Los infinitos (+ y ) se representan con m=0 y e=e ma +1 Los Not a Number ó NaNs se representan con m 0 y e=e ma +1 8

Sistema numérico de Matlab Utiliza 64 bits Un bit de signo, 11 bits de eponente con eceso a 2 10-1=1023, y 53 bits para la mantisa (hay un bit oculto de más) de modo que los números normalizados no nulos son de la forma s e ( 1) 1.m 2 Eemplo 1 7 ( 1) 1.984375 2 = ( 254) (c06fc00000000000) 16 = (1100 0000 0110 1111 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000) 2 s = 1; e = (100 0000 0110) 2 -(2 10-1) = 1030-1023 = 7 m = 2-1 + 2-2 + 2-3 + 2-4 + 2-5 + 2-6 = 0.984375 10 Sistema numérico de Matlab (2) Valores particulares emin = -1022 ema = 1023 eps = (3cb0000000000000) 16 = 1.0 2-52 1 = (3ff0000000000000) 16 = 1.0 2 0 1+eps = (3ff0000000000001) 16 realma= (7fefffffffffffff) 16 = (2-eps) 2 1023 realmin= (0010000000000000) 16 = 1.0 2-1022 +0 = (0000000000000000) 16 s=0 m=0 e=-1023-0 = (8000000000000000) 16 s=1 m=0 e=-1023 NaN = (fff8000000000000) 16 m 0 e= 1024 +Inf = (7ff0000000000000) 16 s=0 m=0 e= 1024 -Inf = (fff0000000000000) 16 s=1 m=0 e= 1024 1/realma=(0004000000000000) 16 s=0 m 0 e=-1023 9

Aritmética de punto flotante Redondeo. Eemplo en base 10 (manteniendo 6 cifras) : Con redondeo truncado: 0.8472765924576 0.847276 Con redondeo simétrico: 0.8472765924576 0.847277 Números en F entre los que está un número en R Dado un número positivo =1.d 1 d 2...d 23 d 24...d 52 d 53... 2 e el valor anterior se obtiene truncando los bits que eceden de p: =1.d 1 d 2...d 23 d 24...d p 2 e El valor inmediatamente superior será + =(1.d 1 d 2...d 23 d 24...d p +2 -p ) 2 e Errores de redondeo Con redondeo truncado el error es menor que la diferencia + o que el valor de la última cifra retenida -fl()<10-6 Con redondeo simétrico el error es menor que + /2 o que la mitad del valor de la última cifra retenida -fl()<1/2 10-6 Errores absolutos y relativos Errores absolutos -fl() Errores relativos -fl() / Propagación de errores Errores de las operaciones aritméticas Los registros de la CPU tienen más precisión. Puede suponerse que las operaciones se realizan eactamente y luego se redondea el resultado Sea el resultado eacto de una operación aritmética cualquiera (+,, *, /) El error relativo y la relación entre el valor aproimado y el eacto serán y fl( y) p 1 δ = < 2 fl( y) = ( y)(1 + δ) y Al valor δ se le denomina error de redondeo unitario, y es un límite superior para el error relativo de cualquier operación. En doble precisión δ=2 -p-1 =2-53 Si hay varias operaciones consecutivas los errores se propagan en la forma fl( + ( y+ z)) = ( + fl( y + z))(1 + δ ) = = ( + ( y+ z)(1 + δ ))(1 + δ ) = 2 1 = ( + y + z) + ( y+ z) δ + ( + y + z) δ + ( y+ z) δδ El resultado depende del orden de las operaciones aritméticas. Conviene operar primero con los sumandos más pequeños. 1 2 1 1 2 ( + y + z) + ( y+ z) δ + ( + y + z) δ < ( + y+ z)(1 + δ + δ ) 2 1 1 2 10

Problemas mal condicionados Son aquellos problemas en los cuales los errores tienden a crecer en una forma incontrolada, potencial o eponencial, superior por tanto a un crecimiento lineal con el número de operaciones aritméticas La "condición" de un problema es la sensibilidad de los resultados a pequeñas variaciones en los datos. Si es muy grande pueden esperarse dificultades aunque los datos iniciales sean eactos, pues los errores numéricos tenderán a amplificarse A veces se puede estimar teóricamente la condición de un problema Para una función, mediante el Teorema del Valor Medio f( + h) f( ) = f ( ξ ) h f ( h ) f( + h) f( ) hf ( ) f ( ) h = f( ) f( ) f( ) Para la solución de sistemas de ecuaciones lineales b b A A κ( A) κ( A) κ( A) = A A b A El remedio es utilizar más cifras significativas 1 Problemas mal planteados (alg. inestables) Diferencia de números parecidos La resta entre números de una magnitud parecida puede hacer perder varias cifras significativas La solución es tratar de realizar las operaciones de otra forma.453920186823497.453920172041866.000000014782631=.147826310000000 10 Orden de las operaciones de acumulación Si se suman primero los términos más pequeños se pierden menos cifras significativas que si se empieza sumando los términos de mayor valor Comparaciones Signo de números pequeños: Para saber si un número pequeño es mayor que cero conviene establecer un valor límite (1e-12, por eemplo) pues los números próimos a cero pueden tener un signo u otro según los errores de redondeo Comparación de números de punto flotante: Nunca se deben comparar con el operador == directamente. Hay que ver si el valor absoluto de su diferencia dividido por el valor absoluto del número es menor que un determinado número pequeño (1e-12, por eemplo) -7 11