Vous êtes sur la page 1sur 26

Simulacin en Ingeniera Elctrica

ELI-213

INFORME: GUA DE TRABAJO N 1
ERRORES DE REDONDEO






Profesor: - Esteban Gil Sags
Integrantes: - Sebastin Flores Carrasco
- Carlos Vergara Branje
Fecha: 28/03/2014


Pregunta A: Para , sume n veces y compare su resultado con el valor real de la
suma. Cunto es el error relativo y a qu se debe?
Solucin:
El cdigo programado en MATLAB para este problema fue:

Lo que arroja los siguientes valores:



Se aprecia una diferencia del valor real de la multiplicacin de n veces pi con la suma de pi n veces
en las ltimas 4 cifras significativas, especficamente desde la cifra significativa 11.
Esto se debe a un error de redondeo al momento de hacer la sumatoria, ya que hay una
representacin limitada de nmeros en la memoria del computador, por lo que redondea el
nmero a la cantidad de dgitos de decimales que aguanta, en este caso, casi 16 decimales
(precisin double).
Esto significa un error relativo pequeo, del orden de 1e-10%.

Pregunta B: Repita el experimento anterior, pero sumando aproximado con precisin simple
(use la funcin single()). Compare con el resultado anterior.
Solucin:
El cdigo programado en MATLAB para este problema fue:


El resultado obtenido por esta simulacin es , lo que es un error
increblemente 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
clculo errores de redondeo, ya que como es un nmero infinito, la sumatoria se va
corrompiendo ms rpido que en el caso a).





Pregunta C: Disee un programa que permita graficar la evolucin del error relativo para el caso
A en la medida que se redondea con distinto nmero de cifras significativas (use la funcin
chop() y considere desde 1 a 20 cifras significativas). Cmo crece el error? Por qu se estabiliza
despus de cierto punto?
Solucin:
El cdigo en MATLAB programado para este problema fue:





Este cdigo arroja el siguiente grfico:

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 ms cifras significativas en la
sumatoria de , estabilizndose 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 nmero de cifras
significativas, se debe a que el hecho de considerar mas cifras significativas, el redondeo es ms
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 nmero irracional, y dada la capacidad del programa,
redondear siempre a alguna cifra.


0 2 4 6 8 10 12 14 16 18 20
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
Evolucin de error relativo
Nde cifras significativas
E
r
r
o
r

r
e
l
a
t
i
v
o

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.
Solucin:
El cdigo 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 nmero, al ser transformado a binario es


exacto, y no tiene perdidas por aproximacin ni truncamiento. Caso contrario ocurre con el
nmero , 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.


Pregunta E: Repita el experimento anterior usando precisin simple. Qu le dicen sus
resultados?
Solucin:
El cdigo 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


utilizacin de decimales en la sumatoria, y a la consecuente corrupcin de datos cuando la suma
se repite un milln de veces.


Pregunta F: Disee un programa que permita graficar la evolucin del error relativo para los
casos A, B, D y E en la medida que se aumenta el valor de n (aumntelo exponencialmente para
obtener un mayor rango). Establezca una relacin entre el error relativo y el valor de n, compare
sus resultados para los distintos casos, y justifique tericamente sus resultados.
Solucin:
El cdigo programado en MATLAB para este problema fue:












Finalmente se agrega el cdigo para que grafique el error relativo versus la cantidad de N, como se
muestra a continuacin:











Por lo tanto, analizando caso a caso, se tienen los siguientes resultados:
Observacin previa: de los grficos obtenidos en el matlab, el error relativo presenta "cadas" a
cero. Esto se debe a la aritmtica de punto flotante, dado que el nmero slo puede ser
representando exactamente cuando al expresarlo en fraccin el denominador es una potencia de
2. En esos casos el error da 0 porque la multiplicacin de da un nmero con 16 dgitos de
punto flotante , que vindolo como fraccin el denominador es una potencia de 2, por lo que da lo
mismo la sumatoria de .
Caso pregunta A:
Considerando un , la grfica arrojada por MATLAB es la siguiente:

Dejando de lado el efecto de las cadas del error a 0, la evolucin 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 ms veces el en la suma (nmero 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.
10
0
10
1
10
2
10
3
10
4
10
5
10
6
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
x 10
-9
Valor de N
E
r
r
o
r

r
e
l
a
t
i
v
o

%
Error relativo versus valor de N

Caso pregunta B:
Considerando un , la grfica arrojada por MATLAB es la siguiente:

Para este caso, el comportamiento de igual forma es exponencial, y se debe a la misma razn que
el caso anterior, en el cual redondeando ms veces el valor difiere mucho del real.
A diferencia del anterior, el error es mayor y crece mucho ms rpido, debido a que ac se est
aproximando con precisin simple, el cual considera menor cantidad de dgitos decimales, por lo
que el error de redondeo por cada vez que se suma es mucho mayor.





10
0
10
1
10
2
10
3
10
4
10
5
10
6
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Valor de N
E
r
r
o
r

r
e
l
a
t
i
v
o

%
Error relativo versus valor de N

Caso pregunta D:
Considerando un , las grficas arrojadas por MATLAB son las siguientes:


Para el grfico 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).

10
0
10
1
10
2
10
3
10
4
10
5
10
6
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Valor de N
E
r
r
o
r

r
e
l
a
t
i
v
o

%
Error relativo versus valor de N, caso 0.5


En cambio para el grfico del 0.1, este nmero se representa en potencia de 2 con una sumatoria
infinita de trminos, por lo que en binario, al operar con este nmero entran los errores de
redondeo y truncamiento (dem a la pregunta D).
De igual forma la evolucin 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.







10
0
10
1
10
2
10
3
10
4
10
5
10
6
0
0.2
0.4
0.6
0.8
1
1.2
1.4
x 10
-9
Valor de N
E
r
r
o
r

r
e
l
a
t
i
v
o

%
Error relativo versus valor de N, caso 0.1

Caso pregunta E:
Considerando un , las grficas arrojadas por MATLAB son las siguientes:

Al igual que en el caso anterior, el hecho de cambiarle la precisin 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 nmero real.
10
0
10
1
10
2
10
3
10
4
10
5
10
6
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Valor de N
E
r
r
o
r

r
e
l
a
t
i
v
o

%
Error relativo versus valor de N, caso 0.5


Como era de esperarse, la evolucin del error tambin debe darse de forma exponencial, ya que el
considerar ms veces el nmero 0.1, acumula errores de redondeo y truncamiento.
A diferencia del caso anterior de 0.1, el hecho de tener precisin simple, hace que el redondeo
haga la aproximacin ms inexacta, por lo que el error es mayor y crece ms rpido que con
precisin doble.







10
0
10
1
10
2
10
3
10
4
10
5
10
6
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Valor de N
E
r
r
o
r

r
e
l
a
t
i
v
o

%
Error relativo versus valor de N, caso 0.1

Pregunta G: Se sabe que la serie armnica

no converge cuando .
Programe una funcin para determinar el valor de y grafique sus resultados para distintos
valores de n. Por qu el resultado parece converger?
Solucin:
El cdigo programado en MATLAB para este problema fue:

Con esto podemos graficar la funcin para distintos valores, en este caso la graficaremos
entre los valores 1 y 100000.






Y el grfico que nos resulta es el siguiente:

La serie armnica se define como:


Esta serie, a simple vista parece converger, pero no es as, ya que esta es una serie armnica del
tipo:


Este tipo de series solo son convergentes cuando , por eso, aunque la serie parece que
disminuye su pendiente rpidamente, en realidad no lo hace tan rpido como para converger en
infinito. En MatLab si graficramos esta funcin hasta el infinito. probablemente en algn punto
convergera, ya que la precisin est determinada por el valor eps, sin embargo esto es por lmites
de la maquina, que no es capaz de procesar nmeros menores a eps.
0 1 2 3 4 5 6 7 8 9 10
x 10
4
0
2
4
6
8
10
12
14
Convergencia de la Serie Armonica
n
f

(
n
)

Pregunta H: Disee un programa que permita evaluar la precisin de su computador

, donde

es el nmero ms pequeo para el cual

. Compare su resultado con lo obtenido


usando la funcin eps() de MATLAB Qu conclusin prctica puede sacar a la hora de elaborar sus
propios programas?
Solucin:

Los resultados arrojados por MATLAB son:



Con lo que podemos concluir que el programa creado permite obtener la precisin exacta de
MATLAB, que es el valor eps de la consola. Donde eps devuelve la distancia desde 1 hasta el
siguiente numero con precisin doble, que es

.
Al hacer nuestros propios programas nos damos cuentas de las ventajas que tiene MATLAB al
analizar casos numricos, adems podemos darnos cuenta a la vez de las limitantes tcnicas de
este poderoso software, entender su rango ptimo de funcionamiento, y as en un futuro
entender problemas que tengamos con clculos de nmeros muy grandes de potencias, o muy
pequeos asociados a sensores de control.


Pregunta I: Considere una ecuacin cuadrtica de la forma

.
o Si

, las soluciones de la ecuacin son aproximadamente


o Si

, las soluciones de la ecuacin son aproximadamente


o Si

, las soluciones de la ecuacin son


aproximadamente


Usando la expresin

para obtener las soluciones en el computador, determine el error


relativo para cada caso y explique lo que sucede. Averige acerca de una forma alternativa para
determinar las soluciones que evite los problemas numricos y verifquela.
Solucin:
Primero creamos una funcin usando la expresin anterior

, llamada Raiz_3:

Luego utilizamos la funcin para obtener las soluciones con el mtodo de las races, el cdigo es el
mismo, solo cambia el valor de c y de las soluciones gua.







Para el primer caso tenemos:

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


Y los errores obtenidos fueron:








Para el segundo caso

Donde las soluciones exactas son:


Y los errores asociados son:









Para el tercer caso:

Donde las soluciones son:


Y los errores arrojados por MATLAB son:









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

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

dependiendo de qu solucin sacar.


Esta multiplicacin nos dara las siguientes expresiones para obtener las soluciones:


El hecho de que la raz este en el denominador, reduce el error por efecto de la "cancelacin
catastrfica", la cual se da cuando se restan nmeros muy parecidos, perdiendo cifras
significativas. Para este caso vendra a ser el

.
Una forma ms intuitiva de explicarlo es considerar que para la expresin

donde

es
un nmero muy grande y el producto de es muy pequeo, esa resta dentro de la raz omite
muchas cifras significativas, por lo tanto esa raz en s ya tiene un error asociado y el nmero es
muy parecido a .
Para comprobarlo en numricamente, se crea en MATLAB la funcin Raiz_3_alternativa:

cambiando el uso de la funcin por la nueva funcin en nuestro
cdigo original, se obtienen las siguientes soluciones y errores para cada caso:
1er caso:


Comparando con el resultado de la obtencin original, se invierte el error, en el sentido de que
tiene ms error ahora la solucin

, pero de todas formas, el error de las soluciones

como
conjunto es menor.
El error ms alto, en el caso de

no supera al ms alto del

original del caso 1.



2do caso:


Al igual que en el caso anterior, se invierte qu solucin tiene el error mximo, pero de todas
formas el error de amas soluciones viene a ser menor que con la obtencin original.

3er caso:


dem a los casos anteriores.

Con esto se comprueba que el mtodo de obtencin de races propuesto disminuye el error
relativo, con respecto a las soluciones "reales" de la gua.
Por lo tanto, por las razones explicadas anteriormente, la forma alternativa presentada es viable
numricamente.

Vous aimerez peut-être aussi