Projeto I MS211
Funções
MS 211 - Cálculo Numérico - Turma C
Bruna Lourena Lazero Deçordi RA 076479
01) O algoritmo abaixo estima a precisão da máquina:
function precisao_maquina
A=1;
s=1+A; k=1; while s>1 A=A/2; s=1+A; k=k+1; end epsilon=A*2
>> precisao_maquina
epsilon =
2.2204e-016
>>
Acrescentando ao final do algoritmo a linha:
eps(epsilon)
O programa imprime:
>> precisao_maquina
epsilon =
2.2204e-016
ans =
4.9304e-032
>>
Utilizando a função "whos" (k A s epsilon), temos que a precisão de epsilon é dupla. Nota-se que ao implementarmos o algoritmo com a variável "eps(epsilon)" o valor encontrado é o dobro do anterior (2.2204e-016 -> 4.9304e-032).
b) Novamente pelo programa, quando colocamos a variável de iteração k, temos que seu valor é 54, ou seja, convergiu em 54 iterações até encontrar a solução. A relação deste número com a representação em aritmética em ponto flutuante da máquina é que quanto maior o número, maior a precisão. "k" é responsável pelo loop de interações a fim de encontrar a solução para o programa.
De acordo com a descrição do Matlab, através do auxílio “help”, “eps” é....
Descrição eps Matlab eps Spacing of floating point numbers. D = eps(X), is the positive distance from ABS(X) to the next larger in magnitude floating point number of the same precision as X. X may be either double precision or single precision. For all X, eps(X) is equal to eps(ABS(X)). eps, with no arguments, is the distance from 1.0 to the next larger double precision number, that is eps with no arguments returns 2^(-52). eps('double') is the same as eps, or eps(1.0). eps('single') is the same as eps(single(1.0)), or single(2^-23). Except for numbers whose absolute value is smaller than REALMIN, if 2^E <= ABS(X) < 2^(E+1), then eps(X) returns 2^(E-23) if ISA(X,'single') eps(X) returns 2^(E-52) if ISA(X,'double')
02)