Anda di halaman 1dari 38

CAPÍTULO 1

_______________________________________________________________________________________________________________

ERROS EM CÁLCULO NUMÉRICO

1. Introdução

O estudo da matemática introduz conceitos que auxiliam a resolução dos mais diversos
problemas científicos. No entanto, existem numerosos problemas matemáticos para os quais
não se conhece nenhuma solução analítica. A Análise Numérica procura desenvolver processos
de cálculo (algoritmos), utilizando uma sequência finita de operações aritméticas básicas, para
que certos problemas matemáticos se tornem exequíveis numericamente, ou de mais simples
execução. Estes algoritmos envolvem em geral um grande número de cálculos aritméticos e
por isso não é de estranhar que com o desenvolvimento de rápidos e eficientes computadores
digitais, o papel dos métodos numéricos na resolução de problemas de engenharia tenha
sofrido grande incremento nas últimas décadas.
Um algoritmo é caracterizado por permitir resolver problemas matemáticos usando uma
sequência finita e pré-definida de operações de aritmética. Um método numérico é um
algoritmo que tem como objectivo determinar um ou mais valores numéricos. Os valores
obtidos por um método numérico designam-se por soluções numéricas. A selecção ou
construção de algoritmos eficientes, facilmente adaptáveis à implementação em computador, é
o objectivo da análise numérica.
Ao contrário das soluções analíticas, que conduzem a soluções exactas para os
problemas, os métodos numéricos produzem, em geral, apenas soluções aproximadas. Por este
facto, antes da utilização de qualquer método numérico é necessário decidir qual a precisão
com que se pretende obter a solução numérica desejada. A precisão dos cálculos numéricos é
também, como veremos, um importante critério para a selecção de um algoritmo particular na
resolução de um dado problema.
Mesmo nos casos em que existe uma fórmula disponível, deve ter-se algum cuidado pois,
como mostram os exemplos que se seguem, existem cálculos matemáticos que oferecem
respostas correctas quando se efectuam utilizando números reais exactos, mas dão respostas
erradas quando se realizam em computador com precisão finita.

1
Exemplo 1.1: Efectue um programa de cálculo que adicione dez mil vezes o valor
0.00001 a uma unidade. Compare o resultado obtido com o resultado exacto calculando a
percentagem de erro.

O resultado obtido num PC a trabalhar em simples precisão é: SUM=1.100136. Como o


resultado exacto é SUM=1.1, vem
1.1 − 1.100136
× 100 ≈ 0.0124 %
1 .1

Exemplo 1.2: (Cálculo de uma derivada). A definição de derivada


f ( x + Δx) − f(x)
f ' ( x) = lim
Δx →0 Δx
Δ f
sugere que o quociente pode aproximar f ' ( x) , se existe, quando Δ x → 0 . No
Δx
entanto, tal não é provável que suceda se os cálculos se realizam num computador, a
não ser que f ' ( x) seja zero. Para o confirmar, suponha que queremos calcular a
derivada da função f ( x) = sin x para x=1.

Solução analítica: f ' ( x) = cos x


f ' (1) = cos1 ≈ 0.54030
Solução numérica:
sin (1 + Δ x) − sin (1)
d=
Δx

Δx d Valor exacto - d
_______________________________________________________________

0.1 0.49736 0.042938


0.01 0.53609 0.004212
0.001 0.53996 0.000344
0.0001 0.54061 - 0.000312
0.00001 0.54240 - 0.002100
0.000001 0.53644 0.003860
0.000000001 0.0 ! 0.540300

Ao longo do capítulo procuraremos explicar a origem destes erros.

2
2. Tipos de erros na resolução numérica de problemas de Engenharia

A resolução de um problema de Engenharia num computador utilizando um modelo


numérico na resolução do correspondente modelo matemático produz, em geral, uma solução
aproximada do problema. A introdução de erros na resolução do problema pode ser devida a
vários factores. Em função da sua origem, e das fases de resolução de um problema de
Engenharia, podemos considerar essencialmente quatro tipos de erros (Fig. 1).

Figura 1 - Tipos de erros nas diferentes fases de resolução de um problema de engenharia.

1) Erros inerentes ao modelo - Os modelos matemáticos raramente constituem uma


representação exacta dos fenómenos reais. Na grande maioria dos casos são apenas modelos
idealizados, já que ao estudar os fenómenos da natureza vemo-nos forçados, regra geral, a
aceitar certas condições que simplificam o problema de forma a torná-lo tratável. Os melhores
modelos são os que incluem apenas aquelas características do problema real necessárias para
reduzir os erros nesta fase a um nível aceitável.

2) Erros inerentes aos dados - Um modelo matemático não contem apenas equações e
relações; também contem dados e parâmetros que, frequentemente, são medidos
experimentalmente, e portanto, aproximados. As aproximações nos dados podem ter grande
repercussão no resultado final.

3
3) Erros de truncatura - Muitas equações matemáticas têm soluções que apenas podem
ser construídas no sentido que um processo infinito possa ser descrito como limite da solução
em questão. Por definição, um processo infinito não pode ser completado, por isso tem de ser
truncado após certo número finito de operações. Esta substituição de um processo infinito por
um processo finito, resulta num tipo de erro designado erro de truncatura. Em muitos casos,
o erro de truncatura é precisamente a diferença entre o modelo matemático e o modelo
numérico.

4) Erros de arredondamento - Quer os cálculos sejam efectuados manualmente quer


obtidos por computador somos conduzidos a utilizar uma aritmética de precisão finita, ou seja,
apenas podemos ter em consideração um número finito de dígitos. O erro devido a desprezar
os outros e arredondar o número é designado por erro de arredondamento.

Os erros inerentes ao modelo e aos dados são erros iniciais do problema, exteriores ao
processo de cálculo; os erros de truncatura e de arredondamento ocorrem no processo de
cálculo duma solução numérica no computador. É pois a análise destes dois últimos, com
especial relevância para os erros de arredondamento, que constitui o objectivo principal deste
capítulo.

3. Erros de arredondamento e aritmética computacional

Os números são a entidade fundamental dos métodos numéricos. O primeiro tipo de


erros que cometemos nos cálculos surge do processo de representação dos números. O
conjunto dos números reais é infinito, contínuo e ilimitado. Pelo contrário, o conjunto dos
números que se podem representar exactamente em computador, pelo facto destes utilizarem
um número limitado de dígitos para aquela representação, é finito, discreto e limitado. Isto
significa que a utilização de computadores na resolução de problemas numéricos origina o
aparecimento de um certo tipo de erros, que não surgiriam se fosse possível usar aritmética
exacta. Por outras palavras, quando usamos aritmética computacional estamos constantemente
a cometer erros de arredondamento na representação dos resultados das sucessivas operações
realizadas.
Para compreender a natureza dos erros de arredondamento, é necessário saber de que
forma os números são armazenados e como são efectuadas as operações em computador.
Assim, a primeira parte do capítulo descreve as principais características dos sistemas de
numeração de computadores e as consequências da sua utilização em cálculo numérico.

4
3.1. Representação de números inteiros

• Sistemas de numeração

O sistema de numeração que utilizamos diariamente é designado sistema decimal. Assim,


por exemplo, o número inteiro 352 é representado como

352 = 3 ×102 + 5 × 101 + 2 × 100


em que 10 é a base deste sistema. A base de um sistema de números é definida como sendo o
número de diferentes dígitos que podem ser utilizados em cada posição de um número.
Utilizando o símbolo di para representar o dígito decimal colocado na posição i a contar da
direita, um inteiro positivo N com n+1 dígitos possui a seguinte representação decimal:

N = (d n d n −1 ...d 1 d 0 )10 = d n • 10n + d n-1 • 10n −1 + ... + d 1 • 101 + d 0 • 100 (1)

com 0≤di≤9, i=0,1,...,n.


Não existe qualquer razão intrínseca para se usar a base 10. Outras bases foram utilizadas
por diferentes civilizações, tais como 5 (Índios Norte Americanos e Esquimós), 20 (Celtas), 60
(na Mesopotâmia). O sistema binário adquiriu uma importância especial com o advento dos
computadores digitais. Os computadores lêem impulsos enviados pelas suas componentes
electrónicas. O estado de um impulso é "on" ou "off". É então conveniente representar os
números em computador no sistema binário. Sendo a base 2, os coeficientes inteiros podem
tomar os valores 0 ou 1.
No entanto, se olharmos para as linguagens das máquinas, rapidamente nos apercebemos
que outros sistemas de números, múltiplos de dois, particularmente os sistemas octal (base 8) e
hexadecimal (base 16), são utilizados.
A base de um número é representada por um índice: por exemplo (3.224)10 é 3.224 na
base 10 (decimal), (1001.11)2 é 1001.11 na base 2 (binário), e (18C7.90)16 é 18C7.90 na base
16 (hexadecimal). O sistema hexadecimal utiliza os 16 dígitos: 0,1,2,...,9,A,B,C,D,E,F em que
os caracteres A,B,...,F representam 10,11,...,15, respectivamente.

A generalização de (1) a uma base b diferente de 10 é imediata:

N = (d n d n −1 ... d 1 d 0 )b = d n • bn + d n −1 • bn −1 + ... + d 1 • b1 + d 0 • b0 (2)

com 0≤di≤b-1, i=0,1,...,n.

5
Torna-se frequentemente necessário conhecer o equivalente, num dado sistema de
numeração, de um número expresso noutro sistema diferente. A expressão (2) é útil para
efectuar a conversão de um número inteiro de qualquer base b para a base 10, conforme se
ilustra no exemplo que se segue.

Exemplo 1.3: Converter (7D3)16 à base 10


(7D3)16 = 7 ×162 + 13 × 161 + 3 × 160 = 1792 + 208 + 3 = 2003

Consideremos agora o problema inverso, ou seja, pretendermos obter a representação na


base b de um número N cuja representação decimal é dada. É fácil verificar que se dividirmos
N, na forma (2), por b o quociente é dnbn-1 + dn-1bn-2 + ... + d1 e o resto é d0. Determina-se assim
o dígito de menor ordem, d0, da representação de N na base b. Dividindo o quociente
encontrado por b, obtém-se como resto o dígito d1, e assim sucessivamente. O quociente da
enésima e última divisão é dn.

Exemplo 1.4: Converter 2003 à base hexadecimal


2003 |16
040 125 |16
083 13 7
03

Logo, (2003)10 = (7D3)16

• Representação interna de inteiros

Passamos agora a expor de uma forma sintética a forma como os números inteiros são
representados internamente num computador. Os computadores utilizam, para armazenar
informação, dispositivos físicos que podem assumir dois estados distintos. Esta característica
privilegia a base 2 ou base binária para representação de números nestas máquinas.
Os computadores armazenam números utilizando o que pode imaginar-se como "janelas
de base b" cada uma capaz de armazenar os dígitos de base b (0, 1,..., b-1), em que a
aritmética de base b pode ser 2 (binário), 8 (octal) ou 16 (hexadecimal). Uma janela de base
2 designa-se por “bit”.

6
Um "bit" é um acrónimo de "binary digit" e representa o elemento de memória básico
que assume os dois estados que se associam aos dígitos 0 e 1. Os computadores dividem a
memória em cadeias de bits designadas palavras. O número de bits por palavra é o tamanho da
palavra do computador. Os tamanhos de palavra variam com o tipo de computador (por
exemplo, 16 bits para um IBM XT ou AT, 32 bits para um IBM PC ou VAX 11, 60 bits para
um CYBER). O número de bits disponíveis para a representação de números inteiros
determina qual o maior inteiro representável. As formas como os bits são utilizados para
armazenar valores depende do computador. No entanto, sendo finito e fixo para cada
computador o número de bits utilizados, apenas inteiros num intervalo [-M,N] (M,N>0) farão
parte do sistema de numeração de um computador.
No caso, por exemplo, do IBM PC (FORTRAN), uma variável declarada como
INTEGER*2 utiliza 2 bytes (ou seja, 16 bits, que corresponde neste caso a meia palavra) para
representar um inteiro. O primeiro bit armazena o sinal: positivo se é 0, ou negativo se é 1. Os
restantes 15 bits são utilizados para armazenar os di's. Assim o maior inteiro positivo
representável é:
0111 1111 1111 1111
sendo o correspondente valor decimal(1)
14
∑ 2 i = 215 − 1 = 32768 − 1 = 32767
i =0

A representação de um número inteiro negativo poder-se-ia efectuar utilizando os


mesmos dígitos do correspondente número inteiro positivo excepto o primeiro bit que passaria
a ser 1. No entanto, esta representação conduziria a que o inteiro zero fosse representado por
duas configurações de bits distintas (+0 e -0) o que constituiria um inconveniente. Assim, e
porque facilita também as operações, é geralmente utilizada outra técnica designada por
"complemento para 2". Por exemplo, o complemento para dois de (-32767)10 é:

1000 0000 0000 0001


em que os dígitos binários foram obtidos substituindo cada bit 0 por 1 e cada 1 por 0 do inteiro
positivo 32767 e somando 1. Esta conversão é extremamente fácil de efectuar em computador.

bn − 1
(1)
a + a b + a b 2 + ... + a b n −1 = a , para qualquer b ≠ 1 . Para o caso particular: a=1 e b=2
b −1
n −1
obtém-se: ∑ 2i = 2 n − 1 .
i =0

7
Nesta forma, o valor decimal é determinado supondo em primeiro lugar que o conjunto dos 16
bits expressa um número positivo. Se este número for menor que 215, ou seja 32768, então o
número é interpretado como um inteiro positivo. No caso de ser maior ou igual, é convertido
num inteiro negativo por subtracção de 216.
No exemplo anterior, o decimal equivalente a (1000000000000001)2 é 215+1=32769 >
32768, pelo que, de acordo com a regra anterior, representará o inteiro negativo:

32769 - 65536 = -32767


O menor inteiro negativo em valor absoluto será representado como

(1111 1111 1111 1111)2

que corresponde a -1 em decimal.


Um INTEGER*4 utiliza 4 bytes (ou seja, uma palavra de 32 bits) para representar um
inteiro. Neste caso, o maior inteiro positivo representável (Fig. 2) será o decimal
30
∑ 2 i = 231 − 1= 2147483648 − 1= 2147483647
i=0

Conjunto de inteiros representáveis


Overflow Overflow

... ...
N min. -2 -1 0 1 2 N max.
=
=

31
-2 = - 2.147.483.648 231- 1 = 2.147.483.647

Figura 2 - Gama de inteiros representáveis numa palavra de 32 bits.

Em qualquer dos casos, importa sobretudo sublinhar que todos os computadores estão
limitados na sua capacidade de representação de números inteiros. Todos os inteiros entre zero
e o valor máximo possuem representação exacta e também são exactas as operações
aritméticas cujos operandos e resultados sejam inteiros nesta gama. Inteiros fora do intervalo
[-M,N] não poderão ser representados, e a tentativa de o fazer conduz à conhecida condição de
`overflow`.
Uma limitação mais severa ocorre no armazenamento e manipulação de números reais
como veremos em seguida.

8
3.2. Representação de números reais
Este parágrafo apresenta a forma como os dispositivos digitais utilizam uma variante da
notação científica (representação de ponto flutuante) para armazenar números reais de uma
forma eficaz e examina os erros introduzidos no processo.
A representação de um número real X na base b é efectuada como:

X = (d n d n −1 ... d1 d 0 . d −1 d −2 ... d -k )b = d n bn + d n −1 bn −1 + ... + d1 b1 + d 0 b0


(3)
+ d −1 b−1 + d −2 b−2 + ... + d -k b-k

na qual, o conjunto de dígitos ( d n d n −1 , ... , d1 d 0 )b constituem a parte inteira e os dígitos


( d −1 d − 2 ... d -k )b a parte fraccionária da representação do número X na base b.
Vamos ver como se efectua, no caso de um número real, a mudança de base. A conversão
da base b para a base 10 é efectuada, analogamente ao caso anterior, através da aplicação
directa de (3).

Exemplo 1.5: Converter (1.101)2 à base 10


(1.101 )2 = 1 × 20 + 1 × 2−1 + 0 × 2−2 + 1 × 2−3 = 1 + 0.5 + 0 + 0.125 = 1.625

Suponhamos agora que pretendemos obter a representação na base b de um número


decimal. Como a conversão da parte inteira é efectuada da mesma forma que vimos
anteriormente, vamos admitir, para simplificar, que X é um número fraccionário puro, ou seja,
sem parte inteira. Assim,
X = (d -1 d -2 ... d -k )b = d -1 b−1 + d -2 b−2 + ... + d -k b−k

Se multiplicarmos X por b, verificamos que d-1 é a parte inteira do resultado, enquanto


d -2 b−1 + ...+ d -k b−k +1 é a correspondente parte fraccionária. Multiplicando esta última
novamente por b e tomando a parte inteira do resultado obtemos d-2, e assim sucessivamente.

Exemplo 1.6: Converter 0.625 à base 2


0.625 × 2 = 1.250 ⇒ o primeiro dígito é 1
0.250 × 2 = 0.500 ⇒ o segundo dígito é 0
0.500 × 2 = 1.000 ⇒ o terceiro dígito é 1

Assim, (0.625)10 = (.101)2

9
Exemplo 1.7: Converter 0.1 à base 2

0.1 × 2 = 0.2 ⇒ o primeiro dígito é 0


0.2 × 2 = 0.4 ⇒ o segundo dígito é 0
0.4 × 2 = 0.8 ⇒ o terceiro dígito é 0
0.8 × 2 = 1.6 ⇒ o quarto dígito é 1
0.6 × 2 = 1.2 ⇒ o quinto dígito é 1
0.2 × 2 = 0.4 ⇒ o sexto dígito é 0

Donde, (0.1)10 = (.000110011 ...)2

ƒ Representação de ponto flutuante normalizada

Para resolver as dificuldades inerentes à representação de números muito grandes ou


muito pequenos, é conveniente utilizar a notação científica dos números, que consiste em
representar cada número X na forma:
X = ± M ⋅ bE

na qual, M é um número real não negativo denominado mantissa, b≥2 é um inteiro positivo
denominado base e E é um inteiro denominado expoente. Fixada a base b, esta representação
não é única pois, por exemplo, X=0.1 pode ser escrito na base 10 de várias formas:

X = 0.1 = 0.1× 100 = 1.0 × 10−1 = 0.01× 101 = ...


Para resolver esta ambiguidade a mantissa deverá satisfazer as seguintes condições:

⎧M = 0 se X = 0

⎨1
⎪⎩ b ≤ M < 1 se X ≠ 0

Diz-se, neste caso, que se trata de uma representação normalizada. Nesta representação o
primeiro dígito da mantissa de um número diferente de zero é sempre diferente de 0.
É obvio que a notação científica, tal como anteriormente apresentada, não pode ser
implementada em computador, pois, para representar todos os números reais, a mantissa e o
expoente exigiriam um número infinito de dígitos. A notação científica é então modificada de
forma a se utilizar um número finito de dígitos (t) para a mantissa e um número finito de
dígitos (p) para o expoente. Obtém-se desta forma o denominado sistema de numeração de
ponto flutuante normalizado caracterizado por quatro parâmetros: a base (b), que é um

10
inteiro ≥2, o número de dígitos da mantissa (t) e os valores mínimo e máximo do expoente
(Emin e Emax, respectivamente). Este sistema, habitualmente representado por
F = F (b, t , Emin , Emax ) , é constituído pelo subconjunto dos números racionais da forma:

⎧ 1 1
E ⎪ ≤ M ≤1− t
X = ± M ⋅b em que : ⎨ b b
⎪E ≤ | E | ≤ E
⎩ min max

acrescido de uma representação especial para X = 0 .


Supondo b=2
X = ± M × 2E

na qual a mantissa normalizada M satisfaz


1
≤ M <1
2

Desta forma um X não nulo pode armazenar-se utilizando t+p+1 bits como se segue:

Um bit para o sinal: o bit (designado por bit de sinal) armazena o sinal de X

Um expoente com extensão (característica) de p bits : p bits armazenam a


representação binária do inteiro sem sinal,

E + E0 = (d p −1 ... d1 d 0 )2 = d p −1 2 p −1 + ... + d1 21 + d 0 20

Uma mantissa normalizada de t bits: t bits armazenam a representação binária da


fracção sem sinal,

d −1 d − 2 d
M = (. d −1 d − 2 ... d −t )2 = 1
+ 2 + ... + −t t
2 2 2

Este sistema de numeração de ponto flutuante, F, pode então, em alternativa, ser


caracterizado pelos seguintes quatro parâmetros: a base b, o número t de dígitos da mantissa, o
número p de dígitos da característica e a extensão E0, ou, de acordo com a notação anterior

F = F ( b, t, p, E0 )
p
Existem 2 características E+E0, sendo a menor e a maior, respectivamente

(0...00)2 = 0
p
(1...11)2 = 1x2p-1 + ... + 1 x 21 + 1 x 20 = 2 - 1
A extensão E0 é, em geral, igual a 2p-1, em cujo caso

11
E ≤ (2 p − 1) − 2 p −1 = 2 p −1 − 1
pelo que,
− 2 p −1 ≤ E ≤ 2 p −1 − 1
ou seja, Emin = − 2 p −1 e Emin = 2 p −1 − 1 .

ƒ Exemplos de representação de números reais em computador

Como referimos, os sistemas de numeração utilizados pelos computadores contêm apenas


um número finito de números, cada um com um número finito de dígitos. Quais os números
que fazem parte desses sistemas? Vamos procurar responder a esta questão através de dois
exemplos.

Exemplo 1.8: Considere o sistema hipotético F (2, 3, − 1, 2) . Determine quais os números


que fazem parte desse sistema de ponto flutuante e a forma como os mesmos se situam ao
longo da recta real.
1
Como b=2, x = ± M × 2 E em que a mantissa normalizada M satisfaz ≤ M < 1 . As mantissas
2
normalizadas serão da forma (1 ? ? ) . Portanto, os números reais positivos representados
neste sistema serão formados pelos seguintes 4 conjuntos de números:

(.0100)2=1/4 (.0101)2=5/16 (.0110)2=6/16 (.0111)2=7/16, para E –1


(.100)2=1/2 (.101)2=5/8 (.110)2=6/8 (.111)2=7/8, para E= 0
(1.00)2=1 (1.01)2=5/4 (1.10)2=6/4 (1.11)2=7/4, para E=1
(10.0)2=2 (10.1)2=5/2 (11.0)2=6/2 (11.1)2=7/2, para E=2

Estes números estão representados na Figura 3. Os restantes elementos de F são os simétricos dos
anteriores e o número zero, perfazendo um total de 33 números. É de salientar a não existência de
números nos intervalos [-1/4,0] e [0,1/4], sendo o número positivo mais pequeno representável
xmin =1 / 4 . Verifica-se que os elementos de F são mais densos próximo de xmin e menos densos
quando se aproximam de xmax . Tal como nos inteiros, um número superior a xmax produz uma
mensagem de erro de “overflow”; por outro lado, um número positivo inferior xmin produz uma
mensagem de erro chamada “underflow”.

Figura 3 - Números reais positivos que fazem parte do sistema de ponto flutuante

12
Exemplo 1.9: Representação de um real em precisão simples num PC

Um real é armazenado em 32 bits (uma palavra) como F(2,24,8,128), ou seja, em binário


com t=24 bits reservados para a mantissa, p=8 bits para o expoente e E0=128.

Os 32 bits são distribuídos da seguinte forma: o primeiro bit é utilizado para o sinal da
mantissa, os 8 bits seguintes são reservados para o expoente E, e os últimos 23 bits para a
mantissa. Na forma de vírgula flutuante normalizada, o primeiro dígito da mantissa é
sempre 1 e, portanto, sendo conhecido, não necessita ser armazenado - bit implícito. Isto
explica porque os 24 dígitos da mantissa são armazenados apenas em 23 bits.

A mantissa normalizada de 24 bits é um número entre 1/2 (não 2-24) e 1-2-24.

Se os 8 bits destinados ao expoente apenas fossem utilizados para inteiros positivos, o valor
do expoente poderia variar entre 0 e 28-1=255 ; no entanto, o expoente tem que incluir
números negativos. Para armazenar tanto inteiros positivos como negativos, o expoente em
decimal é adicionado de E0=128 e convertido em binário. Por exemplo, se o expoente é -3,
então -3+128 = 125 é convertido em binário e armazenado nos 8 bits. Desta forma, o
expoente poderá variar entre:

0 - 128 = -128 e 255 - 128 = 127

Para cada expoente E, as 223 mantissas normalizadas possíveis verificam 0.5≤M<1-2-24 e


representam 223 números reais positivos no intervalo [2E-1,2E[. Podemos então concluir que
os números reais positivos representáveis se encontram no intervalo [r,R] em que:

r = número positivo mais pequeno = 0.5 x 2-128 = 2-129 ≈ 1.5 x 10-39

R = número positivo maior = (1-2-24) x 2127 ≈ 1.7 x 1038

No entanto, o intervalo [r,R] está dividido em 256 subintervalos:

2 2 3 254 255 255


[1
r,2r
23[ , [1
24r,2
24 3 r[ , [1
24 r,2
24 3 r[ , ... , [1
2 42 r, 243 r[ , [1
242r,4
R[
3
E = −128 E = −127 E = −126 E =126 E =127

cada um deles duas vezes maior que o seu predecessor e contendo cada um 223 números
reais positivos equidistantes.

NOTA: A representação binária de uma mantissa normalizada M pode ser extensa. Alguns
computadores armazenam M utilizando "janelas em octal" de 3 bits, sendo cada uma delas
capaz de armazenar os dígitos octais 0,1,...,7. Outros utilizam "janelas hexadecimais" de 4 bits,
sendo cada uma capaz de armazenar os dígitos hexadecimais 0,1,...,9,A,...,F. Por exemplo,
considere uma mantissa de 24 bits

13
M = (.101 000 100 000 000 000 000 000)2

No caso de se utilizar aritmética de base 8, M apareceria como 8 "janelas octais"


5 4 81
M = (.101 000 100 000 000 000 000 000 )2 = (.50400000 )8 = 1
+ 3
=
8 8 128
enquanto que se fosse utilizada aritmética de base 16, M apareceria sob a forma de 6 "janelas
hexadecimais"
10 2 81
M = (.101 000 100 000 000 000 000 000 )2 = (. A20000 )16 = 1
+ 2
=
16 16 128

Assim, para os números armazenados como ±M.8E ou ±M.16E em vez de ±M.2E a utilização de
aritmética de base 8 ou 16 não altera o valor da mantissa M; apenas permite representá-la de
uma forma menos complicada.

4. Valores aproximados, erros e precisão.

Quando um real não pertence ao sistema de numeração dum computador é representado


por um número desse sistema por arredondamento. A discrepância entre o real e o valor
arredondado é denominada de erro de arredondamento. Duas medidas podem ser utilizadas
para o quantificar: o erro absoluto e o erro relativo.

Seja x o valor aproximado duma quantidade cujo valor exacto é x. O erro de x é


definido como:
Δx = x − x

Define-se ainda erro absoluto de x como o valor absoluto de Δx, ⏐Δx⏐.

22
Exemplo 1.10: No cálculo do perímetro molhado de um colector considerou-se π = como
7
aproximação de π = 3.14159265... . Qual o erro da referida aproximação?

Convertendo 22/7 na forma decimal, vem


π = 3.14159265...
π = 3.14285714...
logo, Δπ = − 0.00126449...

14
Nos números anteriores, os ... indicam que os números possuíam mais dígitos, mas que
nós não queremos ou não podemos continuar a representá-los. Uma situação deste tipo ocorre
sempre que um número não pode ser representado por um número finito de casas decimais.
Sempre que no decurso dos cálculos ocorra uma situação análoga, temos que decidir com
quantos dígitos queremos trabalhar. Este aspecto é de particular importância no caso de
utilizarmos computador pois, como veremos posteriormente, este retém apenas um número
fixo de algarismos.
Como estamos a lidar com aproximações, é necessário estabelecer critérios para avaliar o
seu grau de precisão. Para o exemplo anterior, se estivéssemos a trabalhar com 3 casas
decimais,
π = 3.142 e Δπ = 0.0004073 ... < 0.5 × 10 −3

Em geral, dizemos que x é o valor aproximado de x, arredondado para k casas decimais


correctas, se e só se:

Δ x = x − x ≤ 0.5 × 10 −k (4)

A importância dum erro pode, em geral, ser melhor apreciada se o compararmos à


quantidade a ser aproximada, i.e., utilizando o erro relativo:

Δx Δx
rx = ou rx =
x x

O erro relativo expressa o erro como uma fracção de | x | e está relacionado com o erro

percentual, ou percentagem de erro, definido como: 100 × rx .

Na prática o que se utiliza é um limite superior de qualquer dos erros, uma vez que para
conhecermos Δx ou rx teríamos de conhecer o valor exacto de x.
Necessitamos então de uma fórmula em função do valor aproximado x . Como:

| x | = | x − ( x − x) | ≥ | x | − | x − x | = | x | − | Δx |
obtemos
| Δx |
|rx|≤ (5)
| x | - | Δx |

Portanto, conhecido x e um limite superior para | Δ x | podemos obter um limite superior

15
para | r x | . Se soubermos que | Δ x | é muito pequeno quando comparado com x então (5)

pode simplificar-se para:

| Δx |
|rx|≈
x

Épsilon da máquina

Um indicador importante da precisão do sistema de ponto flutuante utilizado pelo


computador consiste em saber qual a diferença entre dois números possíveis de serem
representados. Qual será a diferença entre dois números consecutivos representados pelo
computador? Essa diferença dependerá da grandeza dos números. Se o número positivo
for x1 = M 1 × 2 E , o número seguinte com o mesmo expoente que o computador armazena

será x2 = ( M 1 + 2 −t ) × 2 E (o qual corresponde a aumentar em uma unidade o dígito menos

significativo da mantissa). Portanto teremos x2 − x1 = 2 E −t . Observe-se que qualquer

número x = M × 2 E no intervalo ( x1 , x2 ) será aproximado por arredondamento a fl ( x) = x1


ou fl ( x) = x2 , segundo o extremo do intervalo do qual esteja mais perto. O erro absoluto

cometido será então x − fl ( x) = x2 − x1 / 2 = 2 E −t −1 . Claramente, o erro absoluto será tanto

maior quanto maior for o valor de x.


A cota para o erro relativo, pelo contrário, permanece constante. Com efeito,

x − fl ( x) x2 − x1 2 E −t −1 1
rx = < = E
= × 2 −t −1 ≤ 2 −t
x 2 x M ×2 M

É fácil comprovar que a cota do erro relativo se multiplicaria por 2 no caso de se utilizar
arredondamento por corte, ou seja:

x − fl ( x) ⎧⎪2−t para arredondamento simétrico


rx = ≤⎨
x ⎪⎩21−t para arredondamento por corte

A diferença entre 1 e o menor número 1+ε que é maior que 1 mas que não se armazena como 1
é designado épsilon da máquina ou unidade de arredondamento da máquina. Denota-se εM.
Para um computador que armazena mantissas normalizadas de t bits,

16
⎧ 21−t se o computador trunca ao armazenar
ε M = ⎨ −t
⎩2 se o computador arredonda ao armazenar

pelo que εM é um majorante do erro relativo, ou seja, se fl(x) é a representação em F de um


número real x, o seu erro relativo não excede εM ( fl ( x) = x (1 + δ ) , δ ≤ ε M ). É por isso

fundamental conhecer o εM do sistema de ponto flutuante que se usa.

Em resumo, a explicação anterior do armazenamento de reais no computador permite


então concluir que:

• qualquer computador apenas pode armazenar um número finito de números


reais;

• os números diferentes de zero estão armazenados nos intervalos [-R,-r] e


[r,R] duma forma não uniforme. A máxima densidade encontra-se nas
proximidades de r (real mais pequeno) e a mínima densidade próximo a R
(maior real representável);

• o erro absoluto na representação de um real X num sistema de ponto


flutuante F(b,t,p,E0) depende da grandeza de X. Quanto maior o valor
absoluto de X, maior o erro de arredondamento. No entanto, o erro relativo
permanece sensivelmente constante ao longo da recta real. O épsilon da
máquina é uma cota ou limite superior desse erro.

Erro relativo e número de algarismos significativos correctos

Na representação decimal de um número, um algarismo diz-se significativo se é


qualquer dos dígitos: 1,2,...,9 ou 0, desde que não sirva simplesmente para fixar a posição
do ponto decimal ou preencher o lugar de dígitos desconhecidos. Por exemplo, cada um dos
números: 1360, 1.360, 0.001360 tem 4 algarismos significativos correctos.
O erro relativo está relacionado com o número de algarismos significativos correctos.
Dizemos que um algarismo significativo é correcto, se arredondado o número aproximado
precisamente depois desse digito vier um erro absoluto inferior em 0.5 na posição daquele
digito. Assim, no caso de escrevermos os números em notação científica normalizada diz-se
que x = ± (0. d1 d 2 ... d n )10 × 10 E é uma aproximação de x com n algarismos significativos, se:

17
Δ x = x − x ≤ 0.5 × 10 E −n (6)

expressão equivalente a (4). Alternativamente, o número de algarismos significativos dum


valor aproximado, o qual dá boa informação sobre a qualidade dessa aproximação, pode
também relacionar-se com o erro relativo dessa aproximação. Em particular, se conhecermos
um número podemos calcular um limite superior para o erro relativo do respectivo valor
aproximado e vice-versa. Assim:

• Teorema 1: Se o primeiro algarismo significativo do valor aproximado é a1 ≠ 0 e esse

valor aproximado tem pelo menos n algarismos significativos correctos, então o seu erro
relativo não excede:
1
(7)
a1 × 10n−1

Demonstração: considere um valor aproximado x = ± (0. a1 a2 ... an ) × 10 p , com p

inteiro, possuindo n algarismos significativos correctos. Então, de acordo com (6),


1
Δx = x−x ≤ × 10 p −n
2

Como, por definição: x − Δ x ≤ x ≤ x + Δ x poderá escrever-se:

x ≥ x − Δ x ≥ 0. a1 × 10 p − Δ x

pelo que,
Δx 0.5 × 10 p −n
rx = ≤
x 0.a1 × 10 p − 0.5 × 10 p −n
ou:
1
rx ≤
2 a1 × 10 n −1 − 1
Como, por outro lado:

2 a1 × 10 n −1 − 1 ≥ a1 × 10 n −1
vem:
1
rx ≤ c.q.d.
a1 × 10 n −1

18
Pode também demonstrar-se o seguinte resultado:

• Corolário: Se o valor aproximado x tiver dois ou mais algarismos significativos


correctos, isto é, n≥2, então,

1
|rx|≤ (8)
2 × a1 × 10n −1

Exemplo 1.11: Qual o limite superior do erro relativo quando se toma π =3.14?

Como a1=3 e n=3, obtém-se de (8):


1 1
| rπ | ≤ 3−1
=
2 × 3 × 10 600

Exemplo 1.12: Quantos algarismos significativos correctos devem considerar-se


no cálculo de √20 de forma que o erro não exceda 0.1% ?

Como o primeiro dígito é 4 (√20=4.4721...),


1
≤ 0.001
4 × 10 n−1
pelo que:
10 n −1 ≥ 250 e n ≥ 4.

O Teorema e Corolário anteriores permitem determinar limites superiores para os erros


relativos a partir do número de algarismos significativos correctos.
Para solucionar o problema inverso, ou seja, determinar o número de algarismos
significativos correctos de um número aproximado conhecido o erro relativo, não se pode
utilizar o recíproco do teorema anterior, pois, em geral, não é verdadeiro (verifique, por
exemplo, com π =3.141).
Pode porém afirmar-se o seguinte:

19
• Teorema 2: Se a1≠0 é o primeiro algarismo significativo do valor aproximado x de um
número cujo erro relativo não excede

1
(9)
2 ( a1 + 1 ) × 10 n −1

então esse valor aproximado x tem pelo menos n algarismos significativos correctos.

1 −n
Como 1≤a1≤9 então 2≤a1+1≤10 pelo que o mínimo valor da fracção (9) é: 10 . Por
2
conseguinte:

• Corolário: x aproxima x com pelo menos n algarismos significativos correctos se

| rx | ≤ 0.5 × 10 − n (10)

Verifique-se a analogia entre (10) e (4).

5. Propagação do erro

É verdade que os erros de arredondamento são geralmente pequenos mas, quando


repetidos em algoritmos longos e complexos, podem ter efeitos catastróficos. São
abundantemente citados na bibliografia dois exemplos notáveis: a explosão do míssil
Arianne a 4 de Junho de 1996, gerada por um erro de overflow no computador de bordo e o
fracasso do míssil americano Patriot durante a Guerra do Golfo em 1991, devido a um erro
de arredondamento no cálculo da sua trajectória. Neste ponto iremos analisar como se
propagam os erros de arredondamento no cálculo de funções.
Abordaremos primeiro o caso de uma função de uma variável. Suponhamos, então,
que pretendemos calcular o valor y = f (x) utilizando uma aproximação x de x. Em geral,
f (x ) não coincide com f (x) . Seja, assim, por definição y = f (x ) . Qual será o erro cometido
nesta aproximação?
É claro que o erro Δ f = Δ y = y − y dependerá do erro | Δ x | e também da função f .
Se a função f for continuamente diferenciável, a aplicação do teorema do valor médio permite
escrever

| Δ f | = | f ' (ξ ) | | Δ x |

20
com ξ ∈ ( x , x) . Como este ponto não é conhecido com rigor, poderemos conhecer um
majorante de | Δ f | se substituirmos a derivada de f por um seu limite superior, ou seja

| Δ f | ≤ | f ' ( x) |max. | Δ x | (11)

Nesta expressão, o valor máximo da derivada é calculado no intervalo [ x − Δ x , x + Δ x ].

Exemplo 1.13: Determine um majorante do erro (absoluto) que se comete ao aproximar

o valor x por x , onde x = 4.00 é um valor aproximado de x com 3 algarismos

significativos correctos.

1
Como f ( x) = x vem f ' ( x) = .
2 x
Sendo x = 4.00 com n=3 podemos concluir que 3.995 ≤ x ≤ 4.005 . Então:
1
max f ' ( x) = , pelo que:
3.995≤ x ≤ 4.005 2 3.995
1
Δf ≤ × 0.5 ×10 −2 ≈ 0.12508 ×10 −2
2 3.995

A relação (11) é facilmente generalizável a uma função f que dependa de qualquer


número de variáveis. Seja f ( x1 , x1 , ... , xn ) uma função de R em Rn, que se considera

continuamente diferenciável. A aplicação do teorema do valor médio para funções de n


variáveis permite obter:

n ⎛ ∂f ⎞
|Δ f | ≤ ∑ ⎜⎜ ∂x | Δ xi |⎟

(12)
i =1 ⎝ i max ⎠

que constitui a chamada fórmula de propagação do erro absoluto.

21
Exemplo 1.14: Dada uma função f(x,y,z) das variáveis x,y,z determinar um limite
superior do valor absoluto do erro que vem para o valor da função f , quando se

utilizam os valores aproximados x , y , z .

A aplicação da fórmula de propagação do erro (12) a este problema conduz a:

∂f ∂f ∂f
| Δf | ≤ | Δx | + | Δy | + | Δz |
∂x max ∂y max
∂z max

Em geral, em problemas práticos, esta expressão é substituída por:


∂f ∂f ∂f
| Δf | ≤ | Δx | + | Δy | + | Δz |
∂x ( x, y , z ) ∂y ( x, y , z )
∂z ( x, y , z )

Exemplo 1.15: Determinar um limite superior do erro absoluto do volume de uma


1
esfera, V = π d 3 , se o diâmetro é d= 3.7 ± 0.05 cm e π≈3.14.
6

Considerando π e d como variáveis, calculam-se as derivadas parciais


∂f 1 3
= d = 8.44
∂π 6

∂f 1
= π d 2 = 21.5
∂d 2
Utilizando a fórmula de propagação do erro (12)

∂V ∂V
|ΔV | ≤ Δπ + Δd =
∂π ∂d
= 8.44 × 0.005 + 21.5 × 0.05 = 1.117 cm3 ≈ 1.1 cm3

1
e portanto: V = π d 3 ≈ 26.5 cm3 ± 1.1 cm3
6

Com base na fórmula de propagação do erro (12), podemos facilmente encontrar as regras para
a propagação de erros nas 4 operações aritméticas. Assim, para o erro absoluto:

22
| Δ ( x ± y) | ≤ | Δ x | + | Δ y |

| Δ ( x ⋅ y ) | ≈ | Δx || y | + | Δy || x |

| Δx || y | + | Δy || x |
| Δ ( x/y ) | ≈
y2

Enquanto que para o erro relativo virá:

x y
| r ( x± y ) | ≈ | | |rx|+| || r y |
x± y x± y

| r ( x⋅ y ) | ≈ | r x | + | r y |

| r ( x/y ) | ≈ | r x | + | r y |

Analisando as expressões anteriores, verifica-se que dois tipos de situações podem constituir
uma importante fonte de erros ao trabalhar com aritmética de ponto flutuante:

(a) quando se soma (ou subtrai) um número muito pequeno a (de) um número de muito
maior ordem de grandeza;
(b) quando se subtraem números muito próximos.

Para efectuar um teste do caso (a), em computador, considere novamente o Exemplo 1.1,
referido no início do capítulo.

Exemplo 1.1: Efectue um programa de cálculo que adicione dez mil vezes o valor
0.00001 a uma unidade. Compare o resultado obtido com o resultado exacto calculando a
percentagem de erro.

O resultado obtido num PC a trabalhar em simples precisão é: SUM=1.100136. Como o


resultado exacto é SUM=1.1, vem
1.1 − 1.100136
× 100 ≈ 0.0124 %
1 .1

23
Para explicar porque ocorrem os erros de arredondamento do exemplo 1.1, considere-se
o cálculo de 1+0.00001 num computador em simples precisão. As representações
binárias de 1 e de 0.00001 são, respectivamente,

(1)10 = ( .1000 0000 0000 0000 0000 0000 ) 2 × 21

(0.00001)10 = ( .1010 0111 1100 0101 1010 1100 ) 2 × 2 −16

A soma destes dois números resulta

(1)10 + (0.00001)10 =

= ( .1000 0000 0000 0000 0101 0011 1110 0010 1101 0110 0 ) 2 × 21

No entanto, os últimos dígitos da mantissa (sublinhados) terão que ser aproximados, já


que a mantissa pode apenas armazenar 24 dígitos. Logo, o resultado do cálculo será
armazenado como

(1)10 + (0.00001)10 ≈ ( .1000 0000 0000 0000 0101 0100 ) 2 × 21

que é equivalente a (1.0000 0001 36)10 . Então, sempre que 0.00001 é somado a 1, o
resultado tem um erro de 0.0000000136. Quando a adição é repetida dez mil vezes, é
gerado um erro de exactamente dez mil vezes 0.0000000136.

Atente-se agora no segundo tipo de situação que pode constituir importante fonte de
erros, referenciada anteriormente por (b). Analisando a fórmula do erro relativo da subtracção,
conclui-se que se x e y são números muito próximos o valor x-y torna-se muito pequeno, e
consequentemente o erro relativo da diferença dos dois números pode amplificar-se muito.
Esta amplificação do erro relativo designa-se por cancelamento subtractivo e corresponde,
portanto, à perda de algarismos significativos (e consequente aumento do erro relativo)
resultante da subtracção de números muito próximos.

24
Exemplo 1.16: Para x = 14000 , determine x +1 − x , arredondando todos os números
(base 10) a 7 algarismos significativos. Sugira uma forma de evitar o cancelamento
subtractivo.

Como x + 1 ≈118.3258 (7 a.s.c.) e x ≈118.3216 (7 a.s.c.) , vem:

x +1 − x ≈ 118.3258 − 118.3216 = 0.0042 ,

que apenas tem 2 a.s.c.. De facto, para valores de x positivos e “elevados”, x +1 ≈ x , o

que irá implicar cancelamento subtractivo no cálculo de x +1 − x .

Uma possível solução consiste em utilizar a fórmula de cálculo alternativa

x +1 − x = ( x +1 − x ) x +1 +
x +1 +
x
x
=
1
x +1 + x
.

Ora, 1
14001 − 14000 = ≈
14001 + 14000

1
≈ = 0.004225696
118.3258 + 118.3216

que tem 7 a.s.c., já que 14001 − 14000 = 0.004225695816...

Exemplo 1.17: Um fenómeno idêntico pode ocorrer no cálculo das raízes de uma equação
do 2º grau utilizando a fórmula habitual. No caso de

b2 << | 4 a c | , então b2 - 4 a c ≈ | b |

pelo que ocorre no numerador da fórmula resolvente um cancelamento subtractivo.

Neste caso pode obviar-se ao problema se utilizarmos a seguinte forma alternativa para
calcular as raízes da equação do 2º grau:

−2c −b − b2 − 4 a c
x1 = , x2 = se b > 0
b+ b2 − 4 a c 2a

−b + b −4ac
2
−2c
x1 = , x2 = se b < 0
2a b − b2 − 4 a c

25
O cancelamento subtractivo explica também os resultados obtidos no Exemplo 1.2, ou
seja, a razão porque a aproximação não se torna mais exacta quando Δx se aproxima de zero.
Para um Δx suficientemente pequeno, o numerador de d perde significado devido ao
cancelamento subtractivo e este erro, por sua vez, amplifica-se quando se divide por Δx. Uma
vez iniciado o cancelamento subtractivo, as diminuições sucessivas de Δx fazem com que
a+Δx se arredonde a a ou f(a+Δx) e f(a) coincidam com a precisão da máquina, pelo que se
obtém d=0.
A propagação do erro pode também estar relacionada com o tipo de problema
matemático que se pretende resolver. Em geral, diz-se que um problema matemático é mal
condicionado se for muito sensível a pequenas alterações nos seus dados; se a solução
apresenta fraca sensibilidade às variações nos dados, o problema diz-se bem condicionado.

Exemplo 1.18: (problema mal condicionado) Considere-se o problema de resolver a equação


x 1 1
de 2º grau: x 2 − + = 0 cujas raízes são x1 = x2 = . Se usarmos coeficientes
3 36 6
arredondados a 6 casas decimais correctas (pequena variação nos dados) obtém-se a equação:

x 2 − 0.333333 x + 0.027778 = 0 , que não tem raízes reais!

Um método numérico diz-se instável se os erros se amplificam no decurso dos


cálculos, de forma a afectar significativamente o resultado final; caso contrário, o método
diz-se estável. Um método estável produz sempre bons resultados (aplicado a problemas
bem condicionados).

6. Erros de truncatura. Série de Taylor.

Não se vai dar grande relevo neste capítulo aos erros de truncatura pois, como vimos
anteriormente, dependem do método numérico utilizado e por isso serão individualmente
analisados ao estudar os vários métodos no decurso dos diferentes capítulos da disciplina.
Vamos limitar a análise a um exemplo concreto que ajuda a uma melhor percepção deste tipo
de erros e introduz uma das formulações matemáticas mais utilizadas no âmbito dos métodos
numéricos: a série de Taylor.

26
Após termos visto como é que os computadores representam os números a pergunta
que se segue é: como representam as funções? Como referido, os computadores apenas
podem executar as quatro operações aritméticas básicas: adição, subtracção, multiplicação
e divisão. Assim, por exemplo, um computador pode representar facilmente
f ( x) = a x 2 + b x + c pois esta função envolve apenas operações aritméticas básicas. Em
x dy
contraste, funções transcendentes, como por exemplo, ln x = ∫ , envolvem, para além das
1 y

operações aritméticas básicas, outras operações, neste caso integração. Vejamos então uma das
formulações matemáticas mais utilizadas no âmbito dos métodos numéricos para exprimir
funções: a série de Taylor.
Consideremos uma função f(x) contínua e com derivadas contínuas, de qualquer ordem,
na vizinhança de x = x0 . Esta função pode ser representada de forma exacta e única em

qualquer ponto x na vizinhança de x = x0 (mais exactamente, no intervalo ]x0 − R, x0 + R[ ,


denominado intervalo de convergência, onde R é o raio de convergência da série para x = x0 )
através da série de potências infinita:

f ' ' ( x0 ) f ( n ) ( x0 )
f ( x) = f ( x0 ) + f ' ( x0 ) ( x − x0 ) + ( x − x0 ) 2 + ... + ( x − x0 ) n + ... =
2! n!
(13)
∞ (k )
f ( x0 )
= ∑ k!
( x − x0 ) k
k =0

designada representação em série de Taylor da função f(x).


No caso particular em que x = x0 = 0 , a expansão de Taylor é designada por série de
Maclaurin,

(n) ∞ (k)
f ′′(0) 2 f (0) n f (0) k
f ( x) = f (0) + f ′ (0) x + x + ... + x + ... = ∑ x (14)
2! n! k=0 k!

A título de exemplo, as séries de Maclaurin de ex, sin x e cos x são, respectivamente,

x 2 x3 xn
ex = 1 + x + + + ... + + ... (15)
2! 3! n!

27
x3 x5 x 7
sin x = x − + − + ... (16)
3! 5! 7!

x 2 x 4 x6
cos x = 1 − + − + ... (17)
2! 4! 6!

Infelizmente, tal como um número finito de bits apenas consegue representar um


número limitado de números reais, um número finito de números podem representar apenas
um número limitado de funções. Embora muitas funções possam ser perfeitamente
representadas por sequências infinitas e operações aritméticas básicas, os computadores apenas
podem armazenar sequências finitas. Então, a sequência infinita que representa a função exacta
terá de ser artificialmente truncada para um número finito de termos. Muitos problemas
envolvem não apenas funções contínuas mas também operações sobre funções contínuas como
integração e diferenciação. Se as funções contínuas são substituídas por funções definidas
discretamente, então todos os operadores sobre funções contínuas têm também de ser
substituídos por operadores sobre funções definidas discretamente.
Se a série de Taylor (13) for truncada após o termo de ordem n, será expressa como:

f '' ( x0 ) f ( n ) ( x0 )
f ( x) = f ( x0 ) + f '( x0 )( x − x0 ) + ( x − x0 )2 + ... + ( x − x0 )n + Rn ( x)
2! n!
144444444444424444444444443
pn ( x)

em que p n (x) é designado por polinómio de Taylor de ordem n para f em torno de x0 e R n (x)

designado por erro de truncatura (representa o erro da aproximação f ( x) ≈ p n ( x ) ao truncar os

termos de ordem n+1 e superiores) associado a p n (x) . Este erro pode ser expresso por:

f ( n +1) (ξ )
R n ( x) = ( x - x0 )n +1 (18)
(n + 1)!

com ξ entre x e x0 . No caso de se verificar que R n ( x) → 0 a aproximação por polinómios de


n →∞

Taylor pode ser tão exacta quanto se queira, bastando para tal considerar um número

suficientemente elevado de termos. Como ξ não pode, em geral, ser determinado é apenas

28
possível calcular um limite superior para R n (x) pela consideração de um majorante para
( n +1)
f (ξ ) .

Exemplo 1.19: Da análise matemática sabemos que existe o limite:


x
⎛ 1⎞
lim ⎜1 + ⎟ cujo valor é o número irracional “e”. Através da definição não é
x →∞ ⎝ x⎠
possível calcular o valor exacto de “e”, tanto pela complexidade das operações a
efectuar como pela impossibilidade de atingir o limite. Recorre-se então a um
processo de cálculo mais simples, que fornece um valor aproximado desse número
dentro de um certo grau de precisão considerado satisfatório.

Utilizando (14) o valor de “e” pode ser expresso pela soma infinita (recorde que, por
definição, 0!=1):

1
e=∑
i =0 i!
Truncando a série, por exemplo após os 8 primeiros termos, obtemos:
7
1
e= ∑ i! ≈ 2.7182539 ,
i =0
cujas primeiras 4 casas decimais coincidem com o valor

exacto de “e”. Utilizando a fórmula do erro (18)


f (ξ )
( 8)
R 7 ( x) = R 7 (1) = (1 - 0 )8 , com 0 ≤ ξ ≤ 1 . Como f ( 8) ( x) = e x o valor máximo da
(7 + 1)!

e
derivada 0 ≤ x ≤ 1 será e, pelo que R7 ( x) ≤ ≈ 0.67 × 10 − 4 , o que de acordo com (4)
8!
garante pelo menos 3 casas decimais correctas. No caso deste exemplo, como
R n ( x) → 0 , quanto maior for o número de termos da série de Taylor considerados,
n →∞

mais nos aproximamos do valor exacto.

O exemplo anterior ilustra um método numérico para o cálculo do número "e" entre
outros possíveis.

29
Exemplo 1.20: A figura 4 ilustra graficamente a forma como a função cos x é aproximada no
intervalo 0 ≤ x ≤ π utilizando diferentes polinómios p k (x) , k=1, 2 e 3, obtidos truncando a série de
Maclaurin (14), ou seja:
πk
∞ cos 2 4 6
cos x = ∑ 2 x k = 1 − x + x − x + ...
k =0 k! 2 ! 4! 6!

2 4
x x
x
2 1− +
1− 2 4!
2
2 4 6
x x x
1− + − cos (x)
2 4! 6!

(× π )

Figura 4 - Gráficos de f ( x) = cos x e das aproximações obtidas por (15) para k = 1, 2 e 3.

Utilizando a expansão em série de Taylor, truncamos a série infinita, utilizando uma soma
parcial. Este tipo de erro, motivado por truncar uma série - erro de truncatura - é inerente à
maioria dos métodos numéricos.

7. Discretização

Um dos conceitos fundamentais do cálculo numérico é o de discretização. Consiste na


substituição de um problema contínuo (por exemplo, cálculo de uma derivada ou integral) por um
problema discreto. Suponhamos que se pretende calcular o perímetro de uma determinada elipse
com eixo maior e menor a e b, respectivamente. Esse perímetro será dado analiticamente pelo
integral

∫ (a )

∫ sin 2 x + b2 cos2 x dθ
2
P = ds =
0

30
que é um integral elíptico de segundo tipo, que não admite solução analítica. Por isso é que,
contrariamente ao caso do círculo para o qual


∫ ∫ r dθ = [r θ ]0 = 2 π R

P = ds = (19)
0

não se conhece a fórmula analítica do perímetro de uma elipse. O cálculo terá de ser efectuado
numericamente. Como veremos no Capítulo 5, o problema contínuo do cálculo do integral será
substituído pelo problema discreto do cálculo de uma soma, introduzindo um erro de discretização.

Exemplo 1.21: (Exemplo simples do conceito de discretização) Considere que se efectua o


cálculo aproximado do integral (19) pelo processo que se indica na Figura 5, isto é, dividindo
o perímetro do círculo em n partes iguais através da construção gráfica que se ilustra

(discretização do domínio). Como α = e o lado, l, de cada triângulo é dado por
n
⎛α ⎞
l = 2 R sin ⎜ ⎟ o valor aproximado do perímetro do círculo é:
⎝2⎠
sin (α / 2)
Paprox. = n l = 2 π R .
α /2
Como se verifica na Figura 5(b), quando n → ∞ o perímetro calculado numericamente tende

para o valor exacto ( Paprox. → P ). No entanto, qualquer que seja o valor n (finito), obteremos

sempre um valor aproximado para o perímetro do círculo devido ao erro de discretização


(truncatura) introduzido.

⎛α ⎞
l = 2 R sin ⎜ ⎟
⎝2⎠ Paprox.
P

n
(a) (b)

Figura 5 – Determinação aproximada do perímetro de um círculo: (a) discretização efectuada;


(b) convergência para o valor exacto quando n aumenta.

31
8. Métodos iterativos

Outra das ideias fundamentais dos métodos numéricos é a de iteração ou aproximação


sucessiva. Num sentido amplo, iteração significa a repetição de um processo. Um método
iterativo é um método numérico em que a solução do problema matemático é definida
como o limite de uma sequência
x1 , x2 , x3 , ... , xn , ...

definida por iteração, ou seja, através de uma equação iterativa.


O caso mais geral de uma fórmula de iteração estacionária de n pontos é
xk = g ( xk −1 , xk −2 ,... , xk −n ) , k = n, n + 1,...

em que a função de iteração g será, em geral, não apenas função de xk −1 , x k −2 , ... , x k −n mas
também de valores de f(x) e das suas derivadas em um ou mais desses pontos.
O caso mais simples corresponde às fórmulas de iteração estacionárias de um ponto que,
como veremos no Capítulo 2, têm a forma:

xk = g ( xk −1 ) , k = 1, 2, ...

Cada passo tem o nome de iteração. O índice k indica a iteração presente. O processo
tem que ser iniciado com uma aproximação inicial, x0.
Dada a aproximação inicial x0∈[a,b], um método iterativo diz-se convergente no caso
das sucessivas aproximações:
x1 , x2 , x3 , ... , xk , ...

tenderem para α, ou seja, lim xk = α .


k →∞

Como os nossos meios de cálculo são limitados, os processos iterativos devem ser
terminados ao fim de um número finito de iterações. Na prática, o processo termina quando
uma certa precisão for atingida. As condições impostas para que esta situação se verifique
definem o chamado critério de paragem (ou convergência) do processo iterativo (por exemplo,
xk estar próximo de α ou f ( xk ) ser próximo de 0, ou após um número máximo de iterações).

O erro de truncatura cometido corresponde à diferença entre o valor obtido, quando


da paragem do processo iterativo, e o valor exacto que seria obtido no limite.

32
Exercícios propostos

1. Utilize o desenvolvimento em série de Taylor para aproximar f(x)=cos x em xi+1=π/3 com


base no valor conhecido da função cosseno em xi=π/4. Determine os erros relativos cometidos
ao considerar aproximações de ordem 0, 1 e 2.

2. Efectue a representação interna do número: (-1000)10 como INTEGER*2.

3. Considere as seguintes representações hexadecimais (base 16) num INTEGER*2: 005C e


FFA4.
a) Mostre a relação existente entre aqueles dois inteiros na base 10.
b) Mostre as relações existentes na base 10 entre aquelas duas representações num
INTEGER*2 e as representações hexadecimais 0000005C e 0000FFA4 num INTEGER*4.

4. A uma variável inteira, declarada como INTEGER*2, corresponde a seguinte representação


interna em computador:
1000 0000 1000 1111
Qual o valor dessa variável? Justifique.

5. Efectue a representação interna do inteiro 9210 num INTEGER*4.

1
6. Mostre que o número não pode ser representado por uma expressão finita no sistema
5
binário.

7. Considere um computador hipotético que utiliza a representação de ponto flutuante


normalizada: F(b,t,p,E0) = F(2,12,4,8)
a) Determine o número de reais diferentes que esse computador consegue representar e o valor
do menor e do maior reais positivos desse conjunto.
b) Verifique se os reais: X1=(0.0390625)10 e X2=(0.05)10 pertencem ao conjunto finito dos
números reais representáveis. Justifique.
c) Qual o máximo erro que o referido computador pode cometer ao armazenar um número
real positivo no intervalo determinado em a). Justifique.
d) Qual a representação interna do número inteiro (-300)10.

8. Considere o formato simples para números reais em ponto flutuante: F(2,24,8,128)


para o qual o primeiro bit da mantissa é um bit implícito. Efectue a representação do decimal:
(-57.234375)10.

33
9. Considere um computador com uma palavra de 32 bits que utiliza a representação de ponto
flutuante normalizada: F(b,t,p,E0) = F(2,24,8,128)
a) Efectue a representação interna do número real (-2/15)10.
b) Efectue a representação interna do número inteiro (-10)10 , sabendo que o mesmo foi
declarado como INTEGER*2.

10.a) Considere um computador com uma palavra de 32 bits e um sistema de numeração em


ponto flutuante F(2,24,8,128). Efectue a representação interna do decimal: (-450.10)10.
b) Qual a gama de inteiros que o referido computador consegue representar quando a variável
é declarada como INTEGER*2? Justifique a sua resposta.

11. Considere um computador hipotético com uma palavra de 10 bits e um sistema de


numeração em ponto flutuante F(2,5,4,8).
a) Efectue a representação interna dos números: –10 (inteiro) e -10.0 (real).
b) Verifique se é possível representar de forma exacta o real: X=35.0.

12. Considere um computador que utiliza a representação de ponto flutuante normalizada:


F(b,t,p,E0) = F(2,24,8,128)
a) Efectue a representação interna do número real (-1/15)10.
b) Efectue a representação interna do número inteiro (-5000)10 , sabendo que foi declarado
como INTEGER*2.

13. Considere um sistema de ponto flutuante normalizado de base 2, constituído por palavras
de 8 bits, sendo 1 bit reservado para o sinal da mantissa, 3 bits para a magnitude do expoente
(E0=4) e 4 bits para a magnitude da mantissa. Calcule em decimal os limites positivos de
overflow e underflow desse sistema.

14. Mostre que: “ num sistema de ponto flutuante de um computador o valor do expoente
máximo é dado por: Emax = 2 p − 1 − E0 , sendo o valor de E0 dado, em geral, por: E0 = 2 p −1 ,
onde p representa o número de bits reservado para a característica C (C=E+E0)”. Justifique
convenientemente a sua resposta.

15. a) Mostre que num sistema de numeração de virgula flutuante normalizado F=F(b, t, p, E0),
no qual todos os dígitos da mantissa são armazenados, existem
2 (b − 1) b t − 1 ( E max − E min + 1 ) + 1

números reais distintos (Emin e Emax correspondem, respectivamente, ao mínimo (negativo) e ao


máximo (positivo) valores dos expoentes).

34
b) Considere b=2, t=2, p=3, E0=2p-1. Quais os números reais positivos representados neste
sistema?

16. Considere um sistema hipotético de ponto flutuante normalizado de base 2 que efectue a
representação de números através de uma palavra de 7 "bits" (b=2, t=3, p=3, E0=4).
a) Calcule em decimal os limites positivos de “underflow” e “overflow” e determine quantos
números distintos se podem representar nesse sistema.
b) Mostre que o maior número inteiro N (base 10), que tem a particularidade de qualquer
inteiro x satisfazendo: 0 ≤ x ≤ N ser representado de modo exacto em forma de ponto flutuante,
t
é dado por: N = 2 .

17. Do cimo de uma torre foi lançado verticalmente um corpo. A equação que rege o
respectivo movimento é:
1
s (t ) = v0 t + g t2
2
na qual g é a aceleração da gravidade (9.8 m/s2), s é o espaço percorrido (m), v0 é a velocidade
inicial com que o corpo é lançado (m/s) e t é o tempo de queda (s).
Sabendo que o corpo foi lançado com velocidade inicial de 5 m/s, podendo este valor
estar afectado de um erro absoluto que não excede 0.1 m/s, e que o tempo que o corpo levou a
atingir o solo foi estimado em 10 ± 0.1 s, determine um valor aproximado para a altura da torre
e obtenha um majorante para o respectivo erro.

18. O valor 1.315, com as três casas decimais correctas, corresponde ao raio, em metros, de
um círculo. Calcular a área do mesmo, assim como o número de algarismos significativos
do respectivo resultado. Considere para π o valor 3.142.

19. Justificando convenientemente os cálculos, determine o número de algarismos


2
significativos correctos que podemos garantir no resultado do quociente de e por π , quando
e = 2.718 e π = 3.14 .

20. A aceleração da gravidade (g) pode ser determinada empiricamente por medição do
período de oscilação (T) de um pêndulo de comprimento L através de: g = 4 π 2 L / T 2 .
Qual o número de algarismos significativos correctos necessários na medição de T para
garantir uma precisão de 0.2% na determinação de g, sabendo que o comprimento do
pêndulo foi avaliado em L = 5 ± 0.005 m. Considere, em primeira aproximação, que o
número de dígitos correctos utilizados na aproximação de π é suficientemente grande para
se poder desprezar o respectivo erro.

35
21. A capacidade de um depósito cilíndrico é dada por V = π (R − e ) h , onde R é o raio
2

exterior, e a espessura da parede e h a altura do depósito. Utilizando um aparelho que


garante uma precisão mínima de 0.1%, um operador obteve os seguintes valores
aproximados: R = 2.51 m , e = 0,20 m e h = 6,01 m .
a) Quantos algarismos significativos correctos tem cada uma daquelas medições?
b) Qual a aproximação a utilizar para π para garantir um erro máximo de 1% no cálculo do
volume do depósito?

22. O raio de uma esfera com 3 algarismos significativos correctos é igual a 1.00 m.
Determinar a aproximação que deve tomar para π , por forma a obter o volume da esfera
( V = 4 3 π R3 ) com uma precisão mínima de 5%.

23. Justificando convenientemente os cálculos, determine o número de casas decimais


correctas a obter na medição do raio e da altura de um depósito cilíndrico, com uma
capacidade de aproximadamente 25.00 m3. Considere o valor de π a utilizar nos cálculos com 5
algarismos significativos correctos e que a altura do reservatório é aproximadamente igual a
duas vezes o respectivo raio.

1
24. Pretende-se obter a capacidade de um reservatório cónico circular ( V = π r 2 h ) com 4
3
algarismos significativos correctos. Supondo que se utiliza nos cálculos um valor de π com 6
casas decimais correctas, qual terá de ser a precisão do aparelho de medida a utilizar na
obtenção das respectivas dimensões lineares do reservatório (raio, r, e altura, h). Justifique a
sua resposta.

25. Um construtor civil comprou um terreno de habitação à Câmara Municipal com uma área
de aproximadamente 150x200 m2. Na medição de cada um dos lados do terreno, comprimento
e largura, tolerou-se um erro de ± 5 cm por cada 10 metros.
a) Calcule a percentagem máxima de erro de que vem afectado o valor da área do terreno,
devido ao facto dos seus lados não terem sido medidos exactamente.
b) O construtor deseja dividir o referido terreno em lotes para habitação com aproximadamente
600 m2 cada um, admitindo uma percentagem máxima de erro de 1% em cada um deles. Por
este facto, não lhe é possível determinar com exactidão o número de lotes que se podem obter
com a área total do terreno. Qual é então o número máximo e o número mínimo de lotes que o
construtor poderá obter? Justifique.

36
26. Um depósito cilíndrico de secção elíptica tem um volume interior aproximadamente igual a
25 m3 (V=πabh, sendo a e b os semi-eixos da elipse e h a altura do depósito). Pretendendo-se
efectuar uma determinação mais rigorosa daquele volume interior (com 3 algarismos
significativos correctos), considerou-se o valor de π com 4 algarismos significativos correctos
e mediram-se a e b, tendo-se obtido a=1.311±0.001 m e o valor arredondado b =2.100 m.
a) Determinar limites superiores para os erros absolutos e relativos de π, a e b.
b) Determinar qual a precisão com que deve ser efectuada a medição da última dimensão, h,
por forma a conseguir-se o cálculo de V com a precisão desejada.
c) Supor agora que se pretende determinar V com 4 algarismos significativos correctos,
verificar se tal é possível recorrendo apenas ao aumento do número de algarismos
significativos de π e, em caso afirmativo, determinar esse número.

27. A capacidade de um depósito cilíndrico é dada por V= π (R-E)2 h, onde E representa a


espessura da parede, R o raio exterior da base e h a altura do depósito.
Dois operadores diferentes efectuaram as seguintes medições:

⎧ E = 0.20 ± 0.02 m ⎧ E = 0.18 ± 0.03 m


⎪ ⎪
1º operador ⎨ R = 2.60 ± 0.05 m 2º operador ⎨ R = 2.55 ± 0.05 m
⎪ h = 4.95 ± 0.10 m ⎪ h = 5.05 ± 0.08 m
⎩ ⎩
Utilizando com 4 algarismos significativos correctos, determinar:
a) O conjunto de medições mais correcto (medições que minimizam o erro relativo de V).
b) Os erros relativos máximos a consentir nas medições de E,R e h, de modo a garantir uma
capacidade V com 2 algarismos significativos correctos.

28. O módulo de Young E (módulo de elasticidade) pode ser determinado com base na
deflexão s que uma barra de secção rectangular sofre quando sobre a mesma se exerce uma
força F, através da seguinte expressão:

1 F l3
E=
4 a 3b s

onde l e a.b são, respectivamente, o comprimento da barra e a área da sua secção.


Sabendo que se conhecem os valores aproximados: F=20 Kgf, com erro relativo rF=10-3,
e s=2.5 cm, l=50 cm, a=3 mm, b=44 mm, com erros relativos rs = rl = ra = rb=10-2, calcular
uma aproximação Ē do valor exacto do módulo de Young E, e determinar uma estimativa da
percentagem de erro de que vem afectada essa aproximação.

37
29. Quantos algarismos significativos correctos se pode garantir que existem no resultado do
produto de 13.2 por 0.012579, supondo que os algarismos significativos destes números são,
todos eles, correctos. Justificar a resposta.

30. A capacidade de um depósito cilíndrico é dada por: V = π R 2 h onde, R é o raio interno e h


a altura do depósito. Supondo que: R = 2.5 ± 0.01 m e h = 4.0 ± 0.01 m .
a) Verifique se é possível calcular o volume do depósito com uma precisão de 1% .
b) Determine qual o menor número de algarismos significativos que deve tomar para o valor
de π, por forma a obter o volume do depósito com uma precisão mínima de 2%.

31. Dado 10 = 3.162278 , calcule com uma precisão mínima absoluta de 10-5 o valor de
10 − π . Justifique os cálculos.

38