Simulación en Ing. Eléctrica - Errores de redondeo

26
Simulación en Ingeniería Eléctrica ELI-213 INFORME: GUÍA DE TRABAJO N° 1 ERRORES DE REDONDEO Profesor: - Esteban Gil Sagás Integrantes: - Sebastián Flores Carrasco - Carlos Vergara Branje Fecha: 28/03/2014

description

Informe 1 Simulación en Ing. Eléctrica - Errores de redondeo

Transcript of Simulación en Ing. Eléctrica - Errores de redondeo

Page 1: Simulación en Ing. Eléctrica - Errores de redondeo

Simulación en Ingeniería Eléctrica

ELI-213

INFORME: GUÍA DE TRABAJO N° 1

ERRORES DE REDONDEO

Profesor: - Esteban Gil Sagás

Integrantes: - Sebastián Flores Carrasco

- Carlos Vergara Branje

Fecha: 28/03/2014

Page 2: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta A: Para , sume n veces π y compare su resultado con el valor real de la

suma. ¿Cuánto es el error relativo y a qué se debe?

Solución:

El código programado en MATLAB para este problema fue:

Lo que arroja los siguientes valores:

Se aprecia una diferencia del valor real de la multiplicación de n veces pi con la suma de pi n veces

en las últimas 4 cifras significativas, específicamente desde la cifra significativa 11.

Esto se debe a un error de redondeo al momento de hacer la sumatoria, ya que hay una

representación limitada de números en la memoria del computador, por lo que redondea el

número a la cantidad de dígitos de decimales que aguanta, en este caso, casi 16 decimales

(precisión double).

Esto significa un error relativo pequeño, del orden de 1e-10%.

Page 3: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta B: Repita el experimento anterior, pero sumando π aproximado con precisión simple

(use la función single()). Compare con el resultado anterior.

Solución:

El código programado en MATLAB para este problema fue:

El resultado obtenido por esta simulación es , lo que es un error

increíblemente alto comparado con el primero, aproximadamente veces mayor que en a).

Este error tiene este valor ya que en single() el computador almacena aproximadamente 7

decimales, versus los casi 16 decimales que almacena en double() . En este caso tenemos en el

cálculo errores de redondeo, ya que como es un número infinito, la sumatoria se va

corrompiendo más rápido que en el caso a).

Page 4: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta C: Diseñe un programa que permita graficar la evolución del error relativo para el caso

A en la medida que se redondea π con distinto número de cifras significativas (use la función

chop() y considere desde 1 a 20 cifras significativas). ¿Cómo crece el error? ¿Por qué se estabiliza

después de cierto punto?

Solución:

El código en MATLAB programado para este problema fue:

Page 5: Simulación en Ing. Eléctrica - Errores de redondeo

Este código arroja el siguiente gráfico:

Como se puede observar, considerar 1 cifra significativa significa un error relativo de

respecto al valor real.

Este error disminuye exponencialmente a medida que se consideran más cifras significativas en la

sumatoria de , estabilizándose el error desde las cifras significativas, que es cuando el error ya

es cercano al .

Este comportamiento decreciente del error relativo a medida que es mayor el número de cifras

significativas, se debe a que el hecho de considerar mas cifras significativas, el redondeo es más

exacto, por lo que disminuye en parte el error por redondeo. De todas formas siempre habrá un

error de redondeo asociado, ya que es un número irracional, y dada la capacidad del programa,

redondeará siempre a alguna cifra.

0 2 4 6 8 10 12 14 16 18 200

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5Evolución de error relativo

N° de cifras significativas

Err

or

rela

tivo

Page 6: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta D: Sume n veces 0.5. Repita sumando n veces 0.1. Compare el error relativo en cada

caso e indique por qué uno es mayor que el otro.

Solución:

El código programado en MATLAB para este problema fue:

Los valores entregados fueron:

Es obvio que el error relativo para la tiene que ser cero, ya que el numero es una

potencia de 2, en especifico , por lo que este número, al ser transformado a binario es

exacto, y no tiene perdidas por aproximación ni truncamiento. Caso contrario ocurre con el

número , que al ser transformado a binario se convierte en una sumatoria infinita de potencias

de dos, lo que resulta en el error de la segunda sumatoria.

Page 7: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta E: Repita el experimento anterior usando precisión simple. ¿Qué le dicen sus

resultados?

Solución:

El código programado en MATLAB para este problema fue:

Los resultados arrojados por MATLAB fueron:

De nuevo, el error esperado para la sumatoria de 0.5 fue de 0%, por lo ya expuesto en D), se debe

a que 0.5 es el numero binario exacto . Para la segunda sumatoria, vemos que el error

aumenta en aproximadamente veces, esto por lo analizado en B), se debe a la menor

utilización de decimales en la sumatoria, y a la consecuente corrupción de datos cuando la suma

se repite un millón de veces.

Page 8: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta F: Diseñe un programa que permita graficar la evolución del error relativo para los

casos A, B, D y E en la medida que se aumenta el valor de n (auméntelo exponencialmente para

obtener un mayor rango). Establezca una relación entre el error relativo y el valor de n, compare

sus resultados para los distintos casos, y justifique teóricamente sus resultados.

Solución:

El código programado en MATLAB para este problema fue:

Page 9: Simulación en Ing. Eléctrica - Errores de redondeo
Page 10: Simulación en Ing. Eléctrica - Errores de redondeo
Page 11: Simulación en Ing. Eléctrica - Errores de redondeo

Finalmente se agrega el código para que grafique el error relativo versus la cantidad de N, como se

muestra a continuación:

Page 12: Simulación en Ing. Eléctrica - Errores de redondeo

Por lo tanto, analizando caso a caso, se tienen los siguientes resultados:

Observación previa: de los gráficos obtenidos en el matlab, el error relativo presenta "caídas" a

cero. Esto se debe a la aritmética de punto flotante, dado que el número sólo puede ser

representando exactamente cuando al expresarlo en fracción el denominador es una potencia de

2. En esos casos el error da 0 porque la multiplicación de da un número con 16 dígitos de

punto flotante , que viéndolo como fracción el denominador es una potencia de 2, por lo que da lo

mismo la sumatoria de .

Caso pregunta A:

Considerando un , la gráfica arrojada por MATLAB es la siguiente:

Dejando de lado el efecto de las caídas del error a 0, la evolución del error relativo a medida que

aumenta el valor de N se comporta de forma exponencial. Era de esperarse, ya que el hecho de

considerar más veces el en la suma (número irracional), hace que el error crezca por redondeo.

Por lo tanto llega un momento en que se suma tantas veces el que el redondeo difiere mucho

del valor real y este se dispara.

100

101

102

103

104

105

106

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8x 10

-9

Valor de N

Err

or

rela

tivo %

Error relativo versus valor de N

Page 13: Simulación en Ing. Eléctrica - Errores de redondeo

Caso pregunta B:

Considerando un , la gráfica arrojada por MATLAB es la siguiente:

Para este caso, el comportamiento de igual forma es exponencial, y se debe a la misma razón que

el caso anterior, en el cual redondeando más veces el valor difiere mucho del real.

A diferencia del anterior, el error es mayor y crece mucho más rápido, debido a que acá se está

aproximando con precisión simple, el cual considera menor cantidad de dígitos decimales, por lo

que el error de redondeo por cada vez que se suma es mucho mayor.

100

101

102

103

104

105

106

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Valor de N

Err

or

rela

tivo %

Error relativo versus valor de N

Page 14: Simulación en Ing. Eléctrica - Errores de redondeo

Caso pregunta D:

Considerando un , las gráficas arrojadas por MATLAB son las siguientes:

Para el gráfico del 0.5, es de esperarse que el error fuese cero, independiente el N, ya que 0.5 se

puede representar como potencia de 2, por lo que queda almacenado de forma exacta (no le

afectan los errores de redondeo).

100

101

102

103

104

105

106

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Valor de N

Err

or

rela

tivo %

Error relativo versus valor de N, caso 0.5

Page 15: Simulación en Ing. Eléctrica - Errores de redondeo

En cambio para el gráfico del 0.1, este número se representa en potencia de 2 con una sumatoria

infinita de términos, por lo que en binario, al operar con este número entran los errores de

redondeo y truncamiento (ídem a la pregunta D).

De igual forma la evolución del error para el último caso debe ser exponencial, ya que a mayor

valor de N, mayores son los errores de arrastre que se dan al truncar y redondear.

100

101

102

103

104

105

106

0

0.2

0.4

0.6

0.8

1

1.2

1.4x 10

-9

Valor de N

Err

or

rela

tivo %

Error relativo versus valor de N, caso 0.1

Page 16: Simulación en Ing. Eléctrica - Errores de redondeo

Caso pregunta E:

Considerando un , las gráficas arrojadas por MATLAB son las siguientes:

Al igual que en el caso anterior, el hecho de cambiarle la precisión a simple no afecta en los

errores de redondeo, porque 0.5 se representa como potencia de 2, por lo que su

almacenamiento es exacto, y el sumarlo de a poco no representa diferencia con el número real.

100

101

102

103

104

105

106

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Valor de N

Err

or

rela

tivo %

Error relativo versus valor de N, caso 0.5

Page 17: Simulación en Ing. Eléctrica - Errores de redondeo

Como era de esperarse, la evolución del error también debe darse de forma exponencial, ya que el

considerar más veces el número 0.1, acumula errores de redondeo y truncamiento.

A diferencia del caso anterior de 0.1, el hecho de tener precisión simple, hace que el redondeo

haga la aproximación más inexacta, por lo que el error es mayor y crece más rápido que con

precisión doble.

100

101

102

103

104

105

106

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Valor de N

Err

or

rela

tivo %

Error relativo versus valor de N, caso 0.1

Page 18: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta G: Se sabe que la serie armónica

no converge cuando .

Programe una función para determinar el valor de y grafique sus resultados para distintos

valores de n. ¿Por qué el resultado parece converger?

Solución:

El código programado en MATLAB para este problema fue:

Con esto podemos graficar la función para distintos valores, en este caso la graficaremos

entre los valores 1 y 100000.

Page 19: Simulación en Ing. Eléctrica - Errores de redondeo

Y el gráfico que nos resulta es el siguiente:

La serie armónica se define como:

Esta serie, a simple vista parece converger, pero no es así, ya que esta es una serie armónica del

tipo:

Este tipo de series solo son convergentes cuando , por eso, aunque la serie parece que

disminuye su pendiente rápidamente, en realidad no lo hace tan rápido como para converger en

infinito. En MatLab si graficáramos esta función hasta el infinito. probablemente en algún punto

convergería, ya que la precisión está determinada por el valor eps, sin embargo esto es por límites

de la maquina, que no es capaz de procesar números menores a eps.

0 1 2 3 4 5 6 7 8 9 10

x 104

0

2

4

6

8

10

12

14Convergencia de la Serie Armonica

n

f (n

)

Page 20: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta H: Diseñe un programa que permita evaluar la precisión de su computador , donde

es el número más pequeño para el cual . Compare su resultado con lo obtenido

usando la función eps() de MATLAB ¿Qué conclusión práctica puede sacar a la hora de elaborar sus

propios programas?

Solución:

Los resultados arrojados por MATLAB son:

Con lo que podemos concluir que el programa creado permite obtener la precisión exacta de

MATLAB, que es el valor eps de la consola. Donde eps devuelve la distancia desde 1 hasta el

siguiente numero con precisión doble, que es .

Al hacer nuestros propios programas nos damos cuentas de las ventajas que tiene MATLAB al

analizar casos numéricos, además podemos darnos cuenta a la vez de las limitantes técnicas de

este poderoso software, entender su rango óptimo de funcionamiento, y así en un futuro

entender problemas que tengamos con cálculos de números muy grandes de potencias, o muy

pequeños asociados a sensores de control.

Page 21: Simulación en Ing. Eléctrica - Errores de redondeo

Pregunta I: Considere una ecuación cuadrática de la forma .

o Si , las soluciones de la ecuación son aproximadamente

y

o Si , las soluciones de la ecuación son aproximadamente

y

o Si , las soluciones de la ecuación son

aproximadamente y

Usando la expresión

para obtener las soluciones en el computador, determine el error

relativo para cada caso y explique lo que sucede. Averigüe acerca de una forma alternativa para

determinar las soluciones que evite los problemas numéricos y verifíquela.

Solución:

Primero creamos una función usando la expresión anterior

, llamada Raiz_3:

Luego utilizamos la función para obtener las soluciones con el método de las raíces, el código es el

mismo, solo cambia el valor de c y de las soluciones guía.

Page 22: Simulación en Ing. Eléctrica - Errores de redondeo

Para el primer caso tenemos:

Los Valores arrojados por MATLAB son, para el primer caso:

Y los errores obtenidos fueron:

Page 23: Simulación en Ing. Eléctrica - Errores de redondeo

Para el segundo caso

Donde las soluciones exactas son:

Y los errores asociados son:

Page 24: Simulación en Ing. Eléctrica - Errores de redondeo

Para el tercer caso:

Donde las soluciones son:

Y los errores arrojados por MATLAB son:

Page 25: Simulación en Ing. Eléctrica - Errores de redondeo

Como forma alternativa para determinar las soluciones se puede hacer el siguiente procedimiento:

A la expresión:

la podemos multiplicar por un "1" conveniente, que vendría a ser

dependiendo de qué solución sacar.

Esta multiplicación nos daría las siguientes expresiones para obtener las soluciones:

El hecho de que la raíz este en el denominador, reduce el error por efecto de la "cancelación

catastrófica", la cual se da cuando se restan números muy parecidos, perdiendo cifras

significativas. Para este caso vendría a ser el .

Una forma más intuitiva de explicarlo es considerar que para la expresión donde es

un número muy grande y el producto de es muy pequeño, esa resta dentro de la raíz omite

muchas cifras significativas, por lo tanto esa raíz en sí ya tiene un error asociado y el número es

muy parecido a .

Para comprobarlo en numéricamente, se crea en MATLAB la función Raiz_3_alternativa:

cambiando el uso de la función por la nueva función en nuestro

código original, se obtienen las siguientes soluciones y errores para cada caso:

1er caso:

Page 26: Simulación en Ing. Eléctrica - Errores de redondeo

Comparando con el resultado de la obtención original, se invierte el error, en el sentido de que

tiene más error ahora la solución , pero de todas formas, el error de las soluciones y como

conjunto es menor.

El error más alto, en el caso de no supera al más alto del original del caso 1.

2do caso:

Al igual que en el caso anterior, se invierte qué solución tiene el error máximo, pero de todas

formas el error de amas soluciones viene a ser menor que con la obtención original.

3er caso:

Ídem a los casos anteriores.

Con esto se comprueba que el método de obtención de raíces propuesto disminuye el error

relativo, con respecto a las soluciones "reales" de la guía.

Por lo tanto, por las razones explicadas anteriormente, la forma alternativa presentada es viable

numéricamente.