Mudanças entre as edições de "Map0151"
(→Representação em ponto flutuante) |
(→Números de máquina) |
||
Linha 100: | Linha 100: | ||
se o expoente de <math>\alpha</math> for maior que <math>M</math> não representamos o número. Senão tomamos sua mantissa e se o dígito <math>b_{d+1}\geq \beta/2</math> escolhemos | se o expoente de <math>\alpha</math> for maior que <math>M</math> não representamos o número. Senão tomamos sua mantissa e se o dígito <math>b_{d+1}\geq \beta/2</math> escolhemos | ||
o menor número de máquina maior que <math>\alpha</math> para representá-lo. No caso de <math>b_{d+1} <\beta/2</math> o representante será o maior número de máquina menor que <math>\alpha</math>. | o menor número de máquina maior que <math>\alpha</math> para representá-lo. No caso de <math>b_{d+1} <\beta/2</math> o representante será o maior número de máquina menor que <math>\alpha</math>. | ||
+ | |||
+ | Se denotarmos por <math> \underline{\alpha} </math> o truncamento do número <math>\alpha</math>, isto é, o maior número de máquina menor que <math>\alpha</math>. E | ||
+ | por <math>\overline{\alpha}</math> o menor número de máquina maior que <math>\alpha</math>. Temos que: | ||
+ | :<math>\overline{\alpha} - \underline{\alpha} = \beta^{e-D}</math> | ||
+ | Com isto temos uma avaliação do erro absoluto e erro relativo do arredondamento: | ||
+ | :<math>|\alpha -\operatorname{rd}(\alpha)| \leq \frac{\beta^{e-D}}{2}</math> | ||
+ | :<math>\frac{|\alpha -\operatorname{rd}(\alpha)|}{|\alpha|}\leq \frac{\beta^{-D}}{2}</math> |
Edição das 12h57min de 6 de março de 2013
Conteúdo[ocultar] |
Números no Computador
Muitos dos algoritmos de cálculo numérico, por uma questão prática, deverão ser executados numa máquina real. Nestas máquinas, no entanto, a capacidade de memória para representação dos números é finita. Vários números reais (infinitos, de fato) terão a mesma representação no computador (ou calculadora), daí originando-se os erros de arredondamentos. Vamos ver qual é a técnica usada atualmente para diminuir os erros de arredondamentos.
Representação de números inteiros numa base
Seja β>1 um número natural. Então podemos representar qualquer número inteiro k como a soma k=sgn(k)∗a0β0+⋯+asβs
Exemplo: 39=[100111]2
Representação de números fracionários e decimais numa base
Seja novamente β>1 um número natural.
Se x∈(0,1) então x=b1β+⋯+bkβk+⋯
Exemplo: 0.9=[0.1110011001100...]2
Uma função para colocar um número decimal na forma binária
In[1]: | # -*- coding: utf-8 -*- """ |
Representação em ponto flutuante
Consideramos uma base fixa β>1. Um número real α∈R positivo pode ser escrito nesta base como: α=[ak⋯a0.b1b2⋯]β
- O número m=[0.ak⋯a0b1b2⋯]β∈(0,1) chamado de mantissa.
- O número e=k+1 chamado de expoente
- O sinal do número σ
Esta representação do número α como σm×βe chamaremos de representação normal em ponto flutuante na base β. Em geral a base fica clara pelo contexto!
Números de máquina
Continuamos com a base fixa (β), mas na representação normal em ponto flutuante vamos admitir apenas números com a mantissa limitada a D dígitos e o expoente limitado, em módulo, por um número inteiro M. O conjunto M={[0.d1⋯dD]β×βe:|e|≤M}
Se denotarmos por α_ o truncamento do número α, isto é, o maior número de máquina menor que α. E por ¯α o menor número de máquina maior que α. Temos que: ¯α−α_=βe−D