Este documento presenta una introducción a los métodos numéricos. Explica que los métodos numéricos son algoritmos que obtienen resultados numéricos aproximados para problemas matemáticos. También describe las etapas clave para resolver problemas con métodos numéricos, incluyendo el modelado matemático, el diseño de algoritmos y la implementación computacional. Finalmente, discute conceptos importantes como los tipos de errores y la representación de números en computadoras.
2. • Metodos Numericos = Analisis Numerico = Algoritmos numéricos.
• Reflexion entre cálculos, algebra lineal y ecuaciones diferenciales.
• Remix entre análisis matemático cualitativo y cuantitativo.
• Cualitativo: Nos dice que existe, que es único (teoría de conjuntos, etc).
• Cuantitativo: Nos permite determinar aproximadamente la cantidad de
aquello que existe (es complementario al análisis cualitativo).
3. Algoritmos Numericos
• Métodos que a partir de un numero finito de pasos obtiene
Resultados Numéricos de Problemas matemáticos a partir de
números.
• Esta materia se dedicara a estudiar esos algoritmos.
• Los algoritmos numéricos son parte del diseño de nuestro software,
sirven para resolver o procesar nuestro modelo matemático del
problema.
4. Modelo Matemático???
Al desarrollar una solución para un problema, tenemos varias etapas:
• Determinar el Problema: Definimos el problema brevemente.
• Análisis: Establecemos un modelo matemático que represente nuestro
problema, los resultados esperados y el objetivo. Es decir mapeamos,
transformamos, convertimos nuestro modelo en términos matemáticos.
• Diseño: Establecemos los métodos numéricos (algoritmos) para resolver el
modelo matemático planteado (el problema).
• Instrumentación: Es la elección de la plataforma que usaremos para calcular
nuestra solución. La computadora. Aquí programamos.
• Resultados: Verificamos los resultados.
• Retroalimentación: Existe en todas las etapas, sirve para ajustar los modelos, los
métodos y la instrumentación para lograr resultados correctos.
5. Resolviendo Problemas con Matematicas
Problema
• Determinar
problema y
objetivos
Analisis
• Modelo
Matematico
Diseño
• Metodos
numericos
(Algoritmos)
Instrumentacion
• Programar
Resultado
• Revisar
resultados
y objetivos
Retroalimentación
6. 3 ideas Basicas
• Punto Fijo
• Eliminación de Gauss
• Aproximación a funciones
8. Errores en el Proceso
• Errores en el Análisis (Inherentes): Nos equivocamos en el modelo
matemático. Sobre simplificaciones, supuestos equivocados,
omisiones.
• Errores en el Diseño (Truncamiento): Errores en los métodos
numéricos utilizados. Malas formulas, sobresimplificaciones del
proceso. Errores iterativos.
• Errores en la Instrumentacion (Redondeo): Errores en la
representación finita de numeros reales en dispositivos de
almacenamiento (casi siempre binarios, veremos mas adelante).
10. Falla de software
• El error se dio al tratar de convertir un numero flotante de 64 bits a
un numero entero con signo de 16 bits, lo que produjo un overflow
(el numero inicial era demasiado grande y hubo desbordamiento).
• El numero a transformar representaba la velocidad horizontal.
• No se manejo el error adecuadamente con excepciones y se uso el
manejo de errores por defecto, el cual termino la ejecución del
programa.
11. Lecciones Aprendidas
• No correr software innecesario en sistemas críticos cuando no se
necesitan (la parte que provoco la explosión era software legado del
Ariane 4, pero se dejo intacta en el Ariane 5 a pesar de que no se
estaba usando).
• Ademas de correr pruebas de lo que el sistema debe hacer, también
necesitamos probar lo que el software no debe hacer.
• No tener manejo de excepciones por defecto que provoquen
terminación del software en sistemas que no tienen un modo de
fallos seguro.
12. Sistemas de numeración
• Decimal
• Hexadecimal
• Octal
• Binario
• En los sistemas posicionales la posición de los dígitos indica su valor.
• También debemos conocer acerca del error de Redondeo y el uso de
números de doble precisión.
• Debemos ya conocer acerca de los sistemas de numeración y la conversión
antes de empezar esta clase. Revisar Introducción a la computación.
13. Error y Error Absoluto
• El error es la diferencia entre el resultado esperado (o resultado a
aproximar) y el valor obtenido o valor aproximado.
• Si p* es una aproximación a p, el error se define como:
• E = p* - p
• Para facilitar las cosas usamos el error absoluto (el valor absoluto del
Error).
• EA = | p* - p |
14. Error Relativo y Porcentaje de Error
• Es el error relativo al valor a aproximar.
• ER = | p* - p |/p , si p ≠ 0
• Podemos expresar el error relativo como porcentaje de Error
• ERP = ER * 100
15. Ejemplo
• El valor para un calculo deberia ser p = 0.10 x 10^2 pero obtuvimos
p* = 0.08 x 10^2
• Calculemos el Error Absoluto, el Error relativo y el Porcentaje de Error
• EA = | 0.08 x 10^2 – 0.10 x 10^2| = 0.2 x 10
• ER = |0.2 x 10|/(0.10 x 10^2) = 0.2
• ERP = ER * 100 = 20%
16. Que tipo de Error Usar?
• Por lo general nos interesa el error absoluto (la cantidad que nos
desviamos de lo que queríamos calcular).
• Cuando son números muy grandes o muy pequeños, el error absoluto
es pequeño también. Entonces nos interesa conocer mas en que
porcentaje nos hemos desviado del valor a estimar. Allí usamos error
Relativo. ER.
17. Ejemplo
• Tenemos que p = 0.24 x 10^-4 y p* = 0.12 x 10^-4
• Entonces EA = |0.12 X 10^-4 – 0.24 x 10^-4| = 0.12 x 10^-4
• El error absoluto parece muy pequeño, si aceptamos a p* como
aproximación de p, estaremos cometiendo un grave error (adiós
cohete, pum!)
• Calculando el error relativo vemos:
• ER = |0.12 X 10^-4|/0.24 x 10^-4 = 0.5
• ERP = 50%
18. Advertencia – Warning – Achtung - 共發現
•Cuando se manejan
cantidades muy grandes o
muy pequeñas, el error
absoluto puede ser
engañoso.
•El error relativo es mejor
indicador en esos casos!
19. Ahora si pudimos causar una catástrofe de
dimensiones apocalípticas, no hagamos
eso!
Software de
programador
descuidado, que
no sabe métodos
numéricos. AKA:
Pendejo.
20. Numeros en Computadora
• Las computadoras solo pueden manejar una cantidad finita de bits
para representar cada numero.
• La cantidad de bits asignados para cada numero depende de cada
arquitectura (32 bits vs 64 bits).
• Es bueno trabajar con muchos bits para aplicaciones de ingeniería o
ciencia.
• Para aplicaciones administrativas (la “ciencia” de contabilidad jajaja),
se pueden usar menos bits (no desperdiciemos bits).
21. La Palabra
• Y esta es mi palabra les digo, y es palabra que deben seguir. Es de 64
bits.
• La palabra es el numero de bits que una arquitectura puede manejar.
Desde 8 bits hasta 64 bits.
• Las palabras se pueden dividir en bytes (8 bits).
• 64 bits : 8 bytes
• 32 bits : 4 bytes
22. Bits en las consolas
8 bits
16 bits 64 bits
128 bits Ya no importa
23. Números en Palabras
• Toda la información se guarda en palabras en la computadora, estas
palabras vienen definidas por la arquitectura.
• Pero no palabra en el sentido gramatical, palabra en el sentido de
arquitectura computacional (Word size – en función de numero de
bits).
• En algunas situaciones se usan varias palabras para almacenar bits.
24. Números en Palabras
• Para nosotros numeros en palabras refiere a palabras como concepto
de arquitectura computacional.
• Numeros en palabras no es esto:
• 100 = CIEN
• Es esto:
• 100 = 0b1100100
• En palabras de 8 bits (el primero es el bit de signo).
25. Numeros en Palabras
• El bit mas significativo (primer bit, hey! El bit de mas a la izquierda) en
la mayoría de arquitecturas suele ser el bit de signo.
• Si el bit de signo esta apagado 0, significa que no lleva signo
(negativo). Es decir: bit de signo en 0 es un signo positivo (+)
• Si el bit de signo esta prendido 1, significa que si lleva signo
(negativo). Es decir: bit de signo en 1 es un signo negativo (-).
• El resto de bits se usa para representar el numero.
26. Números en Palabras
• Una palabra de 16 bits puede guardar
• 2^15 – 1 números = 327671.
• Es decir el intervalo entre 32768 a -32767 (el cero ocupa un espacio).
27. Representación de números de punto Flotante
• Se acuerdan de los Floats en programación.
• Esos son números de punto flotante.
• Todos los números se normalizan a una representación decimal.
• Hay bits de mantisa (para la parte decimal.
• Hay bits de exponente (para mover el punto, por eso es flotante). Estos bits
incluyen el símbolo del exponente.
• Tenemos el bit signo para todo el numero.
28. Errores Graves en Computación
• Supongamos una palabra de 7 bits en una
arquitectura imaginaria.
• 4 dígitos decimales de mantisa
• 2 dígitos decimales de característica
• 1 bit para el signo del numero
• Tenemos una palabra de 7 bits
• Los números se deben guardar en la forma
normalizada!
• Ejemplos: 3.0 = .3000 x 10^1
• 7956000 = .7956 x 10^7
• -0.0000025211 = -.2521 x 10^-5
29. Errores Graves en Computación: Suma
• Suma de números muy distintos en Magnitud
• Intentemos sumar 0.002 a 600 en nuestra compu imaginaria.
0.002 = .2000 x 10^-2
600 = .6000 x 10^3
Los números normalizados no pueden sumarse directamente por lo que
deben desnormalizarse antes de la suma
.000002 x 10^3 + .600000 x 10^3 = .600002 x 10^3
Como solo puede manejar 4 dígitos, los 2 últimos son eliminados y la
respuesta es .6000 x 10^3.
Como que la operación de suma jamás se haya realizado!
30. Errores Graves en Computación: Resta
• Resta de números casi iguales
• Ejemplo: .2145 x 10^0 – 0.2144 x 10^0 = .0001 x 10^0
• Normalizado .1000 x 10^-3
Aun no hay error, pero solo hay un digito significativo en la respuesta. Un
pequeño error puede propagarse de forma catastrófica.
Supongamos la operación X = (A – B) x C
Los valores son A = .2145 x 10^0 , B = .2144 x 10^0 , C = .1000 x 10^5
Al efectuarse la operación obtenemos X = 1. No hay error.
Sin embargo, si hay un error en A al calcular al inicio, y este valor fuese A = .2146 x
10^0. Error absoluto 0.0001, Error Relativo 0.00046, ERP = 0.046%
Si usamos ese valor para calcular X, tendremos un resultado de 2. Un error de
0.046% se convierte en un error de 100%. Y si este error pasa desapercibido.
BOOM!
32. Mas Errores: Overflow y Underflow
• Cuando ejecutamos una
operación aritmética
con 2 números valido
pero el resultado es muy
grande o pequeño que
la computadora no
puede representarlo.
33. Overflow (Rebosado)
Ejemplo: Multiplicar .5000 x 10^8 por
.2000 x 10^9 = .1000 x 10^27
Los operandos se pueden guardar, pero el
resultado no porque la característica
(exponente) requiere 3 dígitos y hay 2
34. Mas Overflow
• Ejemplo: 2000000/0.000005
0.2000 x 107
0.5000 x 10−5
= 0.4000 𝑥 1012
El
computador
xq tiene
OverFlow!
35. Underflow
• El underflow puede aparecer en operaciones de multiplicación y
división, no es tan serio como el Overflow!
• Las computadoras casi nunca notifican del underflow
(0.3000 x 10^-5) x (0.02000 x 10^-3) = 0.006 x 10^-8 = 0.6000 x 10^-10
• Como el exponente -10 tiene 2 dígitos no puede expresarse. El
resultado se guarda como 0.
• Como el error relativo es muy pequeño, el problema no es muy serio.
36. Mas Underflow
• Si se desea calcular X = A * B * C
• Donde A = 0.3000 x 10^-5 , B = 0.0200 x 10^-3 , C = 0.4000 x 10^7
• Si se multiplican primero A * B, entonces tenemos un resultado de 0.
• Si esto multiplicamos por C, tenemos CERO!
• Pero si reordenamos los términos para que X = A * C * B, entonces si
obtenemos 0.1200 x 10^2, el cual es el resultado correcto.
• Así mismo un arreglo en la división puede evitar un underflow.
37. Error de Discretizacion
• El error de discretizacion es aquel que se da porque no se puede
almacenar un numero especifico exactamente como un numero
binario de punto flotante.
• Error de discretizacion = Error de cuantificación
• Ya que los numeros no pueden ser expresados exactamente por la
maquina (numeros maquina), estos numeros no forman un conjunto
continuo se dice que forman un conjunto Discreto (de allí
discretizacion).
• Discreto significa no continuo.
38. Error de Discretizacion
A. 𝑖=1
10000
0.0001 = 1.000054
B. 1 + 𝑖=1
10000
0.0001 = 2.000166
C. 1000 + 𝑖=1
10000
0.0001 = 10001.221
D. 10000 + 𝑖=1
10000
0.0001 = 10000
39. Errores de Salida
• Aunque las operaciones se realicen correctamente, se debe
considerar los formatos de salida.
• Una operación bien relizada con un formato de salida incorrecto
puede traer problemas
• Ejemplo:
• La respuesta de un calculo es 0.015625
• Si la respuesta se imprime en el formato F10.6 (fortran), la repuesta mostrada
es la correcta.
• Si la respuesta se imprime en el formato F8.3, se imprimirá 0.016 (si la
computadora redondea), o 0.015 si la computadora trunca.
40. Propagación de Errores
• En cada operación hay (o puede haber)
un error. En cada paso, los resultados de
las operaciones anteriores van
acarreando ese error!
• Es como el juego del teléfono. El error se
propaga.
• Cada jugador es una operación.
• El resultado final puede ser muy diferente
al esperado.
41. Propagación de Errores: Suma
• Queremos calcular c = a + b
• Si de entrada para la computadora el valor de a es inexacto,
representado por a’, tenemos que :
• a’ = a + Ɛa
donde Ɛa es el error de a* al representar a.
• De igual forma para b’ = b + Ɛb
• Se tiene que si no hay error en la suma, igual hay un error en el
resultado final. Es la consecuencia del error de representación que se
propaga.
• Error = (a’ + b’) – (a + b) = (a + Ɛa + b + Ɛb) – (a + b)
= Ɛa + Ɛb = Ɛc
42. Propagación de Errores: Suma
• Continua….
• Ahora c’ = c + Ɛc
• El error absoluto es: |(a’ + b’) – (a + b)| = |Ɛa + Ɛb| ≤ |Ɛa| + |Ɛb|
• Entonces |Ɛc| ≤ |Ɛa| + |Ɛb|
• Vemos que los errores Ɛa y Ɛb se han propagado a c.
• Ɛc es el error de propagación.
• Si continuamos realizando operaciones, estos errores se seguirán
propangando.
43. Error en Evaluación de Funciones.
• Asi mismo se propagan errores cuando se evalúan funciones. Como a’
es aun una aproximación de a, tenemos que la evaluación de una
función f(x) con x = a tendrá un error.
• Error resultante: Ɛf = f(a’) – f(a)
• Si Ɛa es pequeño, puede aproximarse la curva f(x) por su tangente
cuando x = a. La pendiente de esta tangente es la derivada de la
función, esto es f’(a), la cual es aproximadamente igual a Ɛf/ Ɛa.
• Ɛf ≈ Ɛa f(a) ≈ Ɛa f’(a’)
• En valor absoluto |Ɛf | ≈ |Ɛa f’(a’)| ≈ |Ɛa| |f’(a’)|
45. Algoritmos en Métodos numéricos
• Son las secuencias de operaciones algebraicas y lógicas que se utilizan
para obtener una solución a un problema.
• En general existen varios algoritmos para resolver un problema.
• Preferimos los algoritmos estables
• A pequeños errores en los valores manejados, pequeños errores en los
resultados.
46. Algoritmos y Estabilidad
• Supongamos que un error Ɛ se introduce en algún paso en los
cálculos.
• El error de propagación de las n operaciones siguientes se denota por
Ɛn.
• En la practica suceden 2 casos:
• |Ɛn| ≈ n c Ɛ, donde c es una constante independiente de n. Aquí la
propagación del error es linear.
• |Ɛn| ≈ Kn Ɛ, para k > 1; se dice entonces que la propagación del error es
exponencial.
48. Error Lineal vs Exponencial
• La propagación lineal de los errores suele ser inevitable.
• Cuando c y Ɛ son pequeños, es aceptable.
• La propagación exponencial es mortal y debe evitarse.
• Sabemos que el termino Kn crece muy rápido, incluso con valores pequeños
de n.
• Los errores exponenciales hacen de los resultados poco fiables, con mucho
error independiente de Ɛ.
• Estabilidad:
• Estables: Algoritmos con error Lineal.
• Inestables: Algoritmos con error Exponencial
49.
50. Daft Punk Dice
• Cuidado con los Overflows
• Recuerda que las representaciones binarias no son exactas con
respecto a los números decimales
• Los errores se propagan, y se propagaran en tu nota final si no los
tomas en cuenta.
• Ese numerito chiquito al que no trataste bien, crecerá para joderte la
vida y hará que se explote un cohete, te despidan, te metan preso y
acabes como Sadam Hussein.
51. Bibliografia
• Nieves Hurtado, A. (2012). Métodos numéricos aplicados a la
ingeniería. Grupo Editorial Patria.
• Rodriguez Ojeda, L. (2015). Analisis Numerico Basico. Guayaquil:
ESCUELA POLITECNICA DEL LITORAL (ESPOL).