Buscar

Aula 01 - 13abr2021

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Cálculo Numérico
Aula 01 - 13/abr/2021
Wilson H. Hirota
Universidade Federal de São Paulo
wilson.hirota@unifesp.br
Objetivos
• Gerais
◦ Introduzir os métodos clássicos utilizados na resolução numérica de problemas
matemáticos aplicados à Engenharia e Ciências
• Espećıficos
◦ Capacitar os alunos a implementar computacionalmente os métodos numéricos
clássicos
◦ Capacitar o aluno a:
• Obter a solução de sistemas de equações algébricas lineares
• Obter as ráızes de uma equação algébrica não linear
• Fazer o ajuste de curvas a dados experimentais
• Aplicar os métodos de interpolação e integração numérica e estimar os
erros associados.
• Metodologia
◦ Aulas teóricas expositivas e aulas práticas com resolução de exerćıcios em
computador (Scilab)
2 / 80
Bibliografia
• Burden, R. L.; Faires, J. D. Análise Numérica. São Paulo, SP: Cengage Learning,
2008.
• Burian, R.; Lima, A. C. Cálculo Numérico. Editora LTC, 2007
• Chapra, S. C.; Canale, R. P. Métodos Numéricos para Engenharia. 5o ed. São
Paulo: McGraw-Hill, 2008
• Franco, N. M. B. Cálculo Numérico. Editora Pearson Prentice Hall, 2007
• Ruggiero, M. A. G.; Lopes, V. L. R. Cálculo Numérico - Aspectos Teóricos e
Computacionais. 2o ed. Editora Makron Books do Brasil, 1996
• Sperandio, D.; Mendes, J. T.; Monken e Silva, L. H. Cálculo Numérico:
Caracteŕısticas Matemáticas e Computacionais dos Métodos Numéricos. Editora
Prentice-Hall, 2003
• Cunha, M. Cristina C. Métodos Numéricos. Editora Unicamp, 2009
• Arenales, S.; Darezzo, A. Cálculo Numérico: Aprendizagem com apoio de
software. Editora Thomson Learning, 2008
• Asano, C. H.; Colli, E. Cálculo Numérico: Fundamentos e Aplicações. São Paulo:
USP, 2009
(<https://www.ime.usp.br/˜asano/LivroNumerico/LivroNumerico.pdf>)
3 / 80
https://www.ime.usp.br/~asano/LivroNumerico/LivroNumerico.pdf
Computação Numérica
• Introdução/Motivações
◦ Durante o projeto e a operação de um processo, os engenheiros qúımicos
frequentemente se deparam com diversos desafios:
• Qual estratégia usar para controlar a pressão de topo de uma coluna
debutanizadora?
• Quais variáveis (controladas e manipuladas) devem ser selecionadas para a
implementação de um controlador preditivo multivariado?
• Ao mudar as condições da planta de gás, quanto tempo será necessário para
o processo atingir o regime permanente?
• Qual a perda de gás em uma linha de transporte de gás?
• Qual a energia mı́nima requerida para o processo de compressão de
propeno?
O que todas essas perguntas têm em comum?
4 / 80
Computação Numérica
• Introdução/Motivações
O que todas essas perguntas têm em comum?
◦ Requerem muitas informações preliminares
◦ Requerem a realização de diversos cálculos complexos
◦ São inviáveis de serem calculadas manualmente
◦ A precisão dos resultados requer rigor termodinâmico
◦ Uma pergunta pode ser consequência de outra
◦ Podem ser respondidas com o aux́ılio da
Modelagem Matemática e Simulação de Processos
5 / 80
Computação Numérica
• Introdução/Motivações
◦ A utilização de simuladores matemáticos ou numéricos requer a execução de
uma sequência de etapas bem definidas
◦ Em Engenharia, assim como em qualquer área do conhecimento cient́ıfico, a
resolução de um problema passa inicialmente por uma fase de observação e
entendimento dos fenômenos f́ısicos e qúımicos envolvidos no problema em
questão, a fim de construir um modelo matemático que represente, com a maior
fidelidade posśıvel, o problema que desejamos tratar.
◦ O que é um modelo matemático?
• Um modelo matemático nada mais é do que uma abstração matemática de
um processo/fenômeno real (Seborg; Edgar; Mellichamp, 20101)
• Exemplo: Equação geral de conservação microscópica
∂
∂t
(ρϕ) +∇ · (ρvϕ) = ˙σVφ −∇ · jφ
1
Seborg, D. E.; Edgar, T. F.; Mellichamp, D. A. Process Dynamics and Control. [S.l.]: John Wiley & Sons,
2010
6 / 80
Computação Numérica
• Introdução/Motivações
◦ Uma vez estabelecidas as equações que descrevem o processo, o passo seguinte
será resolvê-las
Infelizmente, grande parte dos modelos em Engenharia Qúımica não tem so-
lução anaĺıtica. Portanto, a computação e os métodos numéricos têm atuado
como importantes ferramentas para a obtenção de soluções aproximadas
de tais problemas
◦ Por outro lado, quando optamos pela resolução computacional e numérica de um
modelo, introduzimos uma série de erros e incertezas decorrentes,
principalmente:
• da precisão dos dados de entrada;
• de erros na fase de modelagem;
• da capacidade limitada do hardware em armazenar números em ponto
flutuante ;
• das operações numéricas provenientes de um algoritmo numérico
7 / 80
Computação Numérica
• Introdução/Motivações
◦ Os dados de entrada contêm uma imprecisão inerente (i.e. não há como evitar
que ocorram), uma vez que representam medidas obtidas através de sensores e
equipamentos anaĺıticos
◦ A influência destas perturbações no resultado final vai depender da
estabilidade do problema
Em algumas situações, conhecidas como problemas malcondicionados, a in-
fluência dessas pertubações pode ser desastrosa e inviabilizar completa-
mente as soluções numéricas.
Neste caso, são necessárias técnicas especializadas, objeto de uma área da
matemática conhecida como Problemas Inversos
◦ Os erros na fase de modelagem são os erros decorrentes de simplificações
(hipóteses simplificadoras). O principal objetivo das hipóteses simplificadoras é
desenvolver um modelo matemático que tenha condições de ser tratado com as
ferramentas matemáticas dispońıveis e que demande um tempo computacional
razoável
8 / 80
Computação Numérica
• Introdução/Motivações
◦ Os erros associados tanto aos cálculos quanto às medidas podem ser
caracterizados com relação a sua acurácia e precisão
• Acurácia (ou exatidão): se refere a quão próximo o valor calculado ou
medido está próximo do valor verdeiro
• Precisão: se refere a quão próximos os valores individuais calculados ou
medidos estão uns dos outros
◦ O conjunto de todas essas incertezas e erros certamente vai ”contaminar”o
resultado final
◦ Se esta contaminação é despreźıvel, ou se ela compromete o resultado, é uma
análise necessária para que tenhamos resultados realistas
◦ Assim, é necessário que tenhamos algum controle e conhecimento sobre os
erros que foram sendo introduzidos, e como eles se propagam durante a
resolução numérica dos modelos matemáticos
◦ Portanto, o objetivo desta seção introdutória é apresentar os principais erros
que podem surgir durante a fase de resolução numérica de um problema:
• Erros de arredondamento
• Erros de truncamento
9 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ A partir do momento em que se calcula um resultado aproximado, é preciso
saber como estimar ou delimitar o erro cometido na aproximação
◦ A delimitação do erro é sempre desejável, pois com ela tem-se um valor em que
o erro cometido seguramente é inferior a um limite
◦ Portanto, uma questão central em computação numérica é a quantificação dos
erros cometidos durante a solução numérica de um dado problema. Para tanto,
precisamos definir medidas de erros. As medidas de erro mais utilizados são:
• Erro absoluto
• Erro relativo
Definição: Erro absoluto
Seja x uma aproximação do valor exato x∗, o erro absoluto da aproximação x̄
é definido como:
Eabs = |x∗ − x̄ |
10 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
Definição: Erro absoluto
Seja x uma aproximação do valor exato x∗, o erro absoluto da aproximação x̄
é definido como:
Eabs = |x∗ − x̄ |
◦ Um defeito da definição de erro absoluto é que esta definição não leva em conta
a ordem de grandeza dos valores envolvidos
• Por exemplo: um erro absoluto de 5kgf /cm2 na leitura de uma pressão de
2500kgf /cm2representa uma boa acurácia, enquanto que o mesmo erro na
medida de uma pressão de 20kgf /cm2 representa uma baixa acurácia
◦ Então, dependendo da ordem de grandeza dos números envolvidos, o erro
absoluto não é suficiente para descrever a precisão de um cálculo.
◦ Por esta razão, o erro relativo Erel é amplamente empregado
11 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
Definição: Erro relativo
Seja x uma aproximação do valor exato x∗, o erro relativo da aproximação x̄ é defi-
nido como:
Erel =
∣∣∣∣Eabsx∗
∣∣∣∣ = ∣∣∣∣ x∗ − x̄x∗
∣∣∣∣
◦ Observe que o erro relativo é adimensional e, muitas vezes, é expresso em
porcentagens. Mais precisamente, o erro relativo em porcentagem da
aproximação x̄ é dado por:
Erel(%) =
∣∣∣∣ x∗ − x̄x∗
∣∣∣∣× 100%
12 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Por exemplo:
a. Considere o valor exato x∗ = 2345.713 e o valor aproximado x̄ = 2345.000,
então:
Eabs = 0.713 e Erel = 0.00030396
b. Considere agora o valor exato x∗ = 1.713 e o valor aproximado x̄ = 1.000.
Neste caso temos:
Eabs = 0.713 e Erel = 0.416229
◦ Observe que nos dois exemplos o erro absoluto é o mesmo, embora o erro
cometido pela aproximação seja muito mais significativo no exemplo (b), pois,
em (a), o erro relativo é da ordem de 0.03%, e em (b), é da ordem de 41.6%
13 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Observe que nas duas definições anteriores, os erros são calculados em relação
ao valor verdadeiro
◦ Entretanto, na maioria dos casos o valor exato (x∗) não é conhecido a priori
◦ Assim, é necessário trabalhar com um limitante superior (�), ou majorante, que
satisfaça a condição:
|x∗ − x̄ | ≤ �
onde � é um limitante conhecido como erro máximo absoluto
◦ Da desigualdade anterior pode-se concluir que o valor exato pertence ao
intervalo :
−� ≤ x∗ − x̄ ≤ � =⇒ x̄ − � ≤ x∗ ≤ x̄ + �
isto é, x̄ é o valor aproximado da grandeza x∗ com erro absoluto não superior a
�.
14 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
Portanto, em termos práticos, o erro é calculado usando-se a melhor estima-
tiva dispońıvel do valor verdadeiro, uma vez que nos procedimentos numéricos
geramos uma sequência de soluções aproximadas que convergem ou não para a
solução do problema
◦ Então, o erro absoluto aproximado (�a ) e o erro relativo aproximado (δr ) serão
calculados da seguinte forma:
• Erro absoluto: �a =
∣∣∣x̄k+1 − x̄k ∣∣∣
• Erro relativo: δr =
∣∣∣∣ x̄k+1 − x̄kx̄k+1
∣∣∣∣
◦ Os cálculos (as iterações) são repetidos até que:
|�a | ≤ � ou |δr | ≤ �
ou seja, os erros absolutos e relativos são usados como critério de parada nesta
sequência de aproximações
15 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Se a relação |�a | ≤ � (ou |δr | ≤ �) for válida, supõe-se que x̄k+1 é a solução do
problema dentro de uma tolerância � pré-estabelecida; caso contrário devemos
proceder ao cálculo de outro termo da sequência
◦ Exemplo 01: Para resolver a equação do tipo f (x) = x2 − a = 0, com a > 0,
podemos utilizar o seguinte processo iterativo:
r0 = x0
rk+1 =
1
2
(
rk +
a
rk
)
, k = 0, 1, 2, . . .
Suponha que a = 2 e x0 = 1 (chute inicial), então:
k rk rk+1 |rk+1 − rk |
∣∣∣ rk+1−rkrk+1 ∣∣∣
0 1 1.5 0.5 0.333333
1 1.5 1.416667 0.08333 0.058824
2 1.416667 1.414216 0.002451 0.001733
...
...
...
...
...
16 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Exemplo 01:
• Assim, dado um valor inicial arbitrário x0, podemos através da expressão
anterior, gerar uma sequência soluções aproximadas r1, r2, r3, . . .
• Dado que a propriedade de convergência da sequência de aproximações
esteja estabelecida e uma tolerência pré-fixada � esteja definida para o
cálculo de uma raiz da equação f (x) = 0, podemos verificar de forma
absoluta, se a sequência de aproximações atingiu a precisão anterior �,
realizando o seguinte teste:
• Se |rk+1 − rk | ≤ � for verdadeiro, dizemos que rk+1 é raiz da equação
f (x) = 0 com tolerância �; caso contrário, devemos calcular outro
elemento da sequência e, de forma relativa, realizar o seguinte teste:
• Se
∣∣∣ rk+1−rkrk+1 ∣∣∣ ≤ � for verdadeiro, concluimos que rk+1 é a raiz da
equação com tolerância � e, em caso contrário, devemos proceder ao
cálculo de outro termo da sequência
17 / 80
Computação Numérica
• 1. Erro absoluto e Erro relativo
◦ Exemplo 01: Para resolver a equação do tipo f (x) = x2 − a = 0, com a > 0,
podemos utilizar o seguinte processo iterativo:
r0 = x0
rk+1 =
1
2
(
rk +
a
rk
)
, k = 0, 1, 2, . . .
Suponha que a = 2 e x0 = 1 (chute inicial), então:
k rk rk+1 |rk+1 − rk |
∣∣∣ rk+1−rkrk+1 ∣∣∣
0 1 1.5 0.5 0.333333
1 1.5 1.416667 0.08333 0.058824
2 1.416667 1.414216 0.002451 0.001733
...
...
...
...
...
• Observe que não é posśıvel obter o valor exato da
√
2, pois se trata de um
número irracional
• Portanto, também é conveniente relacionar os erros ao número de
algarismos significativos da aproximação
18 / 80
Computação Numérica
• 2. Algarismos significativos
O conceito de algarismos significativos foi desenvolvido para designar formalmente a
confiabilidade de um valor numérico, isto é, os algarismos significativos de um número
são aqueles que podem ser usados com confiança
Algarismos significativosAlgarismos significativos
◦ Por exemplo:
• O valor aproximado π̄ = 3.14 para π = 3.1415926535 . . . tem 3 algarismos
significativos
• O valor aproximado 0.3333 para 1/3 = 0.33333333 . . . tem 4 algarismos
significativos
• O valor aproximado 0.0067 para e−5 = 0.006737946999 . . . tem 2
algarismos significativos
19 / 80
Computação Numérica
• 2. Algarismos significativos
◦ Embora a avaliação dos algarismos significativos de um número seja um
procedimento imediato, alguns casos podem gerar confusão
• Por exemplo, zeros não são sempre algarismos significativos porque eles
podem ser necessários apenas para localizar a v́ırgula decimal
• Os números 0.00001845, 0.0001845 e 0.001845 têm quatro algarismos
siginficativos
• Em 001234.56 tem 6 algarismos significativos, pois os dois zeros à
esquerda não são significativos
• Analogamente, quando zeros à direita são usados em números grandes, não
é claro quantos, ou se algum, destes zeros são significativos
• O valor 45300 pode ter três, quatro ou cinco algarismos significativos,
dependendo de os zeros serem conhecidos com confiança
• Tais incertezas podem ser resolvidas usando-se a notação cient́ıfica, onde
4.53× 104, 4.530× 104 e 4.5300× 104 designam que o número é conhecido
com três, quatro ou cinco algarismos significativos, respectivamente
20 / 80
Computação Numérica
• 2. Algarismos significativos
◦ Ao efetuar operações aritméticas com números em ponto flutuante também é
necessário seguir algumas regras para a apresentação dos resultados:
• Adição e Subtração: Quando somamos ou subtráımos dois números com
quantidade de algarismos significativos diferentes, o resultado deve manter
a precisão do operando de menor precisão (i.e. deverá ter o mesmo número
de casas decimais do operando de menor precisão)
• Por exemplo:
• Vamos supor que se queira efetuar o operação 15.67 + 0.1278
• O número 15.67 tem 4 algarismos siginficativos e o último algarismo
significativo é o 7, que ocupa a casa dos centésimos.
• O número 0.1278 também possui 4 algarismos significativos, porém o
último algarismo significativo, o número 8, ocupa a casa dos milésimos
• Portanto, o último algarismo significativo do resultado deve estar na
casa dos centésimos, ou seja: 15.67 + 0.1278 = 15.7978 que,
arredondado, fica 15.80
21 / 80
Computação Numérica
• 2. Algarismos significativos
◦ Ao efetuar operações aritméticas com números em ponto flutuante também é
necessário seguir algumas regras para a apresentação dos resultados:
• Multiplicação e divisão: Quando multiplicamosou dividimos dois números
com quantidade de algarismos significativos diferentes, o resultado deve ter
o mesmo número de algarismos significativos do operando com o menor
número de algarismos significativos.
• Por exemplo:
• Na operação 7.2569/4 o dividendo tem 5 algarismos significativos e o
divisor apenas 1 algarismo significativo.
• Portanto, o resultado também deve ter apenas uma algarismo
significativo, ou seja, 7.2569/4 = 1.81423 que, arredondado, é igual a 2
• Analisando os dois exemplos anteriores, é fácil concluir que haverá um
acúmulo de erros de arredondamento se um grande número de operações
aritméticas for efetuado para resolver um determinado problema
22 / 80
Computação Numérica
• 2. Algarismos significativos
◦ Neste sentido, o conceito de algarismos significativos tem duas implicações
importantes:
1. Como os métodos numéricos fornecem resultados aproximados, é necessário
especificar a quantidade de algarismos significativos de uma aproximação
considerada aceitável
• De uma forma geral, podemos estabelecer a seguinte definição
Diz-se que o número x̄ se aproxima do valor x∗ com n algarismos significativos
corretos se n for o maior inteiro não-negativo para o qual2:∣∣∣∣ x∗ − x̄x∗
∣∣∣∣ ≤ 0.5× 10−n
2
Não existe uma definição única na literatura para o conceito de algarismos significativos corretos.
Embora não sejam equivalentes, todas elas transmitem a mesma idéia.
23 / 80
Computação Numérica
• 2. Algarismos significativos
Diz-se que o número x̄ se aproxima do valor x∗ com n algarismos significa-
tivos corretos se n for o maior inteiro não-negativo para o qual:∣∣∣∣ x∗ − x̄x∗
∣∣∣∣ ≤ 0.5× 10−n
◦ Exemplo 02: Em matemática, as funções, em geral, podem ser representadas
por séries infinitas. Por exemplo, a função exponencial pode ser calculada
usando-se a expansão em série de Maclaurin:
ex =
∞∑
i=0
= 1 + x +
x2
2!
+
x3
3!
+ . . .+
xk
k !
+ . . .
Utilizar a expansão em série fornecida acima para calcular um valor
aproximado de e0.5 com pelo menos três algarismos significativos corretos
24 / 80
Computação Numérica
• 2. Algarismos significativos
Diz-se que o número x̄ se aproxima do valor x∗ com n algarismos significa-
tivos corretos se n for o maior inteiro não-negativo para o qual:∣∣∣∣ x∗ − x̄x∗
∣∣∣∣ ≤ 0.5× 10−n
◦ Exemplo 02:
• Algoritmo:
• Começando com ex = 1, some um termo de cada vez para estimar o
valor de e0.5
• Em seguida, calcule o erro relativo e o erro relativo aproximado (δr ).
Observe que o valor verdadeiro é e0.5 = 1.648721 . . .
• Repita o processo até que o erro relativo aproximado atenda o critério
de erro que garanta três algarismos significativos corretos, ou seja:
δr ≤ 0.5× 10−n = 0.5× 10−3 =⇒ δr ≤ 0.0005 ou δr ≤ 0.05%
25 / 80
Computação Numérica
• 2. Algarismos significativos
Diz-se que o número x̄ se aproxima do valor x∗ com n algarismos significa-
tivos corretos se n for o maior inteiro não-negativo para o qual:∣∣∣∣ x∗ − x̄x∗
∣∣∣∣ ≤ 0.5× 10−n
◦ Exemplo 02:
k e0.5k Erel(%)
a δr (%)b
1 1 39.3
2 1.5 9.02 33.3
3 1.625 1.44 7.69
4 1.645833333 0.175 1.27
5 1.648437500 0.0172 0.158
6 1.648697917 0.00142 0.0158
a
Erro relativo verdadeiro
b
Erro relativo aproximado
Observe que, em vez
de três algarismos sig-
nificativos, o resul-
tado é exato até o
quinto algarismo sig-
nificativo.
26 / 80
Computação Numérica
• 2. Algarismos significativos
◦ Neste sentido, o conceito de algarismos significativos tem duas implicações
importantes:
2. Em computação como cada número tem apenas um número fixo e finito de
algarismos, números como π ou
√
5 jamais poderão ser representados
exatamente. Além disso, o sistema binário (representação numérica
normalmente utilizada pelos computadores) pode não representar
precisamente certos números exatos na base 10
A omissão dos algarismos significativos remanescentes é chamada de erro de
arredondamento
O erros numéricos de arredondamento estão diretamente relacionados à ma-
neira como os números são armazenados no computador.
Estes erros surgem devido ao fato de algumas propriedades básicas da aritmé-
tica real não valerem quando executadas no computador, pois, enquanto na
matemática alguns números são representados por infinitos algarismos, na má-
quina isso não é posśıvel, tendo em vista que a memória da máquina é finita.
27 / 80
Computação Numérica
• 2. Algarismos significativos
O erros numéricos de arredondamento estão diretamente relacionados à
maneira como os números são armazenados no computador.
Estes erros surgem devido ao fato de algumas propriedades básicas da arit-
mética real não valerem quando executadas no computador, pois, enquanto
na matemática alguns números são representados por infinitos algarismos,
na máquina isso não é posśıvel, tendo em vista que a memória da máquina
é finita.
◦ Dessa forma, os erros de arredondamento dependem de como os números são
representados na máquina, e a representação, por sua vez, depende da base em
que são escritos os números e a quantidade máxima de d́ıgitos usados nessa
representação
◦ Portanto, para melhor enteder como ocorre o erro de arredondamento, é
importante conhecer os diferentes sistemas de numeração e como os números são
armazenados em um computador
28 / 80
Computação Numérica
• 3. Sistema de numeração posicional
Um sistema de numeração (ou sistema numérico) define como um número
pode ser representado utilizando diferentes bases.
Por exemplo: Os números (2A)16 e (52)8 referem-se à mesma quantidade,
(42)10, mas suas representações são diferentes. Isso é o mesmo que utilizar
as palavras cheval e horse para se referir à mesma entidade, um cavalo.
◦ Diversos sistemas de numeração foram utilizados no passado, e podem ser
classificados em dois grupos: sistemas posicionais e sistemas não posicionais
◦ Nesta secão, o objetivo é discutir os sistema de numeração posicional, uma vez
que é o sistema atualmente utilizado.
29 / 80
Computação Numérica
• 3. Sistema de numeração posicional
Em um sistema de numeração posicional, a posição que um śımbolo (d́ıgito)
ocupa no número determina o valor que ela representa
◦ De um modo geral, um número x real na base β é representado por:
x = ± (dk−1 . . . d2d1d0 · d−1d−2 . . . d−l )β
ou na forma polinomial (representação em ponto fixo)
x = ± dk−1 × βk−1 + . . .+ d1 × β1 + d0 × β0︸ ︷︷ ︸
parte inteira
+
parte fracionária︷ ︸︸ ︷
d−1 × β−1 + d−2 × β−2 + . . .+ d−l × β−l
onde d é o conjunto de śımbolos (algarismos do número), k é o número de digitos da
parte inteira, l é o número de d́ıgitos da parte fracionária e β é a base. O sinal ±
mostra que o número pode ser positivo ou negativo.
30 / 80
Computação Numérica
• 3. Sistema de numeração posicional
◦ Exemplo 03: A seguir, os valores posicionais para o número inteiro 224, no
sistema decimal
102 101 100 valor posicional
2 2 4 número
x = + 2× 102 + 2× 101 + 4× 100 valor
◦ Exemplo 04: A seguir, veja os valores posicionais para o número real +24.13
101 100 10−1 10−2 valor posicional
2 4 • 1 3 número
x = + 2× 10 + 4× 1 + 1× 0.1 + 3× 0.01 valor
31 / 80
Computação Numérica
• 3. Sistema de numeração posicional
◦ Um sistema de numeração é determinado fundamentalmente pela base, que
indica a quantidade de śımbolos e o valor de cada śımbolo
◦ De um modo geral, podemos dizer que as bases numéricas mais importantes
em computação são:
• Base decimal: neste sistema, a base é igual a 10, e utilizamos 10 śımbolos
para representar um número d = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
• Base binária: neste sistema, a base é igual a 2, e utilizamos somente dois
śımbolos para representar uma número d = {0, 1}
• Base octal: neste sistema, a base é igual a 8, e utilizamos oito śımbolos para
representar um número d = {0, 1, 2, 3, 4, 5, 6, 7}
• Base hexadecimal: neste sistema, a base é igual a 16, e utilizamos 16
śımbolospara representar um número
d = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,A,B ,C ,D ,E ,F}
32 / 80
Computação Numérica
• 3. Sistema de numeração posicional
◦ Apesar do sistema decimal (base 10) ser mais familiar a um ser humano,
normalmente um computador opera no sistema binário, pois um computador é
composto de chaves eletrônicas que podem ficar em apenas dois estados, ligado
e desligado
◦ Portanto, para representar diferentes tipos de dados, utilizamos um padrão
binário3, uma sequência, ou como às vezes é chamado, uma cadeia de bits4.
Historicamente, um padrão binário de 8 bits é chamado de byte
◦ Por exemplo, a sequência abaixo mostra um padrão binário em um
computador de 16 bits
1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1
3
Algumas vezes, o termo palavra é utilizado para se referir a um padrão binário
4
Um bit (d́ıgito binário) é a menor unidade de dados que pode ser armazenada em um computador, e
tem um valor igual a 0 ou 1
33 / 80
Computação Numérica
• 3. Sistema de numeração posicional
◦ Dessa forma, na interação entre o usuário e o computador:
• Os dados de entrada são enviados pelo usuário em base decimal
• Estas informações são convertidas para a base binária, e todas as operações
serão efetuadas nesta base
• Os resultados finais serão convertidos para a base decimal e, finalmente,
serão apresentados ao usuário.
◦ Todo este processo de conversão é uma fonte de erros que afeta o resultado
final dos cálculos em razão da limitação da representação de um número em
um computador
◦ Na próxima seção, estudaremos os processos para conversão de números do
sistema decimal para o binário e vice-versa
34 / 80
Computação Numérica
• 4. Conversão de base
Binário para decimal:
Este tipo de conversão é fácil e rápido, pois multiplicamos cada d́ıgito pelo
seu valor posicional no sistema binário e somanos os resultados parciais
para obter o número no sistema decimal.
x = dk−1 × 2k−1 + . . .+ d1 × 21 + d0 × 20︸ ︷︷ ︸
parte inteira
+
parte fracionária︷ ︸︸ ︷
d−1 × 2−1 + . . .+ d−l × 2−l
◦ Exemplo 05: Mudar a representação do números:
i. 1101 da base 2, para a base 10
ii. 110.11 da base 2, para a base 10
iii. 0.110 da base 2, para a base 10
35 / 80
Computação Numérica
• 4. Conversão de base
◦ Exemplo 05:
i. 1101 da base 2, para a base 10
1101 = 1× 23 + 1× 22 + 0× 21 + 1× 20 = 8 + 4 + 0 + 1 = 13
Portanto: (1101)2 = (13)10
ii. 110.11 da base 2, para a base 10
110.11 = 1×22+1×21+0×20+1×2−1+1×2−2 = 4+2+0+0.5+0.25 = 6.75
Portanto: (110.11)2 = (6.75)10
0.110 = 1× 2−1 + 1× 2−2 + 0× 2−3 = 0.5 + 0.25 + 0 = 0.75
Portanto: (0.110)2 = (0.75)10
O Scilab oferece uma função para a conversão de um número binário para a
base decimal (número inteiro): bin2dec. Exemplo:
-> bin2dec(’101’)
ans =
5
36 / 80
Computação Numérica
• 4. Conversão de base
Número inteiro para binário:
O procedimento consiste na divisão do número na base decimal sucessiva-
mente por 2, armazenando a cada passo, o algarismo do resto (r), até que
o quociente da divisão seja igual a 0. O binário é constitúıdo pelos restos
das divisões, a partir do resto (bit) mais significativo (rn ) para o menos
significativo (r1).
25 2
1 12 2
0 6 2
0 3 2
1 1 2
1 0
Resto (bit) mais significativo
Resto (bit) menos significativo
Dessa forma temos:
(x)10 = (rnrn−1 . . . r1)2
Obs.: O d́ıgito ”mais à
direita”́e chamado de bit
menos significativo, pois
possui o menor peso. Já o
d́ıgito ”mais à esquerda”́e
chamado de bit mais
significativo, pois possui o
maior peso.
37 / 80
Computação Numérica
• 4. Conversão de base
◦ Exemplo 06: Mudar a representação do número:
i. 23 da base 10, para a base 2
23 2
1 11 2
1 5 2
1 2 2
0 1 2
1 0
Portanto:
(23)10 = (10111)2
O Scilab oferece uma função para a conversão de um número decimal inteiro
para a base binária: dec2bin. Exemplo:
-> dec2bin(347)
ans =
101011011
38 / 80
Computação Numérica
• 4. Conversão de base
Número real para binário:
Nesses casos, precisamos de dois procedimentos, um para parte inteira
(quando presente) e outro para a parte fracionária.
Conversão da parte inteira: Para converter a parte inteira, seguimos o proce-
dimento apresentado no item b. (i.e. divisões sucessiva por 2).
Conversão da parte fracionária: O procedimento é constitúıdo pelos seguintes
passo:
a. Multiplicar o número fracionário por 2
b. A parte inteira do passo a) é o primeiro d́ıgito binário
c. A parte fracionária do passo b) é novamente multiplicada por 2
d. O processo continua até que a parte fracionária seja nula.
39 / 80
Computação Numérica
• 4. Conversão de base
◦ Exemplo 07: Mudar a representação dos números:
i. 9.625 da base 10, para a base 2
Primeiramente, decompomos 9.625 como a soma de um número inteiro e
um número fracionário, ou seja:
9.625 = 9 + 0.625
Para converter a parte inteira, seguimos o procedimento apresentado no
item b., o que nos fornece (9)10 = (1001)
Para converter a parte fracionária, usamos o algoritmo do slide anterior:
0.625× 2 = 1.25
0.25× 2 = 0.5
0.5× 2 = 1.0
Portanto: (9.625)10 = (1001.101)2
40 / 80
Computação Numérica
• 4. Conversão de base
◦ Exemplo 07: Mudar a representação dos números:
ii. 0.125 da base 10, para a base 2
0.125× 2 = 0.25
0.25× 2 = 0.5
0.5× 2 = 1.0
Portanto: (0.125)10 = (0.001)2
iii. 3.8 da base 10, para a base 2
Conversão da parte inteira: (3)10 = (11)2
Conversão da parte fracionária:
0.8× 2 = 1.6
0.6× 2 = 1.2
0.2× 2 = 0.4
0.4× 2 = 0.8
0.8× 2 = . . .
Logo, (3.8)10 = (11.11001100 . . . )2 tem representação finita no sistema decimal, mas
representação infinita na base binária. Esse exemplo ilustra um caso de erro de
arredondamento
41 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ Conforme visto na seção anterior, um número é modificado para o sistema
binário antes de ser armazenado na memória do computador
◦ Contudo, ainda há questões que precisam ser abordadas:
• Como os números (inteiros e reais) são armazenados em um
computador (representação de um número)
• Como armazenar o sinal de um número
• Como mostrar o ponto decimal
◦ Existem diversas maneiras de se lidar com a questão do sinal, que serão
discutidas posteriormente.
◦ Para o ponto decimal, os computadores utilizam duas diferentes representações:
• Representação com ponto fixo: representação utilizada para armazenar
números inteiros (i.e. sem parte fracionária)
• Representação em ponto flutuante: representação utilizada para armazenar
um número real (i.e. com uma parte fracionária)
42 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
• Em prinćıpio, a representação de um número inteiro no computador não
apresenta qualquer dificuldade.
• Como os computadores atuais, em quase sua totalidade, utilizam Unidades
Lógica e Aritmética que representam internamente os números em uma
base fixa β (β ≥ 2), dado um número inteiro x 6= 0, ele possui uma única
representação:
x = ±(dk−1 . . . d2d1d0·)β = ±(dk−1 × βk−1 + . . .+ d1 × β1 + d0 × β0)
Portanto, um número inteiro normalmente é armazenado na memó-
ria utilizando a representação em ponto fixo.
• Contudo, um usuário (ou um programa) pode armazenar um número
inteiro como um número real, com a parte fracionária definida como zero!
• Esse procedimento é adotado, por exemplo, quando um número inteiro
for grande demais para ser armazenado em um tamanho predefinido
43 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
Para utilizar a memória do computador com mais eficiência, números
inteiros sem sinal e com sinal são armazenados de modo diferente!
◦ Um número inteiro sem sinal nunca pode ser negativo, e pode assumir somente
o valor 0 ou valores positivos, ou seja, [0,+∞]
No entanto, uma vez que nenhum computador poderepresentar todos
os números inteiros nesse intervalo, a maioria dos computadores define
uma constante chamada de máximo número inteiro sem sinal (Imax), que
tem o valor de
Imax = 2
n − 1
onde n é o número de bits alocado para representar um inteiro sem sinal
44 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
Em sala de aula...
Exemplo 08: Represente o número 50 em uma localização de memória
de um computador hipotético de 8 bits utilizando a representação sem
sinal.
50 em base binária → 1 1 0 0 1 0
Acrescente 2 bits à es-
querda
→ 0 0 1 1 0 0 1 0
◦ Portanto: (50)10 = (00110010)2
45 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
Na prova...
Represente o número 20 em uma localização de memória de um computador hipo-
tético de 4 bits utilizando a representação sem sinal.
Primeiro, transforme o número 20 em base binária: (20)10 = (10100)2
5 (!!!!) é o número de bits para representar o decimal 20
46 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
Relembrando....
Como nenhum computador pode representar todos os números inteiros
no intervalo [0,+∞], a maioria dos computadores define uma constante
chamada de máximo número inteiro sem sinal (Imax), que tem o valor de
Imax = 2
n − 1
onde n é o número de bits alocado para representar um inteiro sem sinal
• Devido a limitações de tamanho - o número alocado de bits -, o intervalo de
números inteiros que pode ser representado é limitado
• Por exemplo, em um computador de 4 bits, se uma operação resultar em
um valor maior que 24 − 1 = 15 ocorre um erro conhecido como overflow
47 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.1. Representação de números inteiros
• A abaixo mostra o que ocorre se tentarmos armazenar um número inteiro
sem sinal que seja maior do que 15 em uma localização de memória que
pode manter somente 4 bits.
0000 0001 0010
0011
0
1
0
0
0101
0110
0111100010
01
10
10
10
11
1
1
0
0
11
01
11
10
111
1
3
4
5
6
789
10
11
1
2
13
14
15
0 1
2
3
so
ma
9 un.
• Se armazenarmos o número inteiro 11 em uma
localização da memória e, então, tentarmos
somar 9, esperamos que o resultado seja 20, mas
a resposta do computador é 4
• Como 5 é o número mı́nimo de bits que
utilizamos para representar o inteiro 20
(20 = 10100), o computador elimina o bit mais à
esquerda e mantém os quatro bits mais à direita,
ou seja:
(0100)2 = (4)10
48 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.2. Representação sinal-magnitude
• Naturalmente é necessário representar também o sinal dos números inteiros
• Existem diversas maneiras de se lidar com a questão do sinal. A
abordagem mais direta é o formato sinal-magnitude conhecido como método
dos valores com sinal, que foi amplamente utilizado nas Unidades Lógica e
Aritmética dos primeiros computadores digitais binários
• Atualmente, quase todos os computadores utilizam a chamada representação
complemento de 2 para armazenar um número inteiro com sinal. Contudo,
por questão de tempo, essa representação não será abordada neste curso.
• Embora o formato sinal-magnitude não seja comumente empregado para
armazenar números inteiros, ele o é para parte de um número real no
computador. Por essa razão, analisamos aqui, brevemente, esse formato.
No método dos valores com sinal, o bit mais significativo (i.e. o primeiro bit)
define o sinal do número. Se for 0, o número é positivo. Se 1, o número é negativo.
Os bits restantes são usados para armazenar o número.
49 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.2. Representação sinal-magnitude
• Isso significa que em um computador de 32 bits, podemos utilizar somente
31 para representar o valor absoluto de um número (número sem sinal).
• Neste método, o intervalo dispońıvel para números inteiros sem sinal (de 0
até 2n − 1) é dividido em dois subintervalos iguais.
• Por exemplo, para um computador hipotético de 4 bits o intervalo é de
0000 a 1111. Esse intervalo é dividido em duas metades: de 0000 a
0111 e de 1000 a 1111, conforme pode ser visto na figura abaixo
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 −0 −1 −2 −3 −4 −5 −6 −7
Observe que os números negativos aparecem à direita dos positivos, que é o
contrário do conceito convencional sobre positivos e negativos. Observe também
que temos dois 0s: o zero positivo (0000) e o zero negativo (1000)
50 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.2. Representação sinal-magnitude
Portanto, o intervalo de números que pode ser armazenado em uma
computador com n bits é de −(2n−1−1) até +(2n−1−1), uma vez que
o número zero possui duas representações posśıveis: o zero negativo e o
zero positivo
• Implicações:
• Um computador de 32 bits é capaz de representar todos os inteiros
entre −231 + 1 até 231 − 1, ou seja, entre −2.147.483.647 e
+2.147.483.647
(−1)s(20 + 21 + . . .+ 230) = (−1)s(231 − 1) = (−1)s × 2.147.483.647
• Se uma operação aritmética resultar em um número que não pode ser
armazenado nos registros ocorre um erro conhecido como overflow
51 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.2. Representação sinal-magnitude
• A figura abaixo mostra o que acontece se tentarmos armazenar um número
inteiro que seja maior que 7 em uma máquina de 4 bits.
0000 0001 0010
0011
0
1
0
0
0101
0110
0111100010
01
10
10
10
11
1
1
0
0
11
01
11
10
111
1
3
4
5
6
7-0-1
-2
-3
-4
-5
-6
-7
+0 1
2
su
b
trai 7 un.
• Se armazenarmos o número inteiro −5 na
memória e tentarmos subtrair 7 desse número,
esperamos que o resultado seja −12, mas a
resposta do computador é +6!
• A razão disso é que, se começarmos de −5 em
uma representação circular, e prosseguirmos
sete unidades no sentido anti-horário,
terminamos em +6
Normalmente, erros de overflow fazem o cál-
culo parar ou retornar um número truncado
que não corresponde ao resultado correto da
operação, a menos que o programa tenha
sido projetado para detectar essa ocorrên-
cia.
52 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• O primeiro ponto a ser discutido, é o motivo da criação da notação em
ponto flutuante para representar números reais
• Normalmente, um computador aloca uma quantidade fixa de bits para
representar a parte inteira e a parte fracionária
• Por exemplo:
• No sistema decimal, para um total de 16 d́ıgitos, considere o uso de
uma representação em ponto fixo, com 14 posições para armazenar a
parte inteira e 2 posições para armazenar a parte fracionária. A
precisão de um número real é perdida se tentarmos representar um
número decimal como 1,00234; o sistema armazena o número como
1,00.
• No sistema decimal, considere o uso de uma representação em ponto
fixo, com 10 posições para armazenar a parte inteira e 6 posições para
armazenar a parte fracionária, formando um total de 16 d́ıgitos. A
precisão de um número real nesse sistema é perdida se tentarmos
representar um número decimal como 236154302345,00. O sistema
armazena o número como 6154302345,00; a parte inteira é muito menor
do que deveria ser.
53 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
+
Portanto, em virtude das limitações de memória, números reais com
partes inteiras muito grandes ou partes fracionárias muito pequenas
não devem ser armazenados na representação em ponto fixo.
Representação em ponto flutuante
A solução para manter a exatidão ou a precisão é utilizar a representa-
ção em pontoflutuante. Essa representação permite que o ponto decimal
flutue: podemos ter diferentes quantidade de d́ıgitos à direita ou à es-
querda do ponto decimal
• Esta representação é mais flex́ıvel que a representação em ponto fixo e
aumenta o intervalo de números reais que pode ser armazenado
54 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Na representação em ponto flutuante, um número, seja real ou binário, é
composto de três partes, conforme mostrado na figura abaixo
sinal deslocador número com ponto fixo
ð 1. A primeira parte é o sinal, positivo ou negativo. Asegunda mostra quantas posições o ponto decimal deve
mudar para a direita ou esquerda, para formar o número
propriamente dita. A terceira é uma representação em
ponto fixo, em que a posição do ponto decimal é fixa
2. Nas ciências, a representação em ponto flutuante, também
chamada de notação cient́ıfica, é utilizada para representar
números decimais muito pequenos ou muito grandes.
55 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
ð 2. Nas ciências, a representação em ponto flutuante, tambémchamada de notação cient́ıfica, é utilizada para representar
números decimais muito pequenos ou muito grandes.
• Exemplo 09: Representar o número decimal 6154302345.14 em notação
cient́ıfica.
Resposta:
6154302345.14× 100 = 61543023.4514× 102 = . . . = 0.615430234514× 1010
+
Observe que um número pode ser representado de várias formas
equivalentes em notação cient́ıfica. Portanto, para uniformizar a
representação da parte fixa, os métodos cient́ıficos e de ponto flu-
tuante utilizam uma representação normalizada
56 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
+
Observe que um número pode ser representado de várias formas
equivalentes em notação cient́ıfica. Portanto, para uniformizar a
representação da parte fixa, os métodos cient́ıficos e de ponto flu-
tuante utilizam uma representação normalizada
�
Os métodos cient́ıficos (sistema decimal) e de ponto flutuante em
computação (sistema binário) utilizam somente um d́ıgito à es-
querda do ponto decimal. Isso é chamado de normalização
• No métodos cient́ıficos (i.e. no sistema decimal), o d́ıgito à esquerda do
ponto decimal pode ser um número entre 1 e 9, ou seja, o expoente
(deslocamento) é escolhido de tal forma que 1 ≤ |x | ≤ 9. Por exemplo: em
notação cient́ıfica, a constante de Avogadro é representada como 6.02× 1023
57 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Na representação em ponto flutuante, um número x , seja real ou binário, é
representado da seguinte forma normalizada:
x = sinal(m)β × βe
onde m é a mantissa, β ≥ 2 é a base e e é o expoente.
• Sinal: O sinal do número pode ser armazenado utilizando 1 bit (0
ou 1)
• Mantissa: é o número inteiro binário à direita do ponto decimal. Ela
define a precisão do número e é armazenada em notação em ponto
fixo.
• Expoente: O expoente define o deslocamento do ponto decimal. Ob-
serve que o expoente pode ser positivo ou negativo
58 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Na representação em ponto flutuante, um número x , seja real ou binário, é
representado da seguinte forma normalizada:
x = sinal(m)β × βe
onde m é a mantissa, β ≥ 2 é a base e e é o expoente.
• Neste sistema de ponto flutuante, as seguintes condições devem ser
verificadas:
1. m = 0.d1d2 . . . dn onde n ∈ N é o número máximo de d́ıgitos
da mantissa. O valor de n é determinado pelo padrão binário
da máquina.
2. 1 ≤ d1 ≤ β − 1 e 0 ≤ di ≤ β − 1 para i = 2, . . . ,n.
3. emin ≤ e ≤ emax onde emin, emax ∈ Z são números cujos
valores dependem da máquina utilizada. O sistema de Excesso
(ou bias) é o método utilizado para armazenar o expoente.
59 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
1. m = 0.d1d2 . . . dn onde n ∈ N.
2. 1 ≤ d1 ≤ β − 1 e 0 ≤ di ≤ β − 1 para i = 2, . . . ,n.
3. emin ≤ e ≤ emax onde emin, emax ∈ Z são números cujos valores
dependem da máquina utilizada. O sistema de Excesso (ou bias) é o
método utilizado para armazenar o expoente.
ð
Sistema de Excesso
• Neste sistema, os números inteiros positivos e negativos são armazenados
como números inteiros sem sinal.
• Para representar um número inteiro negativo ou positivo, um número in-
teiro positivo (chamado de bias) é adicionado a cada número para deslocá-
los uniformemente para o lado positivo
• O valor desse bias é 2m−1−1, onde m é o tamanho de memória destinada
para armazenar o expoente.
60 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Por exemplo: para um sistema de 4 bits podemos expressar 16 números
inteiros, utilizando uma posição para o 0 e dividindo os outros 15
(24 − 1 = 15) para expressar os números inteiros de -7 a 8, conforme figura
abaixo.
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+
Adicionando 7 unidades a cada número inteiro nesse intervalo, podemos
transladar uniformemente todos os números inteiros à direita e tornar todos
eles positivos, sem modificar a posição relativa dos números inteiros, um
em relação ao outro, como mostra a figura acima. O sistema é chamado
Excesso 7, ou representação com bias igual a 7.
Para a alocação de quatro bits, o bias é 24−1 − 1 = 7, como era de se
esperar.
61 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
1. m = 0.d1d2 . . . dn onde n ∈ N é o número máximo de d́ıgitos
determinado pelo tamanho da mantissa.
2. 1 ≤ d1 ≤ β − 1 e 0 ≤ di ≤ β − 1 para i = 2, . . . ,n.
3. emin ≤ e ≤ emax onde emin, emax ∈ Z são números cujos valores
dependem da máquina utilizada.
• Até meados da década de 80, cada fabricante de computador adotava seu
próprio formato para representar números em ponto flutuante
• Em 1985 o Instituto de Engenheiros Elétricos e Eletrônicos (IEEE) definiu
diversos padrões para o armazenamento de números em ponto flutuante
(relatório Binary Floating Point Arithmetic Standard 754)
• O padrão IEEE-754 define três formatos:
• Precisão simples (float - 32 bits)
• Precisão dupla (double - 64 bits)
• Precisão estendida (80 bits)
62 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• As especificações para precisão simples e dupla são apresentadas na Tabela
abaixo
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
• Por exemplo, o formato com precisão simples utiliza um total de 32 bits para
armazenar um número real na representação em ponto flutuante.
• O sinal ocupa 1 bit (0 para positivo e 1 para negativo)
• O expoente ocupa 8 bits (utilizando um bias de 127)
• A mantissa ocupa 23 bits (número sem sinal).
63 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
1. m = 0.d1d2 . . . dn onde n ∈ N
2. 1 ≤ d1 ≤ β − 1 e 0 ≤ di ≤ β − 1 para i = 2, . . . ,n.
...
ð
Obs.1: O Padrão IEEE-754 faz uma exceção à regra de normalização. Como
em base binária o primeiro d́ıgito é sempre 1, a mantissa assume um 1 im-
pĺıcito a esquerda do ponto decimal e, portanto, o primeiro bit da mantissa
pode de fato ser zero.
Esse 1 impĺıcito é referido como bit oculto e permite um ganho de precisão,
pois pode-se considerar que a mantissa é armazenada em 24 bits.
Porexemplo: na representação normalizada, o número 5.5 = 101.1 =
0.1011 × 23. Como a IEEE-754 assume um 1 impĺıcito à esquerda do
ponto decimal, então o número 5.5 é representado como 1.011 × 22, ou
seja, a mantissa é 011 e não inicia com um 1.64 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• As especificações para precisão simples e dupla são apresentadas na Tabela
abaixo
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
ð
Obs.2: A sequência de bits para o expoente 00000000 e 11111111 (para um
formato de 32 bits) é reservado para representar o número 0 e ∞ (ou a
ocorrência de erro, NaN - Not a Number), respectivamente
65 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• As especificações para precisão simples e dupla são apresentadas na Tabela
abaixo
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
ð
• Número 0: mantissa e expoente nulos;
• Valor infinito (∞): mantissa nula e expoente (11111111)2
• Not-a-Number (Nan): mantissa não nula e expoente (11111111)2. Repre-
senta um valor irrepresentável. Os elementos da mantissa não podem ser
todos nulos, pois mantissa nula é usada para representar o ∞. Exemplo
0/0
66 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• As especificações para precisão simples e dupla são apresentadas na Tabela
abaixo
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
Portanto, em uma arquitetura de 32 bits:
• O maior expoente é representado pelo número: (11111110)2 = (254)10, ou
seja, 127 + emax = 254 =⇒ emax = 127
• O menor expoente é representado pelo número: (00000001)2 = (1)10, ou
seja, 127 + emin = 1 =⇒ emin = −126
67 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• As especificações para precisão simples e dupla são apresentadas na Tabela
abaixo
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
ð
Obs.3: Um sistema de ponto flutuante é definido pela quádrupla
F (β,n, emin, emax), onde β é base, n é a precisão, emin e emax são os
valores mı́nimos e máximos do expoente. A união de todos os números
em ponto flutuante, juntamente com a representação do zero, constitui o
sistema de ponto flutuante normalizado
68 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
ð
Obs.4: Os valores da tabela acima representam o alcance e a precisão da
representação.
• Alcance: está relacionado ao número de bits do expoente. Quanto maior
for o número de bits, maior o espectro de alcance do número.
• Precisão: está relacionada ao número de bits da mantissa. Quanto maior
for o número de bits, maior o número de d́ıgitos significativos que podem
ser armazenados.
69 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
Portanto, não é posśıvel representar números arbitrariamente grandes ou arbitra-
riamente pequenos, uma vez que emin e emax são finitos.
1. O menor positivo representável, é o real formado pela menor mantissa
multiplicada pela base elevada ao menor expoente, isto é:
menor+ = (0.1 00 . . . 0︸ ︷︷ ︸
n−1 vezes
)× 2emin
70 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
Portanto, não é posśıvel representar números arbitrariamente grandes ou arbitra-
riamente pequenos, uma vez que emin e emax são finitos.
2. O menor negativo representável, é o real formado pela menor mantissa
multiplicada pela base elevada ao menor expoente, isto é:
menor− = −(0. 11 . . . 1︸ ︷︷ ︸
n vezes
)× 2emin
71 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
Portanto, não é posśıvel representar números arbitrariamente grandes ou arbitra-
riamente pequenos, uma vez que emin e emax são finitos.
2. O maior positivo representável, é o real formado pela menor mantissa
multiplicada pela base elevada ao maior expoente, isto é:
maior+ = +(0. 11 . . . 1︸ ︷︷ ︸
n vezes
)× 2emax
72 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
Portanto, não é posśıvel representar números arbitrariamente grandes ou arbitra-
riamente pequenos, uma vez que emin e emax são finitos.
2. O maior negativo representável, é o real formado pela menor mantissa
multiplicada pela base elevada ao maior expoente, isto é:
maior+ = −(0.1 00 . . . 0︸ ︷︷ ︸
n−1 vezes
)× 2emax
73 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
• Na precisão simples (32 bits) o número de d́ıgitos significativos (precisão p)
é de aproximadamente 7 d́ıgitos decimais, pois:
2−24 = 10−p =⇒ log10(2−24) = log10(10−p) ∴ p = 24log10(2) ≈ 7.22
• Na precisão dupla (64 bits) o número de d́ıgitos significativos (precisão p) é
de aproximadamente 16 d́ıgitos decimais, pois:
2−53 = 10−p =⇒ log10(2−53) = log10(10−p) ∴ p = 53log10(2) ≈ 15.95
74 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
� • No Scilab, o menor número positivo e o maior número positivo podemser obtidos através da função number_properties
◦ number_properties(’tiny’): retorna o menor número positivo
normalizado
◦ number_properties(’huge’): retorna o maior número positivo
normalizado
◦ number_properties(’digits’): retorna o tamanho da mantissa
75 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Parâmetro Precisão Simples Precisão dupla
número total de bits 32 64
sinal - número de bits 1 1
expoente - número de bits 8 11
mantissa - número de bits 23 52
bias - número inteiro 127 1023
� • NoScilab, o épsilon da máquina é obtido pela constante %eps.
• épsilon da máquina (ou precisão da máquina): denotada por �, é a
metade da distância entre 1 e o menor ponto flutuante estritamente
maior que 1, ou seja:
� = (1/2)β1−n
ou, em outras, palavras é o menor número positivo em ponto
flutuante, tal que 1 + � > 1
• Para precisão dupla � = 2−52 ≈ 2.2× 10−16
76 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Exemplo 10: Considere o sistema F (10, 3,−2, 2), represente os números
x1 = 0.35, x2 = −5.175; x3 = 0.0123, x4 = 5391.3 e x5 = 0.0003 em ponto
flutuante na forma normalizada
• Solução:
x1 = 0.35 = 0.350× 100
x2 = −5.175 = −0.51?× 101
x3 = 0.0123 = 0.123× 10−1
x4 = 5391.3 = 0.539× 104
x5 = 0.0003 = 0.300× 10−3
+
Obs.1: Observe que o número x2 =
−5.175 = 0.5175 × 101 possui 4 d́ıgitos
na mantissa. Se for usado truncamento,
x2 será representado por 0.517 × 101;
se for usado o arredondamento, x2 será
representado por 0.518× 101, conforme
será visto mais adiante.
77 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
• Exemplo 10: Considere o sistema F (10, 3,−2, 2), represente os números
x1 = 0.35, x2 = −5.175; x3 = 0.0123, x4 = 5391.3 e x5 = 0.0003 em ponto
flutuante na forma normalizada
• Solução:
x1 = 0.35 = 0.350× 100
x2 = −5.175 = −0.51?× 101
x3 = 0.0123 = 0.123× 10−1
x4 = 5391.3 = 0.539× 104
x5 = 0.0003 = 0.300× 10−3
+
Obs.2: Observe que os números 5391.3
e 0.0003 não podem ser respresenta-
dos nesse sistema. De fato, o número
5391.3 = 0.539×104 e portanto o expo-
ente é maior que 2, causando overflow.
Por outro lado, 0.0003 = 0.300×10−3 e
assim o expoente é menor que −2 cau-
sando underflow
78 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
Existe um intervalo limitado de números que podem ser representados: no
caso de números em ponto flutuante, um número não poderá ser repre-
sentado se o expoente e estiver fora dos limites emin e emax. Ocorrerá
erro de underflow se e < emin e de overflow se e > emax
menor− maior− 0 menor+ maior+
overflow underflow overflow
Representável (−) Representável (+)
79 / 80
Computação Numérica
• 5. Representação de números em máquina
◦ 5.3. Representação em ponto flutuante
menor− maior− 0 menor+ maior+
overflow underflow overflow
Representável (−) Representável (+)
ð • Normalmente, erros e underflow ou overflow fazem o cálculo parar, ouretornam um número infinito (overflow), ou nulo (underflow), ou um
número que não corresponde ao resultado correto da operação
• Note que imprecisão é diferente de underflow, pois imprecisão está
relacionada a uma limitação do número de bits da mantissa o que
acarreta em uma perda de precisão do valor efetivo (arredondamento)
80 / 80
	Objetivos
	Bibliografia
	Computação Numérica
	Introdução/Motivações
	Erro absoluto e Erro relativo
	Algarismos significativos
	Sistema de numeração
	Conversão de base
	Representação de números em máquina
	Representação de números inteiros
	Representação sinal-magnitude
	Representação em ponto flutuante

Continue navegando