Está en la página 1de 10

MAESTRA EN INVESTIGACIN E INNOVACIN DE TECNOLOGAS

DE LA INFORMACIN Y COMUNICACIN
LABORATORY 1: NUMERICAL AND DATA-INTENSIVE COMPUTING
(COURSE 2012/2013)
SYSTEM OF LINEAR EQUATIONS
PROFESOR: DR. CARLOS SANTACRUZ
Jos Luis Carrillo Medina
Cesar Naranjo Hidalgo

1. Ejercicios

1) En matemticas la propiedad asociativa de la suma hace que el orden en la
cual las operaciones se realizan no importa siempre y cuando la secuencia
de operaciones no cambie. Sin embargo esto no es verdadero cuando se
implementa en un computador, esto se debe a su representacin en punto
flotante. Un ejemplo donde el redondeo produce el error y no cumple la
propiedad asociativa de la es:

Consideremos la siguiente serie infinita


Diferentes resultados se obtienen, si la serie es sumada en orden
ascendente y descendente:

PROGRAMA
function y=seriepi(n)

format long;
j = 1;
while (j <= n)
auxAsc = 0;
auxDes = 0;
i = 1;
while (i <= j)
auxAsc = auxAsc + 1/i^4;
auxDes = auxDes + 1/(j-i+1)^4;
i = i + 1;
end
Res(j) = auxAsc - auxDes;
j = j + 1;
end
j=1:1:n;
plot (j,Res)

Cuando n = 10000, obtenemos


Preguntas:

a) Porque la propiedad asociativa no cumple?

En una computadora el almacenamiento de un nmero solo puede
hacerse con una cantidad finita de bits. Esta cantidad est
determinada por la mquina en la cual se har la representacin. El
nmero de bits generalmente se llama palabra y estas van desde
ocho bits hasta 64. Generalmente una palabra almacena un nmero,
sin embargo a veces es necesaria mas de una palabra para
almacenar ciertos nmeros.
Por ejemplo, si se quiere almacenar nmeros enteros en una palabra
de 16 bits, el primero de estos representa el signo del nmero (un
cero es signo ms y un uno un signo menos). Los 15 bits restantes
pueden usarse para guardar nmeros binarios de 0 a 32767 (2
15
-1).
Es decir una palabra de 16 bits puede contener un nmero cualquiera
entre -32768 a +32767.

Para nmero reales se emplea la representacin binaria llamada de
punto flotante: 0. d
1
d
2
d
3
d
4
d
5
d
6
d
7
d
8
x2
d
1
d
2
d
3
d

donde d
i
con i = 18 representan la mantisa, y d
j
con j= 1...7 la
caracterstica. El primer bit del exponente representa el signo de
este.

La propiedad asociativa no se cumple por lo anteriormente indicado
ya que los computadores representan los nmeros puntos flotantes
(con muchos decimales), por medio de aproximaciones, a travs del
redondeo y/o truncamiento que realiza, donde redondear un nmero
quiere decir reducir el nmero de cifras manteniendo un valor
parecido.

Los tipos de datos float y double tienen defectos cuando representan
resultados de ciertas operaciones aritmticas entre nmeros reales
con total precisin, en algunos casos solo son capaces de representar
aproximaciones a ellos ya que las operaciones se realizan en base
dos, al igual que nosotros que no podemos representar 1/3 con
nmeros en base diez con total exactitud, por lo que usarlos para
hacer ciertas operaciones aritmticas, as como acumularlas, puede
dar lugar a errores de redondeo y precisin en el resultado final, por
lo que usar este tipo de datos no son los ms adecuado para trabajar
en una aplicacin que calcule precios.
El error de redondeo es el que resulta de reemplazar un nmero por su
forma de punto flotante, es decir, por su representacin en una mquina
concreta.

b) Que orden es ms seguro? Porque?

Es ms seguro hacer los clculos en orden ascendente debido a que los
resultados iniciales parciales son los que aportan ms significativamente al
resultado y los errores de aproximacin no se ven reflejados tan
profundamente como los que se llevara acabo si se procesa el resultado en
orden descendente, es decir desde un inicio se puede empezar con
redondeos y/o truncamientos, por lo que requieren de una mejor
representacin.


c) Escriba una funcin llamada sumSeriesA.m con el nmero de trminos a
ser tomados en cuenta en el argumento. La salida de la funcin debera ser
la primera de n trminos sumados en orden ascend**ente. (Prototipo
function n= sumSeriesA(n)).

function n=sunSeriesA(nIter) %Calculo de la serie 1/i
4

%Orden Ascendente
format long; %Definir variables tipo entero
%largo
j = nIter;
while (i <= j)
auxAsc = auxAsc + 1/i^4; %Acumulador de sumas parciales
i = i + 1;
end

n = auxAsc;

d) Escriba la funcin llamada sumSeriesD.m pero en este caso sume los
trminos en orden descendente.

function n = sunSeriesD(nIter) %Calculo de la serie 1/i
4

%Orden Ascendente
format long; %Definir variables tipo entero
%largo
i = 1;
j = nIter;
while (i <= j)
auxDes = auxDes + 1/j^4; %Acumulador de sumas parciales
j = j - 1;
end

sumaD = auxDes:


e) Escriba un programa en matlab usando funciones para comparar los
resultados.

function y=sumSeriesPI(n) %Clculo de suma de la serie PI

format long;
j = 1;
auxAsc = 0;
auxDes = 0;

while (j <= n)
auxAsc = sumSeriesA(j); %Clculo en orden ascendente de la
%suma de la serie PI
auxDes = sumSeriesD(j); %Clculo en orden descendente de la
%suma de la serie PI
Res(j) = auxAsc - auxDes; %Diferencias entre clculos en
%orden ascendente y descendente
j = j + 1;
end
j=1:1:n;
plot (j,Res)




f) Encuentre el valor de n que se obtiene de diferentes resultados. Expliqu
porque se obtiene estos resultados.

No.
Iteraciones
Figura Observacin
100

La funcin:

Al comparar la serie calculada en
forma ascendente y descendente
se puede indicar que en el rango de
0 a 12, no habiendo errores de
redondeo, debido a que la
capacidad de representacin de
puntos flotantes de la memoria
contiene los valores generados.
A partir de 13, se produce un error,
debido a que la capacidad de
representacin de punto flotante del
computador no lo puede
representar y asigna valores
prximos, lo que produce errores
de redondeo o truncamiento,
inesperados.


500

Existen ruidos propios del sistema,
como que se trunca en el orden
ascendente y en descendente.
1000

Lo mismo que en el anterior caso
5000

Empieza la inestabilidad del
sistema en 3500
10000

Se puede indicar que el sistema es
aceptable hasta los 5000, en donde
las variabilidades son grandes
15000

A partir de 5000 se puede indicar
que el sistema no es estable, las
variabilidades son muy grandes

De lo anterior se puede indicar que de acuerdo a las graficas obtenidas se representa una
seal oscilatoria y las seales oscilatorias no cumplen con la propiedad asociativa.

Consejos:
a) Imprima los resultados con 20 dgitos significativos
b) Grafique las diferencias entre ambos valores obtenidos
c) Grafique los diferencias entre cada valor y el real

Para graficar las diferencias utilizamos la siguiente funcin:
function y=compararPIconsumSeriePI(n)

format long;
j = 1;
auxAsc = 0;
auxDes = 0;

while (j <= n)
ResAsc(j) = (pi^4/90)-sumSeriesA(j);
ResDes(j) = (pi^4/90)-sumSeriesD(j);
j = j + 1;
end

ResAsc(j-1)
ResDes(j-1)

j=1:1:n;
subplot(1,2,1);
plot (j,ResAsc);
subplot(1,2,2);
plot (j,ResDes);


(pi^4/90)-sumSeriesA(j); %Calculo del error en Orden Ascendente
%Error en 20 iteraciones 4.496830281475184e-007

(pi^4/90)-sumSeriesA(j); %Calculo del error en Orden Descendente
%Error en 20 iteraciones 4.496830279254738e-007
De estos grficos se puede indicar que el valor real con respecto a la serie
calculada tiende a converger hacia el infinito, es decir mientras ms
iteraciones converge la serie, tanto en orden ascendente como
descendente.
2) Analticamente las expresiones pueden no ser equivalentes cuando son
evaluadas en un computador. Como ejemplo de esta situacin.
Consideremos la ecuacin cuadrtica:


Donde las races de esta ecuacin estn dadas por la siguiente expresin
equivalente:



(1)



(2)

En estas ecuaciones la suma se hace delicada y se prueba el error de
redondeo cuando b>0 y sobre la condicin |ac| << b2.
Si cualquiera de los dos a o c son pequeos, entonces una de las races
implicara la resta de b a partir de una cantidad igual (El discriminante). El
correcto camino para calcular las races es:


(3)


Las races son:


Preguntas:

a) Muestre la equivalencia, entre los tres expresiones previas

Dada la solucin de un sistema de ecuacin cuadrtica (1):


Racionalizamos multiplicando el numerador y dividiendo para el mismo:


Multiplico por el conjugado

Aplico la ley distributiva
entre trminos

Hago la resta de terminos

De (1) obtenemos (2):


Para demostrar la siguiente equivalencia tenemos que la funcin signo de
un nmero real es sgn(x), (En MatLab es sign(x)).

Donde su dominio de definicin es R y su conjunto imagen es: {-1;0;1}.






Remplaz: por






b) Escriba la funcin cuadratic1.m, quadratic2.m y quadratic3.m con los
parmetros a, b y c como argumentos y las races usando diferentes
expresiones de salida.



function
[x1,x2]=cuadratic1(a,b,c)
d = sqrt(b*b - 4*a*c);
x1 = (-b + r)/(2 * a);
x2 = (-b - r)/(2 * a);

end

function
[x1,x2]=cuadratic2(a,b,c)
d = sqrt(b*b - 4*a*c);
x1 = (2 * c)/(-b - r);
x2 = (2 * c)/(-b + r);
end

function
[x1,x2]=cuadratic3(a,b,c)

d = sqrt(b*b - 4*a*c);
q = -1/2 * (b + sgn(b) * r);
x1 = c/q;
x2 = q/a;
end



c) Encuentre un ejemplo donde los resultados sean diferentes. Explique los
resultados.

Se realizo la prueba con datos arbitrarios para obtener las races de la ecuacin:
Ax
2
+ Bx + C

Probando los resultados con A = 1; B = 100; C = 10

>> probar(1,100,10)

EC:(1):

x1 =

-0.100100200501402
x2 =

-99.899899799498598

EC:(2):


y1 =

-0.100100200501404

y2 =

-99.899899799501242

EC:(3):



z1 =

-0.100100200501404

z2 =

-99.899899799498598


De los resultados obtenidos y pruebas realizadas se puede indicar que vasta que el coeficiente b sea
mucho mas grande que la multiplicacin de a * b se obtienen races desiguales.

d) Cul es el resultado correcto? y Porque?.

El resultado correcto es de la funcin cuadratic1, en la cual no existen
divisiones de cantidades muy pequeas, en las ecuaciones cuadratic2 y
cuadratic3 existen divisiones pequeas, adems si b
2
es mucho mayor que 4ac,
b
2
>> 4ac, por lo que la resta entre -b y la raz seria de nmeros casi iguales lo
que hara que el error tienda a cero.

También podría gustarte