Você está na página 1de 3

MS 211 - LISTA DE EXERCICIOS 1

ARITMETICA DE PONTO FLUTUANTE ERROS EM OPERAC OES NUMERICAS Ver ao/2013 1. Considere uma m aquina com sistema de representa c ao de n umeros denido por: base 10 ( = 10); 5 d gitos na mantissa sendo que um deles e usado para armazenar informa c ao do sinal; expoente no intervalo: [5; 5]. Pedese: a) qual o menor e o maior n umero em m odulo representado nesta m aquina? b) como ser a representado o n umero 23456 nesta m aquina se for usado o arredondamento? E se for usado o truncamento? c) Se a = 42450 e b = 3 qual o resultado de a + b se for usado o arredondamento? E se for usado o truncamento? Justique o resultado. d) Considerando ainda, a = 42450 e b = 3, qual o resultado da opera c ao: a+ 10 i=1 b, considerando que est a sendo realizado o truncamento? e) Repetir o item (d), para a opera c ao: 10 i=1 b + a. ab f ) Considere o c alculo de z = c onde a = 4 104 , b = 3 102 e c = 2 103 . Qual o resultado obtido no c alculo de z nas duas op c oes: i) calcula m = a b e em seguida obt em z = m/c; ii) calcula m = a/c e em seguida z = m b. Justique. 2. Avalie as express oes abaixo em um sistema de ponto utuante com cinco d gitos signicativos. Compute o erro relativo em cada opera c ao executada e no resultado nal. Identique qual a opera c ao contribuiu mais expressivamente para o erro nal. a) 72126 + 24.821 72160; b) 1 + 1.4 104 1; d) 25000 c) 10000 + 25000 n=1 0.4 + 10000. n=1 0.4; 3. Reorganize as express oes abaixo para amenizar poss veis erros de c aculo. Escolha valores para x que evidenciem os erros. a) x2 + 1 x; b) ln(x + 1) ln(x); c) 1 + x 1; d) (1 cos x)/ sin(x). 4. Considere a sequ encia de opera c oes, onde a = 4/3: b = a - 1; c = 3*b; f = 1 - c O resultado exato e f = 0. Por em, executando esta sequ encia de c alculos atrav es dos comandos do MatLab: (em precis ao simples) format long sa = single(4/3); sb = single(sa - 1); sc = 3*sb; sf = 1 - sc; (em precis ao dupla) format long da = 4/3; db = da - 1; dc = 3*db; df = 1 - dc; Obtemos: sf = -1.1920929e-007 e df = 2.220446049250313e-016. Justique estes resultados. 5. O objetivo e analisar o resultado de n umero grande de parcelas n e valores para 1 , para um n iguais a 0.11 e 0.5. Execute este programa no MatLab, ou na linguagem de sua prefer encia, com 1000 parcelas. Interprete e justique os resultados.

format long e cte = input(entre com valor para a constate--> ); np = 1000; soma = 0; for i = 1:np soma = soma + cte; end soma valexato = cte*np erro = valexato - soma 6. O objetivo e calcular o somat orio que envolve a adi c ao de cem mil parcelas iguais a 253 ao 100000 53 100000 53 n umero 1. Se (r1 = 1 + 1 2 ) e (r2 = 1 2 + 1), teoricamente devemos ter r1 = r2. Execute este programa no MatLab, ou o reescreva na linguagem de sua prefer encia, e justique os resultados obtidos comparando os valores r1 e r2: r1 = 1; r2 = 0; delta = 253 ; for j = 1:100000 r1 = r1 + delta; r2 = r2 + delta; end r2 = 1 + r2; disp(valor obtido para r1 = , r1) disp(valor obtido para r2 = , r2) 7. Precis ao da M aquina A precis ao da m aquina e denida como sendo o menor n umero positivo em aritm etica de ponto utuante, , tal que : (1 + ) > 1. O algoritmo abaixo estima a precis ao da m aquina : Passo 1 : A = 1 s=1+A k=1 Passo 2 : Enquanto s > 1, fa ca : A = A/2 s=1+A k =k+1 Passo 3 : Fa ca P rec = A 2 e imprimir P rec . a) Teste este algoritmo usando o MatLab ou uma linguagem de sua escolha. Trabalhe em precis ao simples e em precis ao dupla. O MatLab trabalha sempre em precis ao dupla. Uma forma de trabalhar em precis ao simples e declarar as vari aveis como single. Exemplo: A = single(1); s = single(1 + A); k = 1; while (s > 1) A = A/2; s = 1+A; k = k+1; 2

end prec = A*2; Compare os valores obtidos com o valor obtido ao se dar o comando eps do MatLab ou o comando $MachineEpsilon do Mathematica. b) Interprete o passo 3 do algoritmo, isto e, por que a aproxima c ao para Prec e escolhida como sendo o dobro do u ltimo valor de A obtido no passo 2? c) O valor nal de k representa o n umero de itera c oes necess arias at e que a condi c ao do while se verique. Qual foi este n umero quando o programa foi executado em precis ao simples? E em precis ao dupla? Este n umero est a relacionado com o n umero de d gitos na mantissa em cada representa c ao? Justique. d) Na deni c ao de precis ao da m aquina, usamos como refer encia o n umero 1. No algoritmo abaixo a vari avel e um dado de entrada, escolhido pelo usu ario: Passo 1 : A = 1 s = + A; Passo 2 : Enquanto s > , fa ca : A = A/2 s=+A Passo 3 : Fa ca P rec = A 2 e imprimir P rec . d.1) Teste seu programa atribuindo para valores distintos. Por exemplo, pot encias p de 10, p = . . . , 4, 3, 2, 1, 0, 1, 2, 3, . . .. Para cada valor de execute seu programa em precis ao simples e dupla. d.2) Para cada valor de imprima o valor correspondente obtido para Prec e o n umero k de itera c oes realizadas. Justique por que Prec se altera quando e modicado. E o n umero de itera c oes k se altera ou e aproximadamente o mesmo em todos os testes? Justique estes resultados. 8. C alculo de exp(x): O objetivo e calcular exp(x) pela f ormula de Taylor em torno de zero: x2 x3 x4 exp(x) 1 + x + 2! + 3! + 4! + . . . . . . a) Escreva um programa para o c alculo de exp(x) calculando cada termo da s erie atrav es de: j termo = x /f j onde f j = j ! (fatorial de j ) calculado da forma: f j = 1 2 3 . . . . . . j . Observe a ocorr encia de overow! b) O procedimento abaixo, obt em uma aproxima c ao para exp(1): termo = 1; x = 1; s = 1; k = 1; while . . . . . . . . . termo =termo*(x/k); s = s + termo; k = k + 1; end Realizando os c alculos desta forma, evitase o overow no c alculo do fatorial e a s erie pode ser calculada com tantos termos quanto se queira. Qual seria um crit erio de parada para se interromper o c alculo da s erie? c) Teste este algoritmo (no MatLab ou Mathematica, ou na linguagem de sua escolha) com v arios valores para x: positivos, negativos, (x 0 e x distante de zero) e, para cada valor de x, imprima o n umero de itera c oes k para que o crit erio de parada seja vericado. Analise os resultados obtidos.

Você também pode gostar