Sunteți pe pagina 1din 31

I - TÓPICOS PRELIMINARES

SUMÁRIO

1. O CÁLCULO NUMÉRICO ........................................................................................................ 1


1.1. Resolução de Problemas: Modelagem Físico-Matemática ......................................................1
1.2. O Problema do Lançamento de Projéteis ................................................................................1
1.2.1. Enfoque 1: Solução sem a Resistência do Ar ..................................................................2
1.2.2. Enfoque 2: Solução com a Resistência do Ar ..................................................................3
1.3. O Papel do Cálculo Numérico..................................................................................................4
2. OS NÚMEROS NA MÁQUINA DIGITAL ...................................................................................... 7
2.1. O Computador não é Infinito....................................................................................................7
2.2. Representação Numérica ........................................................................................................7
2.2.1. Algarismos Significativos .................................................................................................7
Por Quê? ...............................................................................................................................7
Origem do Conceito: Medições..............................................................................................7
Algumas Regras ....................................................................................................................9
Operações Aritméticas...........................................................................................................9
2.2.2. Ponto Flutuante e Ponto Fixo ........................................................................................11
2.2.3. Sistema de Numeração .................................................................................................12
2.3. Representação Interna dos Números na Máquina.................................................................15
2.3.1. As Informações no Computador: bits e bytes ................................................................15
2.3.2. Normalização ................................................................................................................16
2.3.3. A Natureza Discreta da Representação Numérica na Máquina .....................................17
2.3.4. Números Reais nas Linguagens de Programação.........................................................19
2.4. Arredondamento e Truncamento ...........................................................................................20
2.5. Aritmética de Ponto Flutuante................................................................................................20
3. PROBLEMAS DA SOLUÇÃO NUMÉRICA .................................................................................. 22
3.1. Origens..................................................................................................................................22
3.2. Precisão e Exatidão - O Épsilon de Máquina.........................................................................22
3.3. Erros......................................................................................................................................23
3.3.1. Medição do Erro: Erro Absoluto e Erro Relativo ............................................................23
3.3.2. Tipos de Erros ...............................................................................................................24
3.3.3. Propagação de Erros.....................................................................................................24
3.4. Instabilidade ..........................................................................................................................25
3.4.1. O que é? .......................................................................................................................25
3.4.2. Instabilidade dos Algoritmos..........................................................................................25
3.4.3. Instabilidade de Problemas ...........................................................................................26
4. REPRESENTAÇÃO DOS ALGORITMOS NUMÉRICOS - O FLUXOGRAMA ...................................... 27
5. COMENTÁRIO FINAL ........................................................................................................... 28
6. REFERÊNCIAS DO CAPÍTULO ............................................................................................... 28
7. EXERCÍCIOS DO CAPÍTULO .................................................................................................. 29

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


- ii -

RESUMO DO CAPÍTULO
O objetivo deste capítulo é deixar claro para o leitor o papel do Cálculo Numérico, e qual a sua
importância. Para tal, mostra-se um exemplo de problema - o cálculo de alcance no lançamento de
projéteis - cuja solução analítica (isto é, uma solução expressa por uma fórmula explícita, tipo
x = <expressão sem x>) não é possível quando se deseja resolver o modelo matemático mais
completo.
Entretanto, também se alerta para o fato de que existem limitações e cuidados que devem ser
tomados ao se proceder à solução numérica de problemas, particularmente aqueles associados às
limitações do equipamento que se utiliza para se chegar à solução, que é a máquina de cálculo
digital, como o computador.
Para entender os problemas que podem advir no processo da solução numérica, começa-se por
mostrar como os números podem ser representados, recordando-se o conceito de algarismos
significativos, as particularidades da aritmética envolvendo tais algarismos e o que são sistemas de
numeração. Em seguida, é visto como os números são armazenados e tratados numa máquina com
recursos finitos - o computador - e quais as conseqüências disso em termos de erros de cálculo e
instabilidade na obtenção das soluções numéricas.
Por fim, deixa-se a mensagem de que o "analista numérico" deve estar sempre atento a todos os
aspectos abordados neste capítulo quando estiver avaliando os resultados de qualquer processo de
solução utilizando métodos numéricos. Isto é valido para todos os capítulos a serem visto daqui para
frente.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -1-

1. O CÁLCULO NUMÉRICO
1.1. Resolução de Problemas: Modelagem Físico-Matemática
Ao longo dos tempos, o Homem tem sistematicamente procurado compreender a natureza,
tentando identificar formas de descrevê-la e, por conseguinte, prevê-la. Essa tentativa leva a
construção de modelos físicos para caracterizar os diversos problemas e os fenômenos associados.
Para solução desses problemas, modelos matemáticos são gerados baseados na essência do
comportamento real capturado por esses modelos físicos, fazendo-se uso, para tanto, de teorias
físicas, químicas, econômicas, etc. Genericamente, pode-se dizer que, quanto melhor a
caracterização do problema real através de um modelo físico-matemático, melhor é qualidade da
solução encontrada, entendo como qualidade a proximidade com a solução real. A Figura 1 resume
esse processo. É possível também se ter diferentes modelagens para um mesmo problema
dependendo do enfoque desejado. Com freqüência isto é conseguido com simplificações
introduzidas nos modelos para tornar sua solução mais fácil ou viável. Neste caso, têm-se modelos
físico-matemáticos simplificados.

% % %
& ! "
# $#!

Figura 1: Seqüência da solução de um problema.

De posse do modelo matemático, o passo seguinte é resolvê-lo. Entretanto, apenas parte dos
problemas possui as chamadas soluções analíticas (ou "exatas"). Na verdade, a maioria deles são
resolvidos através do uso de métodos numéricos aproximados, sendo que essa aproximação pode
ser controlada conforme a necessidade, de tal forma que o resultado final termina por ser tão bom
ou, pelo menos, tão eficaz quanto a solução exata. A seguir é apresentado um exemplo de solução
de um problema nos moldes do exposto neste item.

1.2. O Problema do Lançamento de Projéteis


Para entender melhor o que vem a ser uma modelagem físico/matemática, e o tipo de solução que
pode ser obtida (analítica ou numérica1), analisemos o seguinte problema: determinar o alcance e o
tempo de vôo de um projétil de massa m lançado com uma velocidade inicial v0 e ângulo de
lançamento α0.
Na Figura 2 está modelado o problema a ser resolvido. O que se pretende obter é o alcance R e o
tempo tR para se atingir esse alcance. Para obter esses valores, pode-se, em princípio, considerar
dois enfoques: levar em conta a resistência do ar, representada pela força de arrasto D2, ou
desprezá-la. Qual enfoque adotar depende de quão exato3 se deseja o resultado.

1
Entende-se aqui como solução analítica aquela em que se obtém uma fórmula explícita para a solução do problema,
como é o caso da fórmula de Bhaskara para solução de uma equação de segundo grau. A Solução numérica é utilizada
quando a solução analítica não é possível.
2
D de Drag, que é o termo técnico, em inglês, para arrasto - força de resistência do ar.
3
No item 3.2 Precisão e Exatidão - O Épsilon de Máquina define-se o que vêm a ser exatidão e precisão, pois não são a
mesma coisa.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -2-

Modelo Físico Modelo Matemático


{4}
forças na direção x :
2
d x
D m·ax = m· = -D·cosα
y dt 2
v0 α forças na direção y:
α0 d2 y
m·ay = m· = -(P + D·senα)
P dt 2
x onde:
R P = m·g
D = função(velocidade, corpo, meio)
O Modelo matemático é obtido a partir da aplicação m = massa do projétil
a
da 2 lei de Newton - F = ma - nas direções x e y. a = aceleração do projétil
g = aceleração da gravidade, constante

Figura 2: Modelo físico/matemático do lançamento de um projétil.

Se for desejada apenas uma estimativa, é possível desconsiderar a resistência do ar, pois a sua
influência para corpos aerodinâmicos é pequena, e a diferença no resultado final para o alcance e
tempo de vôo não será significativa, conforme sugerido pela Figura 3. Se, entretanto, for necessário
montar uma tabela de alcance para vários ângulos e velocidades de lançamento com a melhor
precisão possível (como em uma tabela de tiro para um canhão), a resistência do ar não pode ser
negligenciada no cálculo.

! )* +
(
, ≠-.
, /-.

5 6 '
+0 1
2 3% 4
5 60 1 7 80 9 1 4

Figura 3: Influência da resistência do ar na trajetória de um projétil aerodinâmico.

A escolha de um enfoque ou outro tem impacto no modelo matemático a ser resolvido, e em como
a solução é obtida. É o que será visto a seguir.

1.2.1. Enfoque 1: Solução sem a Resistência do Ar


Desconsiderar a resistência do ar significa admitir uma força de arrasto nula, ou D = 0. Neste
caso, as equações mostradas na Figura 2 simplificam para o seguinte:
d2 x dv x d2 x
m·ax = m· =0 (= m· ) =0 (1a)
dt 2 dt dt 2
d2 y d2 y
m·ay = m· = -P = -m·g = -g (1b)
dt 2 dt 2

4 2 2
ax = dvx/dt = d x/dt ; isto é, a aceleração é a derivada primeira da velocidade, e derivada segunda do deslocamento,
calculados na direção x. Para a direção y, o raciocínio é análogo.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -3-

As equações acima5 possuem solução analítica, que é:


x = v0·cos α0·t (2a)

1 2
y=- gt + v0·sen α0·t (2b)
2
Essas equações já são bem conhecidas da Física, e de sua solução podem ser obtidos os
resultados procurados6, que são:
2 2
R= v0 ·cos α0·sin α0 (3a)
g
2
tR = v0·sinα0 (3b)
g

1.2.2. Enfoque 2: Solução com a Resistência do Ar


Nesse caso, as equações mostradas na Figura 2 devem ser resolvidas:
d2 x
m· = -D·cosα (4a)
dt 2
d2 y
m· = -(m·g + D·senα) (4b)
dt 2
Uma das condições para resolver o sistema acima é conhecer a forma da função arrasto D. Uma
aproximação possível é:
D = Kv2 (5)

onde K é uma constante.


As seguintes relações são válidas:
d2 x dv x
2
= (6a)
dt dt

d2 y dv y
= (6b)
dt 2 dt
vy
sen α = (7a)
2 2
vx + vy

vx
cos α = (7b)
2 2
vx + vy

Substituindo as relações (5), (6) e (7) no sistema de equações (4), obtém-se o seguinte:

5
São equações diferenciais, cuja forma de solução não vem ao caso agora. Considerou-se, para t = 0, x = y = 0,
vx = v0·cosα e vy = v0·sinα.
6
O tempo para o alcance R é uma das soluções da equação em y quando y = 0.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -4-

dv x K 2 2
= - ·vx· v x + v y = f1(t, vx, vy) (8a)
dt m
dv y K 2 2
= -g - ·vy· v x + v y = f2(t, vx, vy) (8b)
dt m
Note que as equações finais deixaram de ser "simpáticas", ou seja, não possuem um tratamento
analítico simples e/ou possível. A pergunta natural agora é a seguinte: como resolver isto?
Neste caso, as funções (derivadas) envolvem as duas variáveis dependentes, vx e vy, além da
variável independente t. Não há solução analítica para esse tipo de problema. A única saída é utilizar
métodos numéricos para integração desse sistema de equações diferenciais. Isso será um dos
tópicos deste curso.

1.3. O Papel do Cálculo Numérico


O exemplo de lançamento de projéteis, mostrado anteriormente, é um exemplo típico da situação
encontrada em vários tipos de problemas. Conforme o modelo matemático a ser resolvido, é possível
ou não a obtenção de solução analítica. Não sendo possível, lança-se mão de métodos numéricos,
como exemplificado na Figura 4.

∆ / :; " <
9 8
−: + ∆ −: − ∆ A
∆ ? -+ '> = = '; =
; ; 0 % +
: 5B
∆ / -+ '> = '; = − 6
;
B
−: −∆ −: −∆ 1 % 4
∆ @ -+ '> = + = '; = −
; ; ; ;

#$ %
&" !"

Figura 4: Exemplo de tipos de soluções para problemas.

Pois bem. A disciplina de Cálculo Numérico justamente apresenta um conjunto de métodos


numéricos para resolver aqueles problemas cuja solução analítica não é possível. Deve-se dizer que
apenas um conjunto muito pequeno de problemas é resolvido analiticamente: o uso de métodos
numéricos é bastante freqüente.
Dentre os problemas que serão abordados, e resolvidos numericamente, alguns estão ilustrados
da Figura 5 até a Figura 10.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -5-

0,'.

50 % 8 6
, '4+0,'. / ' C D ' E '; DC.

ξ
A 0 % 0,'. 9
ξ ξ '
1 ξ F 0,ξ./-4

Figura 5: Obtenção da raiz real de uma equação complexa.

"& *"
$

I'> − ;'; + C'I = ;- J


H'> − G'; + >;'I = C> K= J
− C'> + ;'I = > J

"& () *"
$

'; + (; + A; − > = - '=J


; ;
;' + ( − <A = - (=J
I'; − <( + A; = - A=J

Figura 6: Resolução de sistemas de equações.

+ ,# ) -. ,/01) 0 % ,# ) ,) 12 3) 0 % &,'.
&,'. 0% 0% 1
>4C ;4I 1 F F 8
&,'.+ 1 )
8 &,'.+ 1 ) 8*'
;4- I4<
8 *' 8 M 1
;4C I4L 8 M 1 1 0%
# 8 0 %
I4- C4- 8% 7 0,'.7 & %
I4C <4G &% 9
9 , M %
<4- H4L , M % 0,'.+ 1 F .4
F .4
<4C L4;

Figura 7: Ajuste de curvas - aproximação de uma função f(x), tabelada ou analítica, por outra função g(x)
escolhida.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -6-

>4C ;4I

;4- I4< 8,'.+8 %N % 8 %

;4C I4L
;4L 0,;4L./J
I4- C4- 8 %N 8,'.
45 ≈ 6 45 8 8
I4C <4G 8% F 0
B : 4
<4- H4L

<4C L4;
45

Figura 8: Interpolação de valores em pontos tabelados.

#87 # . #90,'. #
'
: '#

≈ > E ; E I E < E C

' 8 8 ' 8 M1 8 % & 9


1 % 1 O7 :P % 1 % 7
% 1 7 89A 5% 6
7
% " & 89A 4

Figura 9: Integração de uma função em determinado intervalo.

Figura 10: Resolução de equações diferenciais ordinárias.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -7-

2. OS NÚMEROS NA MÁQUINA DIGITAL


2.1. O Computador não é Infinito
Não se pode pensar em solução numérica de qualquer problema mais complexo sem ter uma
máquina digital como ferramenta para realizar os cálculos, como um computador. Porém, sendo uma
máquina finita em seus recursos, existe uma limitação natural no trato com os números.
Exemplificando, se quiséssemos armazenar no computador o número π
com todos os seus algarismos significativos - ou seja, infinitos algarismos - ∞
este computador precisaria ter uma memória também infinita para poder
guardá-lo. Assim sendo, fica claro que alguma informação é perdida
quando os números são armazenados e manipulados pelo equipamento,
e isso pode ter um impacto às vezes significativo na qualidade final da
solução numérica dos diversos problemas.
Para poder evitar os inconvenientes decorrentes das limitações
impostas pela máquina digital “finita”, o primeiro passo é começar por
entender como os números podem ser representados, recordando-se 44
<
inicialmente o conceito de algarismo significativo, as particularidades da
;G HC
aritmética envolvendo estes algarismos e o que são sistemas de
numeração. Isto entendido, pode-se então aprender como os números C>
são armazenados e tratados na máquina digital, e quais as conseqüências
do tipo de representação numérica utilizada em termos de erros de cálculo
e instabilidade na obtenção das soluções numéricas. É o que será visto no I4><
restante deste item 2

2.2. Representação Numérica


2.2.1. Algarismos Significativos
Por Quê?
A necessidade de se trabalhar levando em conta os algarismos significativos está associada à
análise da precisão de números e à propagação de erros. Pode-se citar duas situações principais
onde esta consideração é importante:
• na realização de cálculos onde resultados experimentais são utilizados: muitas vezes é de
extrema importância saber até que ponto o resultado do cálculo pode ser considerado preciso;
• na aritmética computacional, onde existe a limitação na quantidade de algarismos significativos
representável na máquina digital: isto tem conseqüências que podem ser importantes na
precisão final do resultado de um cálculo numérico.
Portanto, conhecer o conceito de algarismo significativo, e saber como trabalhar com eles, permite
evitar uma série de problemas relativos à realização de cálculos e análises de dados.
Origem do Conceito: Medições
A necessidade de se utilizar instrumentos para realizar medições conduziu à conceituação dos
algarismos significativos. Por exemplo, utilizando-se uma régua graduada em centímetros, conforme
ilustra a Figura 11, pode-se estimar o comprimento AB como sendo 3.6 cm.
Observe que, sendo AB = 3.6 cm, os algarismos 3 e 6 são significativos, pois 3 é exato e o 6 pode
ser estimado (note que um segundo observador poderia ter estimado AB como tendo 3.5 cm ou
3.7 cm). Por este motivo denomina-se o algarismo 6 como sendo o algarismo duvidoso. Qualquer
grandeza medida além dos algarismos exatos apresentará sempre um algarismo denominado
duvidoso. Se fosse definido, através do uso dessa mesma régua, que o comprimento é 3.62 cm,

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -8-

como o algarismo 6 já é duvidoso (poderia ser 5 ou 7), então o algarismo 2 não teria significado, ou
seja, não seria significativo. Melhor falando, não teria sentido colocar um segundo duvidoso: com a
presença do 2, o 6 teria conotação de algarismo exato, o que, nesse caso, ele não é.

A B

Figura 11: Exemplo de


0 1 2 3 4 5
determinação de
comprimento através de
94 94; instrumento de
medida - a régua
945 graduada em cm.

Por outro lado, se fosse utilizada uma régua graduada em mm, como a da Figura 12, o
comprimento poderia ser avaliado em algo como 3.63 cm, pois o instrumento permite isso: 3 e 6
seriam exatos, e o algarismo 3 seria o duvidoso, uma vez que sua obtenção dependeria de uma
apreciação do observador.

A B Figura 12: Exemplo


de determinação de
comprimento
0 1 2 3 4 5
3 através de
instrumento de
94; 94;9
medida - a régua
graduada em mm.
94;:

Assim sendo, um instrumento com menor divisão poderá medir a mesma grandeza com um
número de algarismos significativos maior. Evidentemente, existem vários métodos para mensurar
uma grandeza e obter uma precisão melhor, o que leva a medição mais próxima do verdadeiro valor
da grandeza. Dessa forma, quando for efetuada uma medição qualquer, deve-se apresentar o valor
da grandeza com todos seus algarismos significativos, incluindo o último, que é duvidoso.
Pode-se apresentar uma grandeza de várias formas, desde que não seja alterado o número de
seus algarismos significativos. Seja o exemplo onde um estudante determinou a massa de um
objeto, obtendo m = 0.02130 kg. Esta grandeza foi obtida com 4 algarismos significativos. Observe
que o zero à direita é significativo (surgiu de uma avaliação), ao passo que os da esquerda não.
Assim, é possível escrever o valor da massa das seguintes formas: 2.130·10-2 Kg, 2.130·10 g,
21.30 g ou 21.30·103 kg (ponto flutuante, mas com os mesmos algarismos significativos).
Observe que em todas as formas apresentadas acima a grandeza continuou com 4 algarismos
significativos. Qualquer representação da mesma que altere o número de algarismos significativos é
incorreta (em termos de medição experimental) como, por exemplo, 2.13·10-2 Kg. Neste caso, o
algarismo duvidoso passou a ser o 3, e a grandeza passou a ter 3 algarismos significativos.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares -9-

Utilizando esta representação é possível agora compreender que, fisicamente, 5.0 m/s não é
idêntico a 5.00 m/s. Além disso, como uma grandeza não deve apresentar mais do que um algarismo
duvidoso, torna-se desnecessário apresentar algarismos que não possuam qualquer significado
físico, ou não significativos.
Entretanto, nos exemplos discutidos até agora só mencionamos números com ponto decimal. E
no caso de números sem ponto decimal ("inteiros"), como o número 1000: quantos algarismos
significativos ele possui? E 1001? Vejamos, portanto, as regras para determinar os algarismos
significativos de um número.
Algumas Regras
Uma vez entendido o que são os algarismos significativos em um número, e que os números que
forem tratados de agora em diante tem apenas um algarismo significativo duvidoso, as seguintes
regras são úteis para identificar a quantidade de algarismos significativos.
Regra 1 - Números COM ponto decimal. Todos os algarismos, desde o primeiro mais à esquerda
diferente de zero até o último mais à direita (diferente ou não de zero), são considerados
significativos. Exemplos:
• 4687. ou 4.687·103: 4 algarismos significativos
• 34.732 ou 3.4732·101: 5 algarismos significativos
• 3.9800: 5 algarismos significativos
• 0.04 ou 4·10-2: 1 algarismo significativo
• 0.00000875 ou 8.75·10-6: 3 algarismos significativos
• 0.0040 ou 4.0·10-3: 2 algarismos significativos
Regra 2 - Números SEM ponto decimal. Todos os algarismos, desde o primeiro mais à esquerda
diferente de zero até o último mais à direita diferente de zero, são considerados significativos.
Exemplos:
• 1000 ou 1·103: 1 algarismo significativo
• 1001 ou 1.001·103: 4 algarismos significativos
• 2300000 ou 2.3·106: 2 algarismos significativos
• 2300010 ou 2.30001·106: 6 algarismos significativos

Exercício 1: Algarismos significativos.


Quantos algarismos significativos existem nas seguintes representações numéricas?
a) 14000 ____ b) 1000,00 ____ c) 0.134·106 ____
d) 0.010003 ____ e) 0.000021 ____ f) 14010 ____

Operações Aritméticas
Para saber qual a precisão a ser considerada no resultado do cálculo envolvendo números com
diferentes quantidades de algarismos significativos, é preciso saber como realizar estes cálculos.
Para isto, basta apenas aplicar algumas regras para determinação da quantidade de algarismos
significativos a serem considerados no resultado de cada uma das quatro operações aritméticas
básicas: adição, subtração, multiplicação e divisão - Figura 13.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 10 -

54= ' 84; '


94 5 :4 <; 54<; ' 84 8 > 948 94=<9 84 '
54< ; ' 84 :5 '

Figura 13: Operações aritméticas - quantos algarismos significativos considerar no resultado?

Em relação à aritmética computacional (aritmética de ponto flutuante), ela segue regras


equivalentes às das operações realizadas considerando os algarismos significativos. Por isso se
torna necessário entender como estas operações são efetuadas, pois possibilita evitar problemas,
como propagação de erros, no cálculo numérico realizado nas máquinas digitais.
Multiplicação e Divisão
Quando dois ou mais números são operandos em multiplicações e/ou divisões sucessivas, o
resultado terá uma quantidade de algarismos significativos igual ao do operando com menor número
de algarismos significativos, sendo feito o arredondamento7 necessário para tal - Figura 14.

0 6 8

94 5 :4 <; 8 49 8 8 49
&
9 : 9
&%0 1

0 6

84 8 > 948 94=<9 84 :5 84;


&
9 :
&%0 1

Figura 14: Algarismos significativos em operações de multiplicação de divisão.

Adição e Subtração
Quando dois ou mais números são somados ou subtraídos, as posições dos últimos algarismos
significativos de cada número devem ser comparadas em relação à posição do ponto decimal.
Aquele que estiver mais a esquerda irá definir a posição do último algarismo significativo do
resultado - Figura 15.

7
Estratégia de arredondamento: sejam ...XY os últimos algarismos de um número que deverá ser escrito até a posição
referente ao algarismo X. Se 0<Y<4, então X permanece (1.32 → 1.3; 342 → 340); se 5≤Y<9, então X é substituído por
(X+1) (1.37 → 1.4; 347 → 350). Existe outra forma de arredondamento que, se 5<Y<9, então X é substituído por (X+1), mas
se Y=5, então X é feito par (1.25 → 1.2; 1.35 → 1.4); não utilizaremos esta forma aqui.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 11 -

0 6 8 0 6

84 4 9; 4 84 ; 45 8 ; ? 94: 8 : 45 8 ;

84 45 8 ;
? ;
4 9; 4 9: 8
4 458; 8 ;

84 ;
45 8 ;

84 ;

Figura 15: Algarismos significativos em operações de adição e subtração.

Exercício 2: Operações aritméticas com algarismos significativos.


Calcule o resultado das seguintes expressões considerando os algarismos significativos.
a) (1.02 + 3.036)·(3.744 - 6.1) =

b) (2.3212 + 43.721)·3.146/2.11 =

Observação
A discussão feita neste item vale apenas para números derivados de medições, que tem limitação de
precisão. Fora esta situação, os números podem ser considerados exatos, e neste caso 2010 não
pode ser nem 2000, nem 2020: é 2010 mesmo!
Entretanto, os computadores têm limite de memória e, portanto, limite de precisão. Dessa forma,
conhecer a quantidade de significativos numa representação e, principalmente, a forma como as
operações aritméticas são realizadas (aritmética de ponto-flutuante, a ser vista mais adiante) é
importante para o entendimento da propagação de erros no cálculo numérico, e de como fazer para
evitá-la.

2.2.2. Ponto Flutuante e Ponto Fixo


Na representação de um número, a posição do ponto decimal pode variar em relação à posição
de seus algarismos, mantendo-se o valor numérico ajustando-se a potência da base (no caso de
medições, deve-se manter também o mesmo número de algarismos significativos em cada
representação). A essa forma de representação variável se denomina ponto flutuante - Figura 16 -
pois no lugar de se deixar o ponto entre o algarismo das unidades e o da primeira casa decimal, o
ponto “flutua” entre todos os algarismos, sendo a potência da base (na Figura 16, a base é a
decimal) ajustada para manter o valor correto do número.
A representação numérica sem utilizar potências obriga o ponto decimal a ficar fixo entre a casa
das unidades e a da primeira casa decimal. Daí o termo ponto fixo - Figura 17.

A discussão deste item vale para qualquer base (B ≥ 2): em todas elas é possível a representação
em ponto fixo ou em ponto flutuante.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 12 -

48 8@ 8 8 8 48@ 8 ?8 4 8 8@ 8

6 $& & $&

Figura 16: Conceito de ponto flutuante.

48 8@ 8 8 8 48@ 8 ?8 4 8 8@ 8 84 8

6 $& & $& 6 $& "

Figura 17: Conceito de ponto fixo.

2.2.3. Sistema de Numeração


Estamos acostumados a trabalhar no sistema de numeração na base 10 (B = 10), dita decimal,
onde os dígitos variam de 0 até 9{8} - Figura 18. Nesse sistema, o número 121.764 significa:
1·102 + 2·101 + 1·100 + 7·10-1 + 6·10-2 + 4·10-3
Porém, qualquer base B ≥ 2 pode ser utilizada para representação numérica. O sistema binário
(B = 2) utiliza dois dígitos: 0 e 1. O sistema octal (B = 8) utiliza oito dígitos: 0, 1, 2, 3, 4, 5, 6 e 7. O
sistema hexadecimal (B = 16) utiliza dezesseis dígitos: 0,.., 9, A, B, C, D, E e F. No caso desse
sistema, as letras A, B,.., F correspondem, respectivamente, aos números 10, 11,.., 15 do sistema
decimal.
Mas por que se preocupar com esses outros sistemas de numeração? Pelo fato de que esses
outros sistemas são utilizados na representação dos dados nos diversos computadores.

,I . ,Q .
,; . ,< . ,L. ,G .
5 ,>. 8 ,;.
,> . 8 9 ; < ,>- .
=
,C . ,H .
A R
: &%98 &
%0 R 7
:% 95% 68
B %
8 4
95
% 64

Figura 18: Sistemas de numeração decimal (B=10) e binário (B=2).

Se B é a base escolhida, então o número


anan-1...a2a1a0 .a-1a-2...
representa, na base 10, o número:
anBn + an-1Bn-1 + ... + a2B2 + a1 B1 + a0B0 + a-1B-1 + a-2 B-2 + ...

8
Talvez porque tenhamos nas mãos dez dedos no total: quem já não os usou para facilitar a contagem de alguma coisa?
Para alguns personagens dos quadrinhos, que aparecem com 4 dedos em cada mão, provavelmente a base 8 (octal) fosse
a mais natural.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 13 -

onde os coeficientes ai são algarismos, ai ∈ Ζ {9}, tais que 0 ≤ ai < B.

Exercício 3: Conversão para a base decimal.


Converta os números para seus correspondentes na base 10:

a) (1101.011)2 =

b) (57.15)8 =

c) (A2.F1)16 =

d) (10.29)10 =

Como será visto no próximo item, qualquer informação é armazenada no computador na forma
binária. Dessa forma, no caso dos números, sempre há uma conversão de base - da decimal para a
binária - para que esse armazenamento seja possível. Para entender como isso é feito, será visto
como é realizada esta conversão através de um pequeno exemplo.

Conversão da parte inteira: Conversão da parte fracionária: multiplicações sucessivas por dois
múltiplas divisões inteiras por dois (B = 2), tomando como dígito a parte inteira do resultado da
(B = 2) até que o resultado seja multiplicação, e a parte fracionária desse resultado é utilizado para o
zero; em cada divisão, o resto cálculo do próximo dígito da mesma forma, até que a parte fracionária
(Ni mod B) é o dígito di. da multiplicação seja zero.

di = Ni mod B Valor a ser Parte fracionária:


Parte inteira
i Ni Ni+1 -i multiplicado por Resultado novamente
(B = 2) (di)
B=2 multiplicada
0 175 87 1 = d0 1 0,7265625 1,453125 1 = d-1 0,453125
1 87 43 1 = d1 2 0,453125 0,90625 0 = d-2 0,90625
2 43 21 1 = d2 3 0,90625 1,8125 1 = d-3 0,8125
3 21 10 1 = d3 4 0,8125 1,625 1 = d-4 0,625
4 10 5 0 = d4 5 0,625 1,25 1 = d-5 0,25
5 5 2 1 = d5 6 0,25 0,50 0 = d-6 0,50
6 2 1 0 = d6 7 0,50 1,00 1 = d-7 0,00
7 1 0 1 = d7 Parte Fracionária: 1011101
Parte inteira: 10101111

∴ (175.7265625)10 ↔ (10101111.1011101)2
Tabela 1: Conversão de um número decimal para a representação binária.

Seja a conversão do número 175.7265625 para a base 2. Esse número convertido pode ser
representado genericamente pela expressão dn dn-1 ·· d3 d2 d1 d0 . d-1 d-2 d-3 ·· d-m+1 d-m, onde di,
i = -m,..,n, é um dígito binário, valendo, portanto, 0 ou 1. Na Tabela 1 é mostrado o processo de
conversão. Note que o mesmo processo poderia ser utilizado para obter a representação em outras
bases, como na base octal ou na base hexadecimal: basta dividir/multiplicar por oito ou dezesseis,

9
Conjunto dos números inteiros.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 14 -

respectivamente. O fluxograma da Figura 19 descreve o algoritmo utilizado no preenchimento da


Tabela 1.

Início B: base para conversão


N10: número decimal a
ser convertido para i ← -1
N10, B, DAV base B
DAV: dígitos após a FRAC(N) = parte
F ← FRAC(N10)
i←0 vírgula fracionária de N

R ← F*B
N 0 ← INT(N10)
N 0 corresponde a N i
N 1 corresponde a N i+1 R>0
N 1 ← N 0 div B F NB
e
| i | ≤ DAV
di ← N 0 mod B V
A função Str converte INT(R) =
di ← INT(R)
um número em texto parte inteira
NB ← Str(di)
numérico. de R Fim
F F V
N1 > 0 i = -1
V NB ← NB + “.”
i ←i+ 1

N 0 ← N1 NB ← NB + Str(d i)

N 1 ← N 0 div B i ←i-1

di ← N 0 mod B F ← FRAC(R)

NB ← Str(di) + NB R ← F*B

Obtenção da parte inteira Obtenção da parte fracionária

Figura 19: Algoritmo de conversão de um número decimal para uma base B qualquer (B≠10, B ≥ 2).

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 15 -

Exercício 4: Conversão da base decimal para outras bases.


Converter o número 45.468 para as bases octal e hexadecimal.
Solução
Valor a ser Parte fracionária:
di = Ni mod B Parte inteira
i Ni Ni+1 -i multiplicado por Resultado novamente
(B = 8) (di)
B=8 multiplicada
0 =d0 1 =d-1

1 =d1 2 =d-2

2 =d2 3 =d-3

3 =d3 4 =d-4

4 =d4 5 =d-5

5 =d5 6 =d-6

6 =d6 7 =d-7

7 =d7 8 =d-8

8 =d8 9 =d-9

9 =d9 10 =d-10

Parte inteira: Parte Fracionária:


∴ (45.468)10 ↔

Valor a ser Parte fracionária:


di = Ni mod B Parte inteira
i Ni Ni+1 -i multiplicado por Resultado novamente
(B = 16) (di)
B = 16 multiplicada
0 = d0 1 = d-1
1 = d1 2 = d-2
2 = d2 3 = d-3
3 = d3 4 = d-4
4 = d4 5 = d-5
5 = d5 6 = d-6
6 = d6 7 = d-7
Parte inteira: Parte Fracionária:
∴ (45.468)10 ↔

2.3. Representação Interna dos Números na Máquina


2.3.1. As Informações no Computador: bits e bytes
A menor unidade utilizável para representação de informações em um computador é o bit, que
assume os valores 0 ou 1. Essa representação, dita binária, está relacionada com o fato da
informação ser manipulada/armazenada fisicamente no computador na forma de uma polaridade
elétrica (positiva ou negativa) ou magnética (norte ou sul dos imãs).

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 16 -

Como um único bit é insuficiente para representar informações mais complexas, eles são
agrupados e combinados. Num primeiro agrupamento, eles são reunidos em conjuntos de oito,
recebendo a denominação de byte (8 bits). Quando nos referimos às informações armazenadas em
um computador utilizamos, portanto, o termo byte. Tendo em vista que a unidade byte é
consideravelmente pequena quando indicamos valores mais extensos, utilizamos múltiplos do byte.
A Figura 20 ilustra o exposto nesse parágrafo.

MÚLTIPLOS DE UM BYTE:
:(
Figura 20: A informação
1 Kilobyte = 1 Kb = 1024 bytes : básica do computador é o
bit, que pode ser agrupado
1 Megabyte = 1 Mb = 1024 Kb
em bytes (= 8 bits).
8 8 8
1 Gigabyte = 1 Gb = 1024 Mb

Portanto, é "natural" para o computador trabalhar com a representação dita binária, ou na base
B = 2, ou em outra qualquer derivada da binária, como a octal (B = 8 = 23) ou a hexadecimal
(B = 16 = 24). Assim sendo, o número binário 1001.101 representa o seguinte número na base
decimal:
1·23 + 0·22 + 0·21 + 1·20 + 1·2-1 + 0·2-2 + 1·2-3 = 9.625

2.3.2. Normalização
Os conceitos de ponto flutuante, algarismos significativos e de sistemas de numeração, vistos
anteriormente, serão úteis agora no entendimento do que significa a representação normalizada dos
números no computador.
Para representar internamente os números, os computadores utilizam a seguinte normalização10:

± 0 . d1 d2 ... dt · Be
onde di ∈ Ζ, d1 ≠ 0, 0 ≤ di < B, i = 1, 2, ...,t e m ≤ e ≤ M.
O termo 0. d1 d2 ... dt é denominado mantissa, B é a base, e o expoente, m o limite inferior do
expoente, M o limite superior do expoente e t o número de algarismos significativos. Essa é a
chamada representação em ponto flutuante na base B com t algarismos significativos. O objetivo da
normalização é aumentar a exatidão dos números armazenados eliminando os zeros à esquerda na
mantissa (não significativos) depois do ponto decimal, considerando, assim, o máximo de algarismos
significativos. Isso é feito para otimizar o uso da memória do computador.

Computador B t m M tdecimal
IBM/360 16 6 -64 63 7
IBM/370 16 14 -64 63 16 Tabela 2: sistemas de
Burroughs B5500 8 13 -51 77 11 representação em
Burroughs B6700 8 13 -63 63 11 ponto flutuante para
Hewlett-Packard 45 10 10 -98 100 10 alguns computadores
mais antigos.
PDP-11 2 24 -128 127 7
Texas SR-5X 10 12 -98 100 12
Quartzil QI 800 2 24 -127 127 7

10
Note que se trata de uma representação em ponto flutuante (ver item 2.2.2).

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 17 -

Na Tabela 2 tem-se exemplos dos sistemas de representação para computadores mais antigos.
Atualmente as linguagens de programação permitem definir vários tipos de números reais, cada tipo
com um número de significativos e expoentes específicos para a sua representação (ver Tabela 5),
sempre relacionados com a quantidade de memória (bytes) reservados para armazená-los.
Como se pode notar na Tabela 2, muitos computadores tem seu sistemas de representação
indicados em bases que não a decimal. Para se avaliar a precisão (ver item 0, página 23) de um
sistema de representação é preciso determinar o número de casas decimais exatas da mantissa, e
isto pode ser estimado através do seguinte cálculo11 (última coluna da Tabela 2):
tdecimal = INT(log10(B-t)) (9)

O valor B-t é uma aproximação para o menor valor representável pela mantissa quando o
expoente da base é zero. Numa máquina com B = 2 e t = 10, a precisão da mantissa é da ordem
2-10 ≈ 10-3. Logo, o número de dígitos significativos decimais representáveis é 3.

2.3.3. A Natureza Discreta da Representação Numérica na Máquina


Como já mencionado anteriormente, os recursos disponibilizados pelo computador são finitos,
incluindo a memória para armazenar os dados, como números. Para entender o que isso significa em
relação à representação numérica, analisemos os seguintes números normalizados na base 2
(binários) com t = 8:
n1 = 0.11100110·22, cujo correspondente na base 10 é 3.593750;
n2 = 0.11100111·22, cujo correspondente na base 10 é 3.609375.
Note que, na base binária com t = 8, n1 e n2 são dois números consecutivos, ou seja, não é
possível representar nenhum outro número entre eles. O número 3.6, por exemplo, não tem
representação exata. O que se pode argumentar é que o valor de t (quantidade de algarismos
significativos) utilizado é pequeno. Porém, esse valor será sempre finito, o que leva a concluir que o
computador só consegue representar os números de forma discreta (não contínua) dentro de uma
faixa de valores.
Como exemplo, seja o caso onde t = 2, B = 10, m = 0 e M = 4. Em cada intervalo [10i, 10i+1),
0 ≤ i ≤ 3, é possível representar 90 números diferentes. Para i = 0, podemos representar o número n
no intervalo [1, 10) como mostrado na Figura 21.

1
n = 0.d1d2 ·10 , n ∈ [1.0, 10) 0.10 ·10
1
0.11 ·10
1
··· 0.19 ·10
1

1 1 1
0.20 ·10 0.21 ·10 ··· 0.29 ·10
: : : :
1 1 1
0.90 ·10 0.91 ·10 ··· 0.99 ·10

Figura 21: Representação discreta dos números normalizados em ponto flutuante.

Ou seja, qualquer que seja o computador, a representação dos números na sua memória limitada
sempre será discreta, conforme ilustrado na Figura 22.

11
A função INT(X) retorna a parte inteira de X. Exemplo: INT(3.12) = 3.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 18 -

%S

"∞ ∞
-

%S $ 6 &

M
% '
-

Figura 22: A representação dos números no computador sempre será discreta.

Um outro exemplo irá ilustrar que, além da representação ser discreta, a distribuição dos números
representáveis não é uniforme. Seja o caso onde t = 2, B = 2, m = -1 e M = 2. Como os números são
normalizados, os valores diferentes de zero serão da forma ±0.10 2e ou ±0.11 2e, -1 ≤ e ≤ 2. Assim
sendo, o universo de números (não nulos positivos) representáveis neste caso é mostrado na
Tabela 3, colocado graficamente também na Figura 23.

Base 2 Na base 10 Base 2 Na base 10


-1 -1
0.10 2 1/4 0.11 2 3/8 Tabela 3: números positivos diferentes
0.10 2
0
1/2 0.11 2
0
3/4 de zero representáveis para t = 2,
1 1 B = 2, m = -1 e M = 2.
0.10 2 1 0.11 2 3/2
2 2
0.10 2 2 0.11 2 3

> I > I I
- > ; I
< Q ; < ;

Figura 23: Todos os números representáveis para t = 2, B = 2, m = -1 e M = 2. A


representação dos números no computador é discreta, e com intervalos não
regulares entre eles.

Note que o conceito de existir sempre um número real entre outros dois está longe de ser válido
para os números representados em ponto flutuante com t significativos.
Quando um número é muito grande (como 4 na representação em questão, como o resultado da
operação de multiplicação de 2 por 2), ele não pode ser representado internamente no computador.
Nessa situação tem-se o que se denomina overflow (estouro de capacidade). Quando uma operação
qualquer resulta em um número muito pequeno para ser representado (como 1/8 = 0.125), tem-se o
underflow - Figura 24. O resultado da operação geralmente é um aviso de erro para o overflow; o
underflow pode ser tratado, por exemplo, atribuindo-se como resultado para a operação o valor zero.
Mas tudo isto dependerá do software/computador utilizado.
Mas esta limitação de representação tem algum impacto no cálculo numérico realizado no
computador?
Com certeza! No exemplo do item 3.4.2 Instabilidade dos Algoritmos, mais adiante, será possível
ver o impacto disso num cálculo extremamente simples: a solução de uma equação de 2o grau.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 19 -

/ A" )C B / A" )C B
/ A" 3$ B

> >
"I "; "> − - > ; I
< <

Figura 24: Valores muito grandes, ou muito pequenos (exceto o zero), em módulo também não podem
ser representados no computador.

2.3.4. Números Reais nas Linguagens de Programação


Métodos numéricos são implementados através do uso de linguagens de programação. Todo e
qualquer dado manipulado em um programa (software) é armazenado em uma variável, que pode
ser de diversos tipos. A definição do tipo básico de uma variável depende principalmente de seu
significado físico e da precisão do cálculo que se pretende realizar. Algumas vezes, pode depender
também da disponibilidade de memória (RAM) no computador.
Conforme a combinação dos fatores citados acima, é possível, na maioria das linguagens de
programação, definir não só o tipo básico (por exemplo, número real ou de ponto flutuante, inteiro,
etc.), mas também um subtipo desse tipo básico. Isso é exemplificado para a linguagem C na
Tabela 4 e Tabela 5. Nessas tabelas, cada subtipo do tipo básico real se diferencia pela quantidade
de bytes reservados para guardar o número: quanto mais bytes, maior a faixa de valores
representada. Essa representação segue a norma IEEE-754[6]. Apenas como um breve exemplo, na
Figura 25 é mostrada a representação interna do computador para um número de ponto-flutuante de
precisão simples (correspondente ao tipo float do C) normalizado na base binária, conforme o citado
padrão.

Tipo Básico Tipo do C Bytes Faixa de Valores Exemplo


-38 38 3
float 4 3.4·10 3.4·10 (7 dígitos) 0.5315546·10
-308 308 3
Real double 8 1.7·10 1.7·10 (15 dígitos) 0.531554593810018·10
-4932 4932 3
long double 10 1.2·10 1.2·10 (19 dígitos) 0.5315545938100182118·10
Tabela 4: representação para os diversos tipos de número reais na linguagem C.

Tipo real do C t m M
Tabela 5: Parâmetros da normalização dos
float 7 -38 38 tipos reais da linguagem C na base 10
double 15 -308 308 (B = 10), conforme norma IEEE-754 .
[6]

long double 19 -4932 4932

I; : / < :( , 8 0 !. 0 6 >
%S +I4C
->------->>---------------------

%S +≅ I4<T
>-IQ
% ,;I : . ->>>>>>>->>>>>>>>>>>>>>>>>>>>>>>

'8 % ,Q : .
% %S ,> : . % LC< %& %U :

Figura 25: Representação de números em ponto flutuante com precisão simples, conforme a
norma IEEE-754.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 20 -

Não é objetivo entrar em maiores detalhes do que significa essa representação, mas o estudante
mais curioso pode consultar a referência indicada na própria Figura 25.

2.4. Arredondamento e Truncamento


Pela natureza finita e discreta da representação numérica nos computadores, existe uma limitação
na quantidade de números que podem ser armazenados na máquina. Para entender como este
problema é tratado, seja um computador que trabalhe com base B = 10 (decimal) e número de
algarismos significativos t = 3. Nesse caso, como os números 4.323 ou 5.347 são armazenados,
visto que ambos possuem 4 algarismos significativos?
Nessa situação, números entre 4.32 e 4.33, ou entre 5.34 e 5.35, não podem ser representados,
tendo então que ser aproximados. Para realizar esta aproximação, duas estratégias podem ser
adotadas: o arredondamento12 ou o truncamento. Os significados dessas estratégias podem ser
entendidos a partir da Tabela 6. A primeira delas analisa o algarismo a ser descartado para
eventualmente alterar o algarismo imediatamente anterior, e a segunda simplesmente descarta o
algarismo.

Representação obtida por Representação obtida por


Número exato
arredondamento truncamento
4.323 4.32 4.32
5.347 5.35 5.34
Tabela 6: Estratégias para a representação de números no computador.

Nos computadores, a aritmética baseada em arredondamento é mais precisa do que a utilizando o


truncamento, porém exige mais tempo de computação. Geralmente, o tipo de hardware e o software
influenciam na estratégia adotada.

2.5. Aritmética de Ponto Flutuante


Como conseqüência do processo de arredondamento/truncamento, a aritmética com números
representados em ponto flutuante não ocorre exatamente como a aritmética tradicional, pois algumas
propriedades, como a associativa e a distributiva na adição/subtração, não são verificadas, como
poderá ser constatado no Exemplo 1 e no Exercício 5, a seguir.
As operações em ponto flutuante no computador seguem as regras das operações considerando
algarismos significativos (item Operações Aritméticas, página 9), sendo a quantidade de algarismos
significativos considerados definida pela normalização adotada no equipamento. Entretanto, há uma
peculiaridade importante: após cada operação, o resultado deve ser colocado imediatamente na
forma normalizada utilizada antes de se realizar a próxima operação, pois é assim que ocorre na
máquina digital.

12
Para o arredondamento usaremos aqui a seguinte estratégia: seja ...XY os últimos algarismos de um número que deverá
ser escrito até a posição referente ao algarismo X. Se 0<Y<4, então X permanece (1.32 → 1.3; 342 → 340); se 5≤Y<9,
então X é substituído por (X+1) (1.37 → 1.4; 347 → 350). Na nota de rodapé 7, na página 10, uma outra estratégia é
apresentada, mas a deixaremos de lado.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 21 -

Exemplo 1: Aritmética em ponto-flutuante.


Considerando base decimal (B = 10) e dois algarismos significativos (t = 2), as expressões abaixo
fornecem os seguintes resultados, lembrando que o armazenamento do número é feito conforme a
normalização neste formato especificado, e que o arredondamento deve sempre ser feito após cada
operação.
normalizaç ão
a) 372 - 371    → .37·103 - .37·103 = 0.00·100
normalizaç ão
b) 372 - 7    → .37·103 - .01·103 = .36·103
normalizaç ão
c) 372 - 4    → .37·103 - .00·103 = .37·103
normalizaç ão
d) (372 - 3) - 3    → (.37·103 - .00·103) - .00·103 = .37·103
normalizaç ão normalizaç ão
e) 372 - (3 + 3)    → .37·103 - 6·100    → .37·103 - .01·103 = .36·103
normalizaç ão
f) 372 x 0.0127    → .37·103 - .13·10-1 = .48·101

Exercício 5: Aritmética em ponto-flutuante.


Considerando base decimal (B = 10) e três algarismos significativos (t = 3), resolva as seguintes
expressões, lembrando que o arredondamento deve sempre ser feito após cada operação.

a) (4.26 + 9.24) + 5.04 =

b) 4.26 + (9.24 + 5.04) =

c) (4210 - 4.99) - 0.02 =

d) 4210 - (4.99 + 0.02) =

0.123
e) · 84.9 =
7.97

0.123 ⋅ 84.9
f) =
7.97
g) 15.9 · (4.99 + 0.02) =

h) (15.9 · 4.99) + (15.9 · 0.02) =

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 22 -

3. PROBLEMAS DA SOLUÇÃO NUMÉRICA


3.1. Origens
Os principais inconvenientes que podem ocorrer ao se proceder à solução numérica de problemas
estão associados à limitação da representação numérica na máquina digital. Como visto no item
anterior, sendo o computador uma máquina que tem uma capacidade limitada para armazenar
números, informações são fatalmente perdidas quando por ele manipuladas. Nesta limitação reside a
origem principal dos erros que surgem durante a obtenção da solução numérica, mas ela não é a
única. Além da forma como os números são tratados, às vezes a própria natureza do problema, ou a
instabilidade do algoritmo da solução, podem levar à obtenção de resultados bem aquém da
realidade.
Neste item são analisados alguns fatores que podem levar à geração de erros no processo de
obtenção da solução numérica, e quais providências podem ser tomadas, quando possíveis, para
evitar tais erros.

3.2. Precisão e Exatidão - O Épsilon de Máquina


O resultado de um cálculo numa máquina digital pode ser bastante preciso, mas não exato. Por
outro lado, um resultado obtido numa máquina pode ser menos preciso do que o de outra, porém
mais exato. Mas afinal, qual é a diferença entre precisão e exatidão?
A precisão de uma máquina digital é definida como o número de dígitos da mantissa (ver
item 2.3.2) utilizado na representação numérica. A precisão é, portanto, algo claro, invariável para
uma mesma máquina. A exatidão é uma medida da perfeição do resultado, ou seja, o grau da
proximidade do valor real. Além de depender da precisão da máquina, também depende do método
utilizado para se obter o resultado.
Na Tabela 7 e na Figura 26 pode ser visualizada a diferença entre os dois conceitos acima. Os
três métodos utilizados para o cálculo do valor aproximado de π apresentam a mesma precisão,
porém a qualidade dos resultados, ou exatidão, varia de um para outro: o método 1 fornece um
resultado mais exato do que o método 2, cujo resultado é mais exato do que o fornecido pelo
método 3.

Método π aproximado Precisão |Erro relativo| (%)


-3
1 3.1413 5 significativos ≈ 9·10
-4
2 3.1416 5 significativos ≈ 2·10
-2
3 3.1419 5 significativos ≈ 1·10
Tabela 7: Precisão e exatidão para algoritmos de calculo de π.

8 8 8
%' %' '

Figura 26: Conceito de precisão e exatidão.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 23 -

Para se ter uma idéia da precisão de uma máquina, calcula-se um parâmetro denominado épsilon
de máquina, ε, que é o menor valor em ponto flutuante tal que:

1+ε>1

O valor de ε pode ser estimado através de pequenos programas, como mostrado na Figura 27,
onde o ε foi calculado para a planilha Excel em um computador pessoal comum. Os tipos reais do
Excel de precisão simples (single) e dupla (double) utilizam espaço de armazenamento diferente no
computador, e por isso os resultados são distintos.

εsingle ≈ 6.0·10-8
εdouble ≈ 1.1·10-16
Function epsilon_s() As Single Function epsilon_d() As Double
Dim eps As Single Dim eps As Double
eps = 1 eps = 1
While (eps + 1 > 1) While (eps + 1 > 1)
eps = eps / 2 eps = eps / 2
Wend Wend
epsilon_s = eps epsilon_d = eps
End Function End Function
Figura 27: cálculo do épsilon de máquina da planilha Excel para precisão simples (single) e dupla
(double), "rodando" em um PC com processador Pentium.

3.3. Erros
3.3.1. Medição do Erro: Erro Absoluto e Erro Relativo
Seja x um valor exato, e ' uma aproximação para esse valor. Definem-se os seguintes erros:
x−x
Erro absoluto: EA = x − x Erro relativo: ER=
x
Os erros relativos são mais utilizados que os erros absolutos. É mais significativo dizer que o erro
relativo é pequeno ou grande de acordo com a comparação com 1.0, pois quando ER = 1.0 tem-se
que o erro absoluto é do mesmo tamanho que o número que está sendo aproximado.
Exemplo 2: Cálculo de erros (1).
Foi realizado o cálculo aproximado, através de um método numérico, do valor de uma grandeza z,
obtendo =1.231. O valor exato é z = 1.118. Qual é o erro absoluto e o erro relativo?
Solução

E A =| z − z |=| 1.118 − 1.231 |= 0.113


| z − z | | 1.118 − 1.231 |
ER = = = 10.1%
|z| | 1.118 |

Exemplo 3: Cálculo de erros (2).

Se z = 0.00005 e =0.00004 é uma aproximação para z, qual a qualidade desta aproximação?

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 24 -

Solução

EA = | z − z | = | 0.00005 − 0.00004 | = 0.00001


Não há dúvida que o erro absoluto é pequeno, mas o erro relativo é:
| z − z | | 0.00005 − 0.00004 |
ER= = = 0.2 = 20%
|z| | 0.00005 |

Pela magnitude do erro relativo, não se pode dizer que =0.00004 é uma boa aproximação para
z = 0.00005.

3.3.2. Tipos de Erros


Existem vários tipos de erros, e várias são as suas causas. Para o contexto de nosso curso, pode-
se citar três tipos: os inerentes, os de discretização ou aproximação, e os de arredondamento (ou
truncamento).
Os erros inerentes aparecem na criação ou simplificação de um modelo matemático de
determinado sistema (como no caso de lançamentos de projéteis sem considerar a resistência do ar),
ou ainda devido a erros em medidas experimentais, como tempo, distância ou temperatura,
realizados por instrumentos com precisão limitada. São erros que o "analista numérico" não tem
como evitar ou minimizar seus efeitos.
Os erros de discretização, ou de aproximação, são erros
n eaprox |e - eaprox|
cometidos quando se substitui qualquer processo infinito por um
processo finito ou discreto. Seja, por exemplo, o cálculo da 1 2,000000 0,718282
constante e (número de Neper), dada por: 2 2,500000 0,218282
3 2,666667 0,051615
∞ 1 4 2,708333 0,009948
e=
k = 0 k! 5 2,716667 0,001615
10 2,718282 0,000000
A tabela ao lado ilustra o erro cometido quando o número de
termos considerado é finito.
O erros de arredondamento (ou truncamento) surgem quando trabalhamos com máquinas digitais
para representar os números reais, como já visto no item 2.4 Arredondamento e Truncamento. O
efeito desses erros serão vistos a seguir.

3.3.3. Propagação de Erros


Imagine que, no mesmo computador do item 2.4 (B = 10 e t = 3), seja calculada a seguinte
expressão: 4.231/(2.313-2.327). Na Tabela 8 são mostrados os resultados para esta expressão
considerando o cálculo exato e o cálculo real (ponto flutuante) realizado nessa máquina. Como é
possível notar, devido à limitação da representação interna dos números devido ao truncamento ou
ao arredondamento, estes pequenos erros absolutos podem se propagar em operações de ponto
flutuante, como na subtração no denominador da expressão, e isto acaba afetando sensivelmente o
resultado final da expressão.

Exato Com Arredondamento Com Truncamento


Resultado -302 -212 -423
(2.313-2.327) -0.014 -0.02 -0.01
Erro absoluto 0 90 121
Erro relativo 0% 30% 40%
Tabela 8: Resultados para o cálculo da expressão 4.231/(2.313-2.327).

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 25 -

Desta constatação percebe-se que algoritmos numéricos que envolvem subtração em algum
momento podem ter resultados completamente enganosos quando os operandos forem muito
próximos entre si. Denominado de cancelamento subtrativo em alguns livros, este tipo de fenômeno
é a maior fonte de erro no cálculo numérico, e pode ocasionar instabilidade nos algoritmos, como
será visto a seguir.

3.4. Instabilidade
3.4.1. O que é?
Problemas de instabilidade estão relacionados com a forma como o resultado da solução de um
problema é afetado quando algum parâmetro é alterado. Este parâmetro pode ser, por exemplo, um
dado de entrada, ou o coeficiente de uma equação. A instabilidade pode estar associada ao
algoritmo da solução do problema ("caminho da solução"), ou ao problema em si. Serão vistos
exemplos desses dois tipos a seguir.

3.4.2. Instabilidade dos Algoritmos


Seja a solução de um problema conhecido: cálculo das raízes de uma equação de segundo grau
através da fórmula de Bhaskara. A equação nesse caso é:
ax2 + bx + c = 0
A solução é dada pelas expressões

−b− ∆ −b+ ∆
x1 = e x2 =
2a 2a
quando ∆ ≥ 0, onde ∆ = b2 - 4ac; ∆ denomina-se discriminante.
O trecho de um programa de computador que realiza esse cálculo, em FORTRAN13, é:

RAIZDISC = SQRT(B*B-4*A*C)
X1 = (-B-RAIZSDISC)/(2.*A) (A1)
X2 = (-B+RAIZSDISC)/(2.*A)

B RAIZDISC X2 Valor Exato Erro relativo (%)


5.2123 4.3781 -.4171 -.41708 .004
11.111 10.745 -.183 -.18302 .01
12.123 11.789 -.167 -.16728 .16
52.123 52.046 -.0385 -.038399 2.9
121.23 121.20 -.015 -.016500 9.1
521.23 521.22 -.005 -.0038371 30.3
1212.3 1212.3 0 -.0016498 100.0
Tabela 9: Solução da equação de segundo grau, em computador, utilizando a
seqüência de comandos (A1).

Vamos supor que tal programa seja executado em uma máquina onde os números são
representados por 5 algarismos significativos e seja utilizada aritmética de ponto-flutuante e
estratégia de arredondamento, com A = 1, C = 2 e B variando conforme mostrado na Tabela 9. Note
que o erro no cálculo de X2 é da ordem de 100% para B ≅ 1000. Ou seja, o algoritmo de Baskara

13
FORmula TRANslator; linguagem criada nos anos 60 e bastante utilizada até hoje em organizações de pesquisa, como a
NASA. Insuperável em cálculos matemáticos complexos.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 26 -

implementado como acima é instável quando o valor de B é muito próximo do valor da raiz do
discriminante, RAIZDISC (∆1/2).
Essa perda de exatidão na solução da equação pode ser evitada de algumas maneiras. Uma das
mais simples é alterar o método levando em conta a seguinte relação entre as raízes [8]:
c
x1·x2 =
a
Utilizando essa relação, o método de solução pode ser mudado e gerar o seguinte conjunto de
instruções, onde a subtração de números muito próximos entre si (ver item 3.3.2) foi eliminada14:

RAIZDISC = SQRT(B*B-4*A*C)
IF (B.LT.0) THEN
X1 = (-B+RAIZDISC)/(2.*A)
(A2)
ELSE
X1 = (-B-RAIZDISC)/(2.*A)
X2 = (C/A)/X1

O programa para solução da equação de segundo grau utilizando o conjunto de instruções (A2),
aplicado à equação x2 + 1212.3x + 2 = 0 e rodando na mesma máquina, fornece como resultado
X1 = -1212.3 e X2 = -0.0016498. Esses são os valores arredondados da solução exata; ou seja, o
erro da ordem de 100% foi eliminado!
Desse exemplo pode-se tirar duas principais conclusões:
1) erros provenientes de arredondamento (ou truncamento), como o cancelamento subtrativo,
podem arruinar até mesmo um cálculo curto e simples;
2) uma simples alteração no método pode eliminar os efeitos adversos desses erros e a
instabilidade do algoritmo.

3.4.3. Instabilidade de Problemas


Em poucas palavras, um problema possui uma solução estável se pequenas alterações nos
parâmetros envolvidos na solução acarretam apenas pequenas variações no resultado final. Em
contra partida, se pequenas alterações nos parâmetros envolvidos na solução acarretam grandes (às
vezes, catastróficas) variações no resultado final, dizemos que o problema é instável.
Um exemplo clássico é a determinação das raízes do seguinte polinômio:
p(x) = x20 - 210x19 + ... = (x - 1)(x - 2)(x - 3)...(x - 19)(x - 20)
É evidente que as raízes são 1, 2, 3,..., 19 e 20, estando todas bem separadas uma das outras.
Seja agora o seguinte polinômio p'(x), dado por:
p'(x) = p(x) +2-23·210x19
A diferença deste polinômio p'(x) em relação a p(x) é apenas uma alteração da ordem de 2-23 no
coeficiente de x19 - passou de -210 para -210(1 + 2-23). A solução de p'(x) = 0 em um computador
com precisão decimal de 27 significativos forneceu as seguintes raízes:

14
Em FORTRAN, (B.LT.0) significa (B<0), ou B "Less Than" 0.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 27 -

r1 = 1.000 000 000 r10, r11 = 10.095 266 145 ± 0.643 500 904i
r2 = 2.000 000 000 r12, r13 = 11.793 633 881 ± 1.652 239 728i
r3 = 3.000 000 000 r14, r15 = 13.992 358 137 ± 2.518 830 070i
r4 = 4.000 000 000 r16, r17 = 16.730 737 466 ± 2.812 624 894i
r5 = 4.999 999 928 r18, r19 = 19.502 439 400 ± 1.940 330 347i
r6 = 6.000 006 944
r7 = 6.999 967 234
r8 = 8.007 267 603
r9 = 8.917 250 249
r20 = 20.846 908 101

O resultado obtido para a solução de p'(x) é completamente inesperado, pois para uma variação
insignificante de apenas um coeficiente do polinômio original p(x), houve grande mudanças nas
raízes. Um problema com este tipo de comportamento na sua solução é dito mal-condicionado.
Outra classe de problemas mal-condicionados está associada à solução de sistemas lineares de
equações onde o determinante da matriz dos coeficientes é próximo de zero. Para um sistema de
ordem dois, que representa duas retas no plano, isto significa duas retas quase paralelas: qualquer
variação na inclinação de uma delas implica num "passeio" muito grande da interseção entre elas,
que representa a solução do sistema.

4. REPRESENTAÇÃO DOS ALGORITMOS NUMÉRICOS - O FLUXOGRAMA


Para apresentar muitos dos algoritmos numéricos que Blocos do Fluxograma
serão vistos nos próximos capítulos será utilizada uma
representação gráfica: o fluxograma. Terminador

Entrada de dados
Um fluxograma descreve o fluxo de controle de um
algoritmo através de setas indicando a seqüência de Saída de dados
ações ou tarefas (representadas por retângulos), pontos
Ação
de tomada de decisão (representados por losangos) e
laços de repetição (representados por hexágonos). O Repetição
fluxograma também é a maneira mais prática de
Alternativa
demonstrar o raciocínio empregado no desenvolvimento
de um programa. Na Figura 28 podem ser vistos os
blocos básicos utilizados na construção de um
Figura 28: blocos básicos do fluxograma.
fluxograma.
Para exemplificar o uso de fluxogramas para descrever algoritmos numéricos, a Figura 29 traz
duas versões do fluxograma utilizado para cálculo do número de Neper (e = 2,71828...). Estes
fluxogramas ilustram duas formas da estrutura de controle de repetição, que na maioria das
linguagens de programação correspondem aos comandos while e for.
Na Figura 30 um outro fluxograma exemplifica o uso das estruturas de seleção, ou alternativa, que
nas linguagens de programação corresponde ao comando if..then..else.

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 28 -

início

n início
início
e 0 n
a, b, c
k 0 e 0

F V a>bea>c F
n≥k para k de 0 até n
a V b>c F
V
e e + 1/fatorial(k)
e e + 1/fatorial(k) b c

k k+1 e

fim Fim
e

fim

Figura 29: Duas versões do algoritmo para cálculo do número Figura 30: Algoritmo que determina o
de Neper - e. O que muda são as estruturas de repetição. maior entre três números dados.

5. COMENTÁRIO FINAL
Os métodos numéricos que serão vistos nesse curso certamente foram desenvolvidos tendo em
mente os aspectos abordados nesse capítulo, especialmente no que tange a propagação de erros e
estabilidade dos algoritmos. Dessa forma, ao se resolver numericamente um problema sempre se
deve estar atento às limitações impostas pelo método numérico e pelo equipamento utilizado.

6. REFERÊNCIAS DO CAPÍTULO
[1] Humes, A. F. P. C et al.: "Noções de Cálculo Numérico", Makron Books do Brasil Editora Ltda.,
São Paulo, 1984.
[2] Marins, J. M. e Cláudio, D. M.: Cálculo Numérico Computacional", 3a edição, Editora Atlas S.A.,
São Paulo, 2000.
[3] Campos Fo, F. F.: "Algoritmo Numéricos", Livros Técnicos e Científicos Editora S.A., Rio de
Janeiro, 2001.
[4] Barros, L. C. et all.: "Cálculo Numérico (com aplicações)", 3a edição, Editora Harbra Ltda, São
Paulo, 1987.
[5] Halliday, D. e Resnick, R.: "Física: Mecânica, Acústica e Calor - Parte 1", Ao Livro Técnico S.A.,
Rio de Jameiro, 1966.
[6] IEEE Standard 754 Floating Point Numbers
(http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html)
[7] Rice, J.R.: "Numerical Methods, Software, and Analysis", McGraw-Hill Book Company, 1983.
[8] Bóscolo, A. e Castrucci, B.: "Matemática", Editora FTD S.A., São Paulo, 1972

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak


Tópicos Preliminares - 29 -

7. EXERCÍCIOS DO CAPÍTULO
1. Converta os seguintes números binários para 7. Deseja-se calcular o seguinte somatório:
a forma decimal: 10 1
a) x = (101101)2 b) y = (110101011)2 S= k
k =1 2
c) z - (0.1101)2 d) w = (0.111111101)2
a) Represente cada termo da soma através da
2. Dado o número 2.47 na base 10, qual é a sua representação decimal exata e some.
representação exata na base 2 usando b) Represente cada termo da soma em ponto
8 algarismos significativos? Esta representação flutuante com 3 algarismos significativos.
é exata? Some da direita para a esquerda. Some da
esquerda para a direita. Algo estranho no
3. Represente os números que se seguem em resultado?
ponto flutuante com 5 algarismos significativos
usando a base 10. Se a representação não for
exata, dê as duas representações: truncada e
arredondada.
Exemplo:
Representação Representação
Número
truncada arrendondada
1 1
10/6 0.16666x10 0.16667x10

a) 2 b) π c) 100/7

d) 1/9 e) -1/7
4. Converta os números abaixo para as bases
binária, octal e hexadecimal. Use, no máximo,
dez algarismos após a vírgula.
a) 3.129 b) -12.989 c) 3.14159
5. Considere a representação normalizada em
ponto flutuante com 2 algarismos significativos,
na base 2 e com expoente variando entre -2 e 2.
Determine o conjunto de números assim
representáveis.

6. Calcule o valor das expressões que se


seguem utilizando aritmética de ponto flutuante
com 3 algarismos significativos utilizando as
duas estratégias: arredondamento e
truncamento.
a) 19.3+1.07-10.3 b) (365+0.7)+0.5
c) 27.2*1.3-327*0.00251 d) 365+(0.7+0.5)
10.1 − 3.1 * 8.2 1 1 1
e) f) + +
14.1 + 7.09 * 3.2 2 3 3 3

Cálculo Numérico - Versão 1 - Rev. 2005a Professor Dalton Vinicius Kozak

S-ar putea să vă placă și