Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice de contedos
3.Notao algortmica...............................................................................4
3.1.Estrutura do algoritmo..................................................................................4
3.2.Variveis e comentrios.................................................................................5
3.3.Expresses e comando de atribuio.................................................................5
3.3.1.Expresses aritmticas............................................................................5
3.3.2.Expresses lgicas..................................................................................6
3.3.3.Expresses literais.................................................................................7
3.4.Comandos de entrada e sada..........................................................................7
3.5.Estruturas condicionais..................................................................................7
3.5.1.Estrutura condicional simples....................................................................7
3.5.2.Estrutura condicional composta.................................................................7
3.5.3.Estruturas de repetio...........................................................................8
-i-
ndice de contedos
3.6.Falha no algoritmo.......................................................................................9
3.7.Exemplo de algoritmo...................................................................................9
4.Notao matemtica.............................................................................10
5.Complexidade computacional..................................................................11
6.Representao de nmeros.....................................................................13
6.1.Representao de nmeros em diferentes bases..................................................13
6.1.1.Representao de nmeros inteiros e converses de base................................13
6.1.1.1.Representao de nmeros inteiros.....................................................14
6.1.1.2.Converso pelo mtodo das divises sucessivas.......................................14
6.1.2.Representao de nmeros reais e converses de base....................................15
6.1.2.1.Representao em formato de ponto fixo..............................................15
6.1.2.2.Representao no formato de ponto flutuante........................................16
6.1.2.3.Aritmtica de ponto flutuante............................................................17
6.1.3.Converso de nmeros inteiros da base b para a base decimal...........................19
6.1.3.1.Algoritmo de Horner........................................................................20
6.1.3.2.Diviso de Ruffini...........................................................................21
6.1.4.Converso de nmeros fracionrios da base b para a base decimal.....................21
6.1.4.1.Algoritmo de Horner........................................................................22
6.1.4.2.Diviso de Ruffini...........................................................................22
6.1.5.Nmero binrio infinito..........................................................................23
6.2.Operaes com nmeros binrios....................................................................24
6.2.1.Adio binria.....................................................................................24
6.2.2.Subtrao binria.................................................................................25
6.2.3.Multiplicao binria.............................................................................26
6.2.4.Diviso binria.....................................................................................27
6.3.Representao de nmeros em computadores digitais...........................................27
6.3.1.Representao de nmeros inteiros...........................................................27
6.3.2.Representao de nmeros reais...............................................................31
- ii -
ndice de contedos
7.Erros.................................................................................................35
7.1.Fontes de erros e incertezas..........................................................................35
7.2.Preciso e exatido.....................................................................................36
7.3.Tipos de erros...........................................................................................37
7.3.1.Erro de formulao ou de modelao.........................................................37
7.3.2.Erros iniciais (incertezas dos dados do modelo).............................................37
7.3.3.Erro grosseiro......................................................................................37
7.3.4.Erro de arredondamento........................................................................37
7.3.5.Erro de truncatura................................................................................38
7.4.Valores aproximados e erros..........................................................................38
7.4.1.Erro absoluto......................................................................................38
7.4.2.Erro relativo.......................................................................................39
7.4.3.Frmula fundamental dos erros................................................................40
7.4.4.Nmero de dgitos significativos...............................................................41
7.5.Erros de arredondamento.............................................................................42
7.5.1.Arredondamento por defeito (ou corte do nmero)........................................43
7.5.2.Arredondamento simtrico......................................................................44
7.5.3.Erros de arredondamento na lgebra de ponto flutuante..................................45
7.5.3.1.Adio........................................................................................46
7.5.3.2.Subtrao....................................................................................46
7.5.3.3.Multiplicao................................................................................47
7.5.3.4.Diviso........................................................................................47
7.6.Erros de truncatura.....................................................................................47
7.6.1.Clculo de valores de funes transcendentes..............................................47
7.6.2.Discretizao......................................................................................48
7.6.3.Mtodos iterativos................................................................................48
7.7.Condicionamento e estabilidade.....................................................................51
7.8.Anlise de erros.........................................................................................51
7.9.Concluso................................................................................................52
- iii -
ndice de contedos
- iv -
1. Computao Numrica
Uma etapa intermdia importante durante a resoluo de um problema envolve a elaborao de
um algoritmo, o qual dever ser posteriormente implementado numa linguagem de programao
para se obter os resultados numricos (soluo do problema) num computador.
O Clculo Numrico uma metodologia para resolver problemas matemticos por intermdio de
um computador, sendo amplamente utilizado por engenheiros e cientistas. Uma soluo via Clculo
Numrico sempre numrico, enquanto que os mtodos analticos fornecem usualmente um
resultado em termos de funes matemticas. Muito embora uma soluo numrica seja uma
aproximao do resultado exato, ela pode ser obtida com um grau elevado de exatido. Uma
soluo numrica calculada mesmo quando o problema no tem soluo analtica, facto comum
nas equaes diferenciais. O integral indefinido
ex
dx
de grande utilidade na Estatstica, uma primitiva que no pode ser representada, explicitamente,
2
x
por funes elementares. A rea sob a curva descrita por e
de a at b pode ser determinada por
meio de algoritmos numricos que so aplicveis a qualquer outro integrando, no sendo, portanto,
necessrio fazer substituies especiais ou mesmo a integrao por partes para se obter o
resultado.
Para computar (calcular por meio de um computador) um resultado numrico, so necessrias
operaes aritmticas (adio, subtrao, multiplicao e diviso) e lgicas (comparao,
conjuno, disjuno e negao). Considerando que estas so as nicas operaes matemticas que
os computadores so capazes de realizar, ento os computadores e o Clculo Numrico formam uma
combinao perfeita. Relembre-se que o primeiro computador de grande porte totalmente
eletrnico, o ENIAC (Electronic Numerical Integrator And Calculator), projetado para realizar
clculos balsticos, e os atuais maiores supercomputadores no mundo inteiro esto dedicados a
realizar clculos numricos.
-1-
a ,
a ,
a, ser
utilizado o mtodo de Newton (descrito mais adiante) para calcular uma raiz de f ( x) = x 2 a = 0:
f (x k )
x k+1 = x k
.
f ' (x )
k
x k+1 = x k
2 xk
xk
a
= xk
+
2
2x k
ou seja,
a
1
x k+1 = x k +
.
xk
2
Este um processo iterativo para calcular
xk
1.0000
1
2
3
4
5
5.0000
3.4000
3.0235
3.0001
3.0000
xk - 3
2.0000
0.4000
0.0235
0.0001
0.0000
-3-
xi
-1.0000
1
2
3
4
5
-5.0000
-3.4000
-3.0235
-3.0001
-3.0000
xi - 3
-8.0000
-6.4000
-6.0235
-6.0001
-6.0000
Alguns modelos matemticos podem produzir solues que no tm sentido fsico ou qumico,
como, por exemplo, tempo negativo, concentrao complexa, etc. O objetivo da anlise dos
resultados justamente discernir qual a soluo vlida para o problema real dentre as vrias
fornecidas pelo modelo matemtico (se existirem algumas).
3. Notao algortmica
A descrio de um algoritmo, atravs duma notao algortmica, melhora o seu entendimento,
pois apenas os aspetos do raciocnio matemtico so realados, sem ser necessrio levar em
considerao os detalhes de implementao de uma linguagem de programao.
-4-
-5-
Descrio
Funo
Descrio
Trigonomtricas
sen
seno
cos
co-seno
tan
tangente
sec
secante
Exponenciais
exp
exponencial
log10
logaritmo decimal
loge
logaritmo natural
raiz2
raiz quadrada
Numricas
abs
valor absoluto
quociente
diviso inteira
arredonda
sinal
max
maior valor
resto
resto de diviso
min
menor valor
trunca
Descrio
>
<
maior que
maior ou igual a
menor que
menor ou igual a
igual a
diferente de
A tabela seguinte mostra os resultados obtidos com os operadores lgicos, sendo que V significa
verdadeiro e F falso.
e
ou
no a
-6-
-7-
-8-
1
x =
x,e
n i=1 i
s =
( ))
n
1
x2 1 x
n 1 i=1 i n i=1 i
Algoritmo Mdia_desvio
{ Objetivos: Calcular mdia aritmtica e desvio padro }
parmetros de entrada n, x
{ tamanho e elementos do vetor }
parmetros de sada Mdia, DesvioPadro
Soma 0
Soma2 0
para i 1 at n faa
Soma Soma + x(i)
Soma2 Soma2 + x(i)2
fimpara
Mdia Soma / n
DesvioPadro raiz2 ((Soma2 (Soma2 / n)) / (n-1))
escreva Mdia, DesvioPadro
fimalgoritmo
-9-
4. Notao matemtica
Definida a modelao matemtica por meio de expresses aritmticas e lgicas, o passo seguinte
passar desta notao matemtica para a notao algortmica. Esta passagem ilustrada pelos
exemplos que se seguem.
Exemplo 1: implementar um algoritmo para calcular a norma-2 (norma Euclidiana) de um vetor x
de tamanho n, definida pela seguinte expresso:
x 2 =
x i 2.
i=1
Algoritmo Norma2
{ Objetivos: Calcular a norma-2 (Euclidiana) de um vetor }
parmetros de entrada n, x
{ tamanho e elementos do vetor }
parmetros de sada N2
{ norma-2 do vetor }
Soma 0
para i 1 at n faa
Soma Soma + (abs(x(i)))2
fimpara
N2 raiz2(Soma)
escreva N2
fimalgoritmo
Exemplo 2: implementar um algoritmo para calcular a norma- (norma de mxima magnitude) de
um vetor x de tamanho n, definida pela seguinte expresso:
x = max
1in
xi .
Algoritmo NormaInf
{ Objetivos: Calcular a norma- de um vetor }
parmetros de entrada n, x
{ tamanho e elementos do vetor }
parmetros de sada Ninf
{ norma- do vetor }
Ninf abs(x(1))
para i 2 at n faa
se abs(x(i)) > Ninf ento
- 10 -
Ninf abs(x(i))
fimse
fimpara
escreva Ninf
finalgoritmo
5. Complexidade computacional
usual definir-se uma funo de complexidade para medir o custo de execuo de um
algoritmo. Esta funo tanto pode ser uma medida do tempo necessrio para executar o algoritmo
que resolve um problema de tamanho n, como o espao de memria requerido para esta execuo.
Como os algoritmos aqui estudados so polinomiais e as operaes aritmticas tm diferentes
tempos de execuo pelo computador, a funo de complexidade ser definida, separadamente,
para a adio/subtrao, multiplicao e diviso.
A complexidade computacional de um algoritmo refere-se estimativa do esforo computacional
despendido para resolver o problema, sendo medido pelo nmero de operaes aritmticas e
lgicas efetuadas para resolver um sistema linear de ordem n.
Os problemas possuem complexidade computacional, podendo ser enquadrados em dois grupos:
grupo composto pelos algoritmos polinomiais, sendo a funo de complexidade da forma:
O(cn pn + cn-1 pn-1 + ... + c1 p1 + c0).
grupo formado pelos algoritmos exponenciais, sendo a funo de complexidade da forma:
O(cn), c > 1.
Exemplo:
Seja o polinmio de Lagrange de grau n definido da seguinte forma:
n
L n (x ) =
yi
i=0
j=0
ji
xx j
x i x j
...
x 0 x 1 x 0 x 2
x 0 x n
x x 0
x x 2
x x n
+ y1
...
x 1 x 0 x 1 x 2
x 1 x n
+ ...
x x 0
x x 1
x x n1
+ yn
...
x n x 0 x n x 1
x n x n1
- 11 -
2
2
2
Adies: 2(m 1) + 1 = 2(m 2m + m) = 2(n + 1) (n + 1) = 2n + 3n + 1 ;
i=1
Multiplicaes:
(m 1)
= m2 m = (n + 1)2 (n + 1) = n2 + n ;
i=1
m
Divises:
(m 1)
= (m2 m) = (n + 1)2 (n + 1) = n2 + n
i=1
Complexidade
Adies
Multiplicaes
Divises
2n2 + 3n + 1
n2 + n
n2 + n
O polinmio de Lagrange tambm pode ser expandido de modo a resultar a Expresso 2 seguinte:
(x x 1 ) (x x 2 ) ... (x x n )
L n (x ) = y 0
(x 0 x 1) ( x 0 x 2 ) ... (x 0 x n )
- 12 -
+ ...
(x x 0 ) (x x 1 ) ... (x x n1 )
+ y0
(x n x 0 ) (x n x 1 ) ... (x n x n1)
Ao analisar-se a complexidade computacional do algoritmo desta expresso, verifica-se que o
nmero de adies o mesmo e o de multiplicaes da mesma ordem (n 2). No entanto, o nmero
de divises utilizadas na Expresso 2 de uma ordem grandeza a menos (n).
O polinmio de Lagrange serve para exemplificar que uma mesma notao matemtica pode
resultar em algoritmos de diferentes complexidades. Isto deve estar presente ao elaborar-se um
algoritmo.
6. Representao de nmeros
Nesta seco sero considerados aspetos bsicos relativos ao clculo numrico: a representao
de nmeros inteiros e de reais (em ponto flutuante) em cdigo binrio.
ai
2
8
10
16
0,1
0, 1, 2, 3, 4, 5, 6, 7
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A. B, C, D, E, F
- 13 -
- 14 -
- 15 -
.10 2 2e ou
.10 2 = 1 21 + 0 22 = 1/2 + 0 = 1/ 2, e
.112 = 1 21 + 1 22 = 1/2 + 1/4 = 3/ 4,
ento, os nicos nmeros positivos representveis neste computador so:
.10 2 21 = 1/2 1/ 2 = 1/ 4
.112 21 = 3/ 4 1/2 = 3/ 8
.112 20 = 3/ 4 1 = 3/ 4
.10 2 21 = 1/ 2 2 = 1
.112 21 = 3/ 4 2 = 3/2
.10 2 22 = 1/ 2 4 = 2
.112 22 = 3/ 4 4 = 3
- 16 -
Propriedade
Comprimento total
bits na mantissa
bits no expoente
base
expoente mximo
expoente mnimo
maior nmero
menor nmero
dgitos decimais
Simples
Dupla
Estendida
32
23
8
2
127
-126
3.40 x 1038
1.18 x 10-38
7
64
52
11
2
1023
-1022
1.80 x 10308
2.123 x 10-308
16
80
64
15
2
16383
-16382
1.19 x 104932
3.36 x 10-4932
19
x 101
+ .0064
x 101
= .4364
x 101
.44
x 101.
= .37
x 103
- .37
x 103
= .00
x 103
.00
x 100.
x 103
+ .0027
x 103
= .6927
x 103
.69
x 103.
O resultado da adio 690 em vez de 693.71. O deslocamento das casas decimais de 2.71 causou
uma perda total dos seus dgitos durante a operao.
Exemplo 4: 1234 x 0.016
Os nmeros so armazenados no formato definido e a multiplicao efetuada utilizando 2p = 4
dgitos na mantissa. O resultado arredondado para dois dgitos e normalizado:
1234 x 0.016 = .12 x 104 x .16 x 10-1 = .12
x 104
x .16
x 10-1
= .0192
x 103
.19
x 102.
x 103
x .32
x 104
= .2816
x 107
- 18 -
x 10-2
.49
x 103
= .3673
x 10-5
.37
x 10-5.
x 10-2
.73
x 104
= .8767
x 10-6
- 19 -
am
bm-1
am-1 + 2 x bm
bm-2
am-2 + 2 x bm-1
...
...
b1
a1 + 2 x b2
b0
a0 + 2 x b1
e ento,
N = b0
Exemplo: seja o nmero (11101)2.
Aplicando o algoritmo de Horner:
b4
a4
b3
a3 + 2 x b 4 = 1 + 2 x 1 = 3
b2
a2 + 2 x b 3 = 1 + 2 x 3 = 7
b1
a1 + 2 x b2 = 0 + 2 x 7 = 14
b0
a0 + 2 x b1 = 1 + 2 x 14 = 29
portanto,
(11101)2 = 2910
Esta metodologia pode ser generalizada para converter qualquer nmero inteiro na base b para a
base decimal. Considere o nmero
N = (am am-1 ... a1 a0)b
a sua representao na base decimal pode ser obtida da seguinte forma:
cm
am
cm-1
am-1 + b x cm
cm-2
am-2 + b x cm-1
...
...
c1
a1 + b x c2
c0
a0 + b x c1
e ento,
N = c0
- 20 -
am-1
...
a2
a1
a0
2 x bm
...
2 x b3
2 x b2
2 x b1
bm-1
...
b2
b1
b0
e ento,
N = b0
Exemplo: seja o nmero (11101)2.
Aplicando a Diviso de Ruffini:
a4
a3
a2
a1
a0
2 x b4
2x1
2 x b3
2x3
2 x b2
2x7
2 x b1
2 x 14
b3
3
b2
7
b1
14
b0
29
2
b4
1
portanto,
(11101)2 = 2910
Esta metodologia pode ser generalizada para converter qualquer nmero inteiro na base b para a
base decimal. Considere o nmero
N = (am am-1 ... a1 a0)b
a sua representao na base decimal pode ser obtida da seguinte forma:
am
2
e ento,
cm
am-1
...
a2
a1
a0
b x cm
...
b x c3
b x c2
b x c1
cm-1
...
c2
c1
c0
N = c0
6.1.4. Converso de nmeros fracionrios da base b para a base decimal
Considere um nmero fracionrio com representao finita na base binria:
Xf = (0.a1a2an)2 .
O seu valor na base decimal ser dado por
Xf = 1 2-1 + 2 2-2 + + n 2-n
Esta soma pode ser calculada diretamente ou utilizando qualquer um dos dois mtodos enunciados
na seco anterior (Algoritmo de Horner e Diviso de Ruffini) com algumas modificaes.
- 21 -
an
bn-1
an-1 + (1/2) x bn
bn-2
...
...
b2
a2 + (1/2) x b3
b1
a1 + (1/2) x b2
b0
(1/2) x b1
e ento,
N = b0
Exemplo: converter o nmero (0.10111)2.
Aplicando o algoritmo, fica:
b5
a5 = 1
b4
b3
b2
b1
b0
(1/2) x b1 =
portanto,
(0.10111)2 = 23/32 = 0.71875
6.1.4.2. Diviso de Ruffini
No caso de um nmero fracionrio na base 2, o algoritmo fica
an
1/2
an-1
...
(1/2) x bm
...
bn-1
...
bn
e ento,
N = b0
- 22 -
a2
a1
b1
b0
a4
a3
a2
a1
(1/2) x b5
(1/2) x b4
(1/2) x b3
(1/2) x b2
1/2
(1/2) x 1
(1/2) x b1
b5
b4
b3
b2
b1
b0
3/2
7/4
7/8
23/16
23/32
portanto,
(0.10111)2 = 23/32 = 0.71875
6.1.5. Nmero binrio infinito
Uma outra situao que pode ocorrer quando o nmero binrio for infinito, por exemplo,
atravs de uma sequncia de dgitos peridicos:
X f =(0, 1 2 ... n 1 2 ...m )2
onde 1 2 ... m indica que a sequncia de dgitos 1 2 ... m se repete ad infinitum. Na base
decimal, tal nmero dado por
Xf = 1 2-1 + 2 2-2 + + n 2-n + b1 2-n-1 + b2 2-n-2 + + bm 2-n-m +
+ b1 2-n-m-1 + b2 2-n-m-2) + + bm 2-n-2m +
+ b1 2-n-2m-1 + b2 2-n-2m-2 + + bm 2-n-3m +
+ ...
Observa-se que este nmero pode ser escrito como
Xf = 1 2-1 + 2 2-2 + + n 2-n + ( b1 2-1 + b2 2-2 + + bm 2-m ) 2-n +
+ ( b1 2-1 + b2 2-2 + + bm 2-m) ) 2-n-m +
+ ( b1 2-1 + b2 2-2 + + bm 2-m ) 2-n-2m +
+
Ou seja,
Xf = 1 2-1 + 2 2-2 + + n 2-n + ( b1 2-1 + b2 2-2 + + bm 2-m ) 2-n ( 1 + 2-m + 2-2m + )
Usando agora a identidade,
1
= 1 + x + x 2 + x 3 + ...(para |x| < 1)
1x
tem-se
1 + 2m + 22m + 23m + ... =
2m
(fazendo x = 2-m),
=
m
m
1 2
2 1
- 23 -
X f =1 21 + 2 22 + ... + n 2n + 1 21 + 2 22 + ... + m 2m
2mn
2m1
As duas expresses entre parnteses tm a mesma forma e podem ser calculadas diretamente
usando qualquer um dos mtodos descritos anteriormente.
Em geral, se o nmero fracionrio tem representao infinita peridica na base b,
X f =1 b1 + 2 b2 + ... + n bn + 1 b1 + 2 b2 + ... + m bm
bmn
b m1
onde as expresses entre parnteses podem ser calculadas diretamente ou utilizando quaisquer um
dos mtodos descritos anteriormente.
[1]
1
0
[1]
0
1
1
1
[1]
0
1
1
1
0
- 24 -
[1]
1
1
[1]
0
1
1
1
0
1
[1]
1
0
0
1
1
1
1
1
1
0
1
0
1
1
0
0
[1]
1
0
0
1
1
- 25 -
1
0
0
1
1
1
0
1
1
0
1
0
0
1
x
0
0
1
1
0
0
0
1
0
0
0
0
0
0
1
0
0
1
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
- 26 -
1
1
0
0
1
-
0
1
0
1
1
0
0
-
1
1
0
1
1
0
1
1
1
1
0
1
0
0
0
N = (1)
q2
( ak bk ),
k=0
- 27 -
127 (p=1)
Npmax = 2k = 20 + 21 + 2 2 + ... + 28p2 = 28p1 1 = 32767 (p=2)
2147483647 (p=4)
k=0
9223372036854775807 (p=8)
8p2
A forma mais comum utilizada para representar nmeros negativos em binrio tomando o
dgito mais a esquerda que representar o sinal (0 representa sinal positivo e 1 sinal negativo)
-27
26
25
24
23
22
21
20
sinal
Transformando o binrio negativo em decimal: soma-se os bits ligados (com 1), considerando-se
os valores de -27, 26, , 20. Exemplos:
1
-128
1
-128
123
1
-128
1
-5 (123-128)
1
87
1
decimal
decimal
-41 (87-128)
127
decimal
-1 (127-128)
- 28 -
Binrio em C1
(igual a sinal-mdulo)
Decimal
(negativo)
Binrio em C1
0
1
2
3
4
5
6
7
0000
0001
0010
0011
0100
0101
0110
0111
0
-1
-2
-3
-4
-5
-6
-7
1111
1110
1101
1100
1011
1010
1001
1000
A representao na base 10 com 3 dgitos varia de 000 a 999 (10 3 representaes), representando
os nmeros de -499 a -1 (faixa negativa que est compreendida entre 500 e 998) e de +1 a +499
(faixa positiva, que est compreendida entre 1 e 499). O zero tanto pode ser representado por 000
como por 999.
A faixa de representao em C1 dos nmeros binrios de n dgitos a seguinte:
menor inteiro negativo: -(2n-1 1),
maior inteiro positivo: 2n-1 1.
Na aritmtica em complemento a (base - 1), basta somar os nmeros, sendo que um nmero
negativo ser representado por seu complemento a (base 1). Por exemplo, a soma decimal de 123
com -418 :
Sinal-Mdulo:
-418 + 123 = -295
Complemento a 9 (base - 1):
-418 representado por 999 - 418 = 581
581 + 123 = 704
999 - 704 = 295, em que 704 o C9 de -295 (704 est na faixa negativa).
- 29 -
Binrio em C2
(igual a sinal-mdulo)
Decimal
(negativo)
Binrio em C2
0
1
2
3
4
5
6
7
0000
0001
0010
0011
0100
0101
0110
0111
-1
-2
-3
-4
-5
-6
-7
-8
1111
1110
1101
1100
1011
1010
1001
1000
Comparando com a tabela anterior (para C1), nota-se que os nmeros positivos tm a mesma
representao de C1 e que o zero passou a ter apenas uma representao, o que permitiu
representar mais um nmero (neste caso, mais um negativo pode ser representado).
- 30 -
2. 0101 + 0010 (5 + 2 = 7)
4. 0110 + 1011 (6 5 = 1)
- 31 -
x = s (0. d1 d2 ... dn ) be
o qual est escrito numa forma legvel para os seres humanos. Alm das quantidades j definidas na
frmula anterior, os dgitos d1, d2, , dn so limitados pela base b (d1 0 e 1 di b-1, i = 1, , n)
e o expoente limitado ao intervalo emin e emax . Adicionalmente, n 1 denominado de
nmero de dgitos do sistema e define o tamanho da mantissa M = 0. d1d2...dn.
O valor zero no pode ser normalizado e tem representao especial, com mantissa nula (todos
dgitos iguais a zero) e expoente o menor possvel (m1). O conjunto formado pelo zero e por todos
os nmeros em notao de ponto flutuante chamado Sistema de Ponto Flutuante na base b com
n algarismos significativos, denota-se por F(b, n, emin, emax).
Contudo, um computador apenas pode representar os valores de e e M atravs de dgitos na base
b. Um computador digital (b = 2), por exemplo, dispe sempre de um tamanho de palavra finito,
isto , o nmero total de bits que podem ser utilizados para representar s (1 bit), a parte
exponencial e a mantissa sempre fixo, para um dado tipo de nmeros reais. Um nmero real de
preciso simples, por exemplo, normalmente representado por uma palavra de 4 bytes (32 bits),
sendo que 1 bit utilizado para representar o sinal, enquanto que 8 bits so utilizados para
representar a parte exponencial e os restantes 23 bits para representar a mantissa. Desta forma,
tal nmero ser representado na memria do computador como
x = s e 7 e6 ... e 1 e0 d1 d2 ... d22 d23,
onde
{ s , e0 , ... , e7 , d1 , ..., d 23 } { 0, 1 }.
Exemplo: Considere-se dois nmeros binrios com 8 algarismos significativos em F(2, 8, -4, 3):
n1 = 0 010 111001102 => (-1)0 x 22 x (0.11100110) = 3.5937510
n2 = 0 010 111001112 => (-1)0 x 22 x (0.11100111) = 3.60937510 .
Observe que, no sistema de representao utilizado, n1 e n2 so dois nmeros consecutivos, ou
seja, no podemos representar nenhum outro nmero que tenha valor intermedirio. Portanto, por
exemplo, a quantidade 3.60000 no tem representao exata neste sistema, sendo representada
por n1 ou n2, o que gerar um erro, denominado Erro de Arredondamento. Assim, enquanto os
nmeros reais podem ser representados por uma reta contnua, em notao de ponto flutuante
somente podemos representar pontos discretos da reta real.
A tabela que se segue ilustra representaes de ponto flutuante para alguns nmeros numa
palavra tpica de 32 bits (4 bytes), em F(2, 23, -128, 127).
- 32 -
nmero
binrio (base 2)
expoente de 8 bits
Mantissa de 23 bits
1/2
1/4
1
3
0
0
0
0
00000000 (0)
11111111 (-1)
00000001 (1)
00000010 (2)
10000000000000000000000
10000000000000000000000
10000000000000000000000
11000000000000000000000
A converso do nmero x aqui representado para a base decimal pode ser realizada pela frmula
polinomial seguinte:
x = (1)s be
( dk bk ).
k=1
No padro IEEE 754, a sequncia de 8 bits armazena o nmero E = e + 127. Desta forma, evitase
o teste sobre o valor do bit para saber se o nmero positivo ou negativo e para recuperar o
expoente, realizada a operao e = E 127. Para se obter a forma como o expoente ser
armazenado pode-se tambm trabalhar na base 10 e depois converter o resultado final. Por
exemplo, se e = 5210 vai-se armazenar 12710 + 5210 = 17910 = 101100112.
importante destacar que as sequncias de bits para o expoente: 00000000 e 11111111 so
reservadas para representar o zero e infinito ou ocorrncia de erro (NaN: not a number)
respetivamente. O maior expoente representado pela sequncia 11111110 2 que, na base 10,
representa o nmero (256 2)10 = 25410. Ento o maior expoente : 127 + e = 254 e = 254 127 =
127. O menor expoente representado pela sequncia 00000001 2 = 110. Da que o menor expoente
: 127 + e = 1 e = 1 127 = 126.
Considerando agora a representao da mantissa. Como no sistema normalizado d1 0 e dado
que a base 2, ento primeiro dgito no sistema normalizado ser sempre igual a 1 e por esta razo
no armazenado ( o denominado bit escondido). Esta normalizao permite um ganho na
preciso, pois pode-se considerar que a mantissa armazenada em 24 bits.
A tabela seguinte mostra os valores de n, e min, emax, Xmin, Xmax e Xeps para um dado computador
que usa o padro IEEE 754.
Espcie
REAL (4)
REAL (8)
REAL (16)
23
-126
127
1.1754944 x 10-38
3.4028235 x 1038
1.1920929 x 10-7
52
-1022
1023
2.225073858507201 x 10-308
1.797693134862316 x 10308
2.220446049250313 x 10-16
113
-16382
16383
3.362103143112093506... x 10-4932
1.189731495357231765... x 104932
1.925929944387235853... x 10-34
emin
emax
Xmin
Xmax
Xeps
- 33 -
x min = 0.1 b
Valores para xmin vlidos para o compilador so apresentados na tabela anterior. Isto
significa que qualquer nmero x tal que
x min < x < x min
( )
n
max
= (b1)
n vezes
bk
max
= (1 bn ) b
max
k=1
x eps = b 1n
A quantidade xeps (denominada de epsilon da mquina, m, ou de preciso da mquina).
Somente um conjunto finito R F de nmeros racionais podem ser representados na forma
apresentada. Os nmeros neste conjunto so denominados nmeros de ponto flutuante.
Para uma representao normalizada (d1 0), este conjunto contm precisamente
2(b1) e max e min + 1 bn1 + 1
nmeros racionais.
Exemplo: Considere o sistema de representao numrica de ponto flutuante F(2, 4, -5, 6). Para
este sistema:
o menor nmero positivo possvel :
x min = (0.1000)2 25 = 251 =
- 34 -
1
;
64
1
1
< x <
64
64
1
.
8
O nmero de elementos em RF :
2 1 (6 + 5 + 1) 241 + 1 = 193.
7. Erros
7.1. Fontes de erros e incertezas
Embora se procure sempre solues exatas dos problemas que se nos surgem, raramente este
objetivo atingido. Erros e incertezas podem ser introduzidos em cada etapa da formulao e
resoluo dos problemas. A natureza das incertezas que surgem quando se procura a soluo de um
problema ser abordada nesta seco. Tambm sero examinados, com um certo grau de detalhe,
os erros introduzidos pela computao numrica, destinada a determinar a soluo desejada.
O processo de resoluo de um problema at implementao do mtodo pode ser dividido em
quatro fases (no tem em conta as fases de determinao e anlise da soluo):
1. Definio do problema,
2. Formulao precisa de um modelo matemtico e o seu modelo numrico relacionado,
3. Construo do mtodo destinado a resolver o modelo numrico,
4. Implementao do mtodo para calcular a soluo.
Na discusso que ser feita a respeito das fontes de erro no clculo numrico, no sero
considerados erros triviais que podem ser evitados, tais como copiar uma frmula erroneamente ou
efetuar um erro de sintaxe na programao, muito embora tais erros ocorram e perfaam uma
frao considervel do esforo e do tempo despendidos ao se trilhar as fases mencionadas acima.
Desta forma, esta seco tratar apenas dos erros que resultam de forma inevitvel, dada a
prpria natureza da representao finita de nmeros num computador e/ou da implementao
numrica de um determinado clculo. As incertezas introduzidas contaminam a soluo e
importante tentar-se balancear as incertezas. Se a incerteza no modelo matemtico de 1%, ento
- 35 -
Problema Real
Construo do Modelo
Incertezas
- 36 -
2n+1
x
(1)n (2n+1)!
= x
n=0
x3
x5
x7
+
+ ..., 0 x
6
120 5040
4
medida que n aumenta, mais o valor da srie se aproxima do valor real. A tabela que se segue
mostra a diferena entre o valor obtida pela srie de sen(x) e um valor mais exato, para n at 2, 3
e 4. Quando n aumenta, o erro de truncatura diminui, ficando claro que estes erros so devidos s
vrias truncaturas da srie:
2n+1
x
(1)n (2n+1)!
sen(x )
n=0
x
0
/16
/8
/6
/4
t=2
2,4
7,8
3,3
2,5
t=3
0
x 10-6
x 10-5
x 10-4
x 10-3
2,2
2,9
2,1
3,6
0
x 10-9
x 10-7
x 10-6
x 10-5
t=4
0
1,2 x 10-12
6,1 x 10-10
8,1 x 10-9
3,1 x 10-7
- 38 -
1137
1335
< < max = 3 +
= 3.1428...
8069
9347
1
1
min + max
EA X
X
X fl( X)
.
X
X
Como para a maior parte dos problemas X desconhecido, usual substitu-lo pelo valor
aproximado fl(X) no denominador da expresso para o erro relativo, como a seguinte:
ER X =
EAX
fl( X)
X fl(X )
fl(X)
fl( X)
O erro relativo no tem dimenso e, em geral, s conhecido o limite superior do seu valor, X, o
qual se define da seguinte forma:
X ERX.
A quantidade 100 ERX expresso em percentagem chama-se percentagem do erro.
Voltando ao exemplo anterior, os erros relativos das estimativas de Arquimedes foram:
ERp = 2.1741 x 10-4 para pmin,
- 39 -
(b)
ER Y =
=
EA Y
f ' ( )X fl(X)
Y
X f '() X fl(X)
Y
X
X f '()
ER X, por definio de erro relativo
Y
X f ' (X)
ER X , porque X fl(X) e (X, fl(X))
f (X )
ER Y
X f '(X )
ER X
f (X)
- 40 -
Normalmente
X f ' (X)
designado por nmero de condio de f em X e nota-se por cond f(X).
f (X)
Este valor, cond f(x), um indicador do efeito da propagao do erro relativo, no valor da funo f
no ponto X, e permite avaliar em que condies a funo bem ou mal condicionada.
Exemplo: analisar os efeitos da propagao de erros nas funes x n e nx com n N.
(a) f(x) = xn, com n N.
cond f (x) =
x n xn1 = n
x f ' (x )
=
f (x)
xn
x nx ln x = x ln x
x f ' (x )
=
f (x)
n x
Neste caso, verifica-se que a propagao do erro relativo depende de x mais do que de n.
7.4.4. Nmero de dgitos significativos
Quando se contabiliza o nmero de dgitos de um valor numrico, no se deve incluir os zeros no
incio do nmero, uma vez que estes zeros somente auxiliam a localizar a posio ideal do ponto
decimal. Caso se queira contar o nmero de decimais, ento os zeros direita do ponto decimal
devem ser includos. Por exemplo, o nmero 0.00147 dado com trs dgitos mas possui cinco
decimais. O nmero 12.34 dado com quatro dgitos, mas possui apenas dois decimais.
Quando se trabalha com uma representao de um nmero obtida por meio de um processo de
arredondamento ou truncatura, uma maneira alternativa para se estimar a qualidade da
aproximao, ou seja, a exatido do nmero, consiste em calcular o nmero de dgitos
significativos corretos da representao.
Se fl(X) uma aproximao de X ento diz-se que fl(X) aproxima X com k dgitos significativos se
EA X = X fl(X)
1 s+1k
b
,
2
X fl(X )
1 k+1
b
X
2
- 41 -
1/ 6 0.16667
1
= 2 105 105+1 .
1/6
2
ou seja, 0.5 M 1 para computadores de base b = 2. Esta providncia diminui o nmero de zeros
direita do ponto e maximiza o nmero de dgitos no nulos utilizados para representar um dado
nmero.
No entanto, mesmo num sistema com representao normalizada, nem todos os nmeros reais
podem ser representados. Utilizando o exemplo do sistema F(2, 4, -5, 6), o nmero racional
y = 0.12345999...
no pode ser exatamente representado. A forma de y na base 2 :
y = 0.12345999... = (0.000111111001101...) 2.
Para escrever y de acordo com o sistema F(2, 4, -5, 6), deve-se primeiro normalizar de acordo com
as operaes:
y2 = 24 + 25 + 26 + 27 + 28 + 29 + 212 + 213 + 215 + ...
= 23 ( 21 + 22 + 23 + 24 + 25 + 26 + 29 + 210 + 212 + ... )
= ( 0.111111001101... ) 23,
o qual est agora na forma normalizada. De acordo com a expresso apresentada na seco 6.3.2
(pg. 31), ento podemos identificar
M = 0.111111001101... e e = -3.
Contudo, para o sistema F(2, 4, -5, 6), pode-se usar apenas 4 dgitos na mantissa. Desta forma, uma
possvel aproximao para y2 :
fl(y2) = (0.1111) x 2-3,
o qual corresponde ao seguinte nmero na base 10:
fl(y) = 0.1171875 ,
resultando nos seguintes erros absoluto e relativo:
EAy = 6.272 x 10-3 e ERy = 5.3525 x 10-2 = 5.35%.
- 42 -
ou seja,
X = 0. d1 d2 ... dn b e + g X b en
com
g X = 0.dn+1 ...
g X < 1
em que gX be-n a parcela de X que no includa na sua representao. Existem duas formas de se
realizar a aproximao: arredondamento por defeito (ou corte do nmero) e simtrico.
7.5.1. Arredondamento por defeito (ou corte do nmero)
O arredondamento por defeito consiste simplesmente em ignorar gX. Assim,
fl(X ) = 0. d1 d2 ... dn b e
o qual representvel no sistema. Neste caso, o erro absoluto cometido por corte
EA X = X fl(X) = g X b en < ben
pois |gX| < 1, obtendo-se, desta forma, um limite superior para o erro absoluto.
O erro relativo cometido por corte
ER X =
EA X
fl(X)
g X ben
bn
=
<
= b1n
e
1
0.
d
d
...d
0. d1 d2 ...d n b
b
1 2
n
g X b en be
- 43 -
fl(X ) =
{
{
1
se g X <
2
1
0. d1 d2 ...(dn+1) b e , se g X
2
( 0. d1 d2 ... dn) b
(
EA X =
1
se g X <
2
1
en
gX 1 b
, se g X
2
gX ben ,
<
1 en
b
,
2
ER X =
(
(
1 en
b
2
0.d 1 d 2 ... dn b
1
se g X <
2
1 en
b
2
1
, se g X
2
0.d 1 d 2 ...(dn +1) b
<
1 en
b
2
e
( 0.1)b b
1 1n
b
2
o qual fornece uma estimativa superior para o erro relativo, ao qual tambm se d o nome de
unidade de erro de arredondamento.
No exemplo acima, como gy > 12, deve-se somar 1 ao dgito d 4 resultando, com o auxlio da
tabela de adio de binrios,
fl(y 2 ) = (0.1111) 23 + (0.0001) 23 = (1.0000) 23 = (0.1000) 22 ,
Neste caso, obtm-se
fl(y) = 0.125,
o qual possui um erro relativo de 1,2% de y, bem menor que o erro obtido com o arredondamento
por defeito, que foi de 5,35%.
- 44 -
1 cos(x )
sen(x )
=
sen(x )
1 + cos(x )
para x = 0.007. Existem funes intrnsecas do compilador que calculam o valor das funes
trigonomtricas dentro da preciso disponvel, atravs de um processo de arredondamento. Assim,
sen(0.007) = 0.69999 102
cos (0.007) = 0.99998
A primeira expresso para f(x) fornece:
f ( x) =
1 cos(x )
10.99998
0.2 104
=
=
= 0.28572 102
2
2
sen(x )
0.69999 10
0.69999 10
sen(x )
0.69999 102
=
= 0.35000 102
1 + cos(x )
1 + 0.99998
sendo que este ltimo resultado o correto, dentro da preciso de 5 dgitos disponvel. O erro
relativo entre o primeiro valor (errado) e o segundo (correto) de 22.5%. Na primeira expresso,
devido escolha feita na preciso, restou somente um dgito relevante no numerador aps a
subtrao. Isto levou a uma perda de preciso e a um resultado errneo devido ao cancelamento de
dois nmeros muito prximos entre si. Este problema seria evitado caso o sistema de representao
dispusesse de, pelo menos, mais um dgito significativo na mantissa; porm, o ponto a ser frisado
aqui que muito facilmente este tipo de erro de arredondamento ocorre, devido ao tamanho finito
- 45 -
EA X+Y
X + Y
EA X + EA Y
X + Y
EA X
X X + Y
EA Y
Y X + Y
X
Y
= ER X
+ ER Y
X + Y
X + Y
EA XY
X Y
EA X + EA Y
X Y
EA X
X X Y
X
Y
= ER X
+ ER Y
X Y
X Y
Fenmeno de cancelamento subtrativo:
- 46 -
EA Y
Y X Y
EA X fl(Y ) + EA Y fl(X)
fl(y )2
a) Erro relativo:
ER X /Y ER X + ER Y
Uma estimativa para o erro relativo na diviso dada pela soma dos erros relativos dos
operandos (desde que estes venham afetados por um erro relativo pequeno).
x3
x5 x7
x 2n1
+
+ ... + (1)n1
+ R 2n ( x),
3 ! 5! 7!
(2n1)!
onde
R 2n (x ) = (1)n
x 2n
sen(),
(2n)!
[0, x ].
- 47 -
x3 x5 x7
+
3! 5! 7!
quando se usa p7(p/4) para aproximar sen(p/4) o erro de truncatura dado por R 8(p/4). Note-se
que |R8(p/4)| < 0.3E-5. E p7(p/4) 0.70711 uma aproximao para sen(p/4) com cinco algarismos
significativos.
7.6.2. Discretizao
Ao usar-se o teorema do valor mdio para aproximar o integral de f(x) tem-se
b
n1
f (x ) dx = h
i=0
f (x i ) + R,
n1
f ( x) dx h
i=0
f (x i ).
ex
dx
ter-se-
0.1
ex
Neste caso,
2
k = 0,1,...,
- 48 -
f (x ) f (y ) x y , x , y V.
Se para x0 V a sequncia definida pela iterao
xk = f(xk-1), (k = 1, 2, ...),
pode ser calculada tendo-se xk V, ento existe um nico elemento x* V tal que x* = f(x*), que se
chama ponto fixo de f. A sequncia { xk } k = 0,1,..., converge e limk xk = x*. Alm disso,
x * x k
1
k
x k x k1
1
x1 x 0
para x*).
Um processo de clculo no pode decorrer indefinidamente e apenas um nmero finito de
iteraes podem ser calculadas. Assim, tm de ser definidos critrios de paragem para os processos
iterativos. Uma deciso dever ser tomada sobre que iterao ser usada como a aproximao
pretendida.
Sendo x0, x1, x2, , xk, , uma sequncia gerada por x k = f(xk-1), (k = 1, 2, ), x 0 especificado
explicitamente, convergindo para x* ponto fixo de f. Sendo limk xk = x* ento, dado > 0
k 0 N : k > k 0,
x * xk < .
Desta expresso pode ser deduzido um critrio de paragem: o clculo das iteraes pra com o
clculo de xk+1 se, dado > 0,
xk+1 xk <
(1)
ou, se xk+1 0
(2)
- 49 -
xk+1 xk
k x 1 x 0
Donde resulta
ln
k
x 1 x 0
ln
( x1 x 0 < x1 )
ou (k = kmax) ento
interrompa
fimse
fimrepita
- 50 -
- 51 -
7.9. Concluso
A figura seguinte ilustra a ocorrncia de erros no processo de resoluo dum problema
matemtico no computador.
- 52 -