Mudanças entre as edições de "Map0151"
(→Uma função para colocar um número decimal na forma binária) |
(→Representação em ponto flutuante) |
||
Linha 91: | Linha 91: | ||
Esta representação do número <math>\alpha </math> como <math>\sigma m \times \beta^e</math> chamaremos de '''representação normal em ponto flutuante''' na base <math>\beta</math>. | Esta representação do número <math>\alpha </math> como <math>\sigma m \times \beta^e</math> chamaremos de '''representação normal em ponto flutuante''' na base <math>\beta</math>. | ||
Em geral a base fica clara pelo contexto! | Em geral a base fica clara pelo contexto! | ||
+ | |||
+ | ==== Números de máquina ==== | ||
+ | Continuamos com a base fixa (<math>\beta</math>), mas na representação normal em ponto flutuante vamos admitir apenas números com a mantissa limitada a <math> D </math> dígitos e | ||
+ | o expoente limitado, em módulo, por um número inteiro <math> M </math>. O conjunto | ||
+ | :<math> \mathbf{M} = \left\{ [0.d_1\cdots d_D]_{\beta}\times \beta^e: |e| \leq M \right\}</math> | ||
+ | é um conjunto de números de máquina definido pelos números <math>(\beta, D, M) </math>. Este é um conjunto finito com <math>(\beta-1)(\beta^{(D-1)})(2M+1) </math> elementos. | ||
+ | Vamos agora definir a função arredondamento, que é uma função sobrejetora <math>\operatorname{rd}: \mathbb{R} \to \mathbf{M} </math>. Seja <math>\alpha</math> um número real; | ||
+ | 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>. |
Edição das 23h05min de 2 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}