top of page
Resolução da lista 1 

 

 

 

 

 

 

 

Em computadores e máquinas digitais, o formato de representação na forma digital de números reais recebe o nome de Ponto Flutuante. Nesse formato, cada número possui um espaço para armazenamento limitado. Sendo assim, é logico pensar que quanto maior o tamanho desse espaço, maior será a precisão do número digitalizado.

 

A capacidade de representação de cada máquina é diferente portanto os valores do menor/maior ponto flutuante variam.

 

Os Softwares MATLAB e SCILAB usam o padrão de precisão IEEE 754, atualmente o mais comum em computadores de uso pessoal com arquiteturas de processamento de 32 ou 64 bits. O sistema F de ponto  flutuante nesses softwares é dado por:

F=F( 2,53,-1021,1024)

 

No SCILAB, os comandos equivalentes aos “realmax” e “realmin” do MATLAB são, respectivamente:

number_properties("huge"), que retorna o valor: 1.79769313486231570D+308

number_properties("tiny"), que retorna o valor: 2.22507385850720138D-308

 

Um número positivo maior que “realmax” irá retornar uma mensagem de erro (overflow)  e será tratado como infinito. Já um número menor que “realmin” retornará uma mensagem de erro denominada underflow, ou será reconhecida como nulo.

 

No sistema de ponto flutuante, o valor de Eps é tal que x+y=x, se y<Eps, ou seja, x+Eps é o menor número no sistema de ponto flutuante F maior que x. Analiticamente Eps representa o menor valor infinitesimal entre dois pontos na reta (mensurável pela máquina no sistema F).

 

O valor predefinido de Eps no SCILAB é dado por:

%eps = 2^-52 = 2,220446D-16

 

 

 

Ex 2.

 

 

 

 

 

 

Quando fornecemos um número de entrada para um computador, geralmente o informamos na base decimal. A máquina, por sua vez, para a realização das operações necessárias, transforma-o em binário, e uma vez que o resultado é obtido transforma-o para a  forma decimal novamente. Esse processo de transformação de bases, pode carregar, ao longo das operações, uma série de erros.

A partir de um procedimento numérico, calcula-se o erro absoluto de uma medida. Ele representa o módulo da diferença entre o valor exato de um número x , e seu valor aproximado x’.

Já o erro relativo calculamos como sendo o erro absoluto, dividido pelo valor aproximado x’. Nesse caso,  é comum representarmos o resultado final como uma fração, que, ao ser multiplicada por 100, revela uma porcentagem. Ou seja, qual  o percentual de erro daquela medida.

Nesse exercício, no primeiro caso, trabalhamos com um x muito pequeno (da ordem de 10^-15). O erro absoluto e relativo deram  0,1102230.

No segundo caso, não houve erro absoluto e relativo. Isso pode ser explicado uma vez que  o valor de x é inteiro, facilitando a representação. Pode-se dizer que a máquina possui capacidade de armazenamento para todos os algarismos que representam x.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Código do MATLAB 

 

 

fprintf('Entre com o valor de x: \n');

x = input('x = ');

 

p = floor(((1+x)-1)/x)

pE = ((1+x)-1)/x

 

ErroAbs = abs(p - pE)

ErroRel = ErroAbs/abs(pE)

 

Command WIndow:

>> Ex2A [Para x muito pequeno]

Entre com o valor de x:

x = 1.e-15

 

p =

    0

 

pE =

   1.1102

 

ErroAbs =

   1.1102

 

ErroRel =

  Inf

-----------------------------------------------

>> Ex2A [Para x muito grande]

Entre com o valor de x:

x = 1.e+15

p =

    1

 

pE =

    1

ErroAbs =

    0

 

ErroRel =

    0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Para a resolução do exercício foi utilizado o programa MATLAB.

 

O comando usado para expandir as casas decimais para melhorar a precisão:

format long  

 

O código utilizado:

 

x = linspace (1-2*10^-8,1+2*10^-8,401)  // indica o intervalo, assim como as 401 divisões em pontos equidistantes

 

y=x.^7-7*x.^6+21*x.^5-35*x.^4+35*x.^3-21*x.^2+7*x-1  // indica a função dada

 

plot(x,y)  //simplesmente para a criação do gráfico 1:

 

Gráfico 1: plot da função y=x^7-7*x^6+21*x^5-35*x^4+35*x^3-21*x^2+7*x-1 no MATLAB




 

 

 

 

 

 

 

 

 

 

 

 

 

Durante a resolução foram encontrados alguns problemas com o “plot” do gráfico em que o programa apenas suportava 100 divisões em pontos equidistantes. O problema foi solucionado com a utilização do comando “clear” para todas as variáveis e a reimplementação do código.

 

O gráfico mostrou um comportamento oscilatório da função. Ele pode ser explicado devido aos erros de cancelamento de algarismos significativos. Trabalhamos com a soma de números muito próximos, apesar dos sinais opostos. O resultado, verifica-se dessa maneira, impreciso.

 

Para fins comparativos, plotou-se o mesmo gráfico no programa Excel, , porém este só permite a inclusão de 255 pontos por gráfico. Cientes dessa limitação, plotou-se apenas os 250 primeiros pontos do intervalo dado, a partir do valor mínimo (1-2E-8), obtendo-se um gráfico em barras com melhor visualização dos valores no eixo x, conforme o gráfico 2 a seguir:

 

 

 

Gráfico 2:  plot da função y=x^7-7*x^6+21*x^5-35*x^4+35*x^3-21*x^2+7*x-1 no Excel

 

© 2016 por Wix. Orgulhosamente criado com Wix.com

  • Facebook App Icon
  • Twitter App Icon
  • Google+ App Icon
bottom of page