Nos próximos tópicos estudaremos métodos numéricos para a solução de problemas que surgem no
cotidiano. Primeiramente, neste capítulo, faremos algumas considerações sobre alguns erros que
frequentemente surgem.
Observemos a sequência abaixo, que nos fornece as etapas na solução de um problema real:
- levantamento de dados,
- construção do modelo matemático,
- escolha do método numérico adequado,
- implementação computacional deste método,
- análise dos resultados obtidos,
- se necessário, reformular o modelo matemático e/ou escolher novo método.
A etapa “implementação computacional” não raramente poderá deixar de ser executada, uma vez
que, para os principais métodos numéricos, existem programas que facilmente podem ser adquiridos, quando
necessário.
Muitos leigos em cálculo numérico desprezam a última etapa da sequência acima, porém esta é tão
ou mais importante do que as demais etapas. Não é raro se chegar a resultados finais distantes do que se
esperava obter, ou até mesmo a outros que não tem relação alguma com o problema original. Se tal surpresa
ocorrer em primeiro lugar devemos verificar o processo de levantamento de dados, uma vez que esta etapa é
inerente ao processo de resolução. Outra ocorrência, bastante frequente, que também pode nos causar
resultados inesperados é o erro na representação de números. Por exemplo, se necessitarmos do número
para os nossos cálculos, teremos de nos contentar com uma aproximação deste, uma vez que o número é
irracional. Não devemos nos esquecer também que em geral os computadores operam na base 2 e existem
casos onde a representação de um número fracionário na base 2 possui infinitos dígitos, e assim sendo o
computador considerará uma quantidade finita destes dígitos, e é claro que esta quantidade depende da
máquina que estamos utilizando. Este tipo de erro é chamado de erro de truncamento ou erro de
arredondamento, dependendo do processo que se utiliza para representar tais tipos de números.
Em poucas palavras podemos dizer que o erro de arredondamento ocorre quando não podemos
utilizar todas as casas de um número e assim a(s) última(s) casas(s) a ser(em) considerada(s) é(são)
arredondada para uma unidade a mais ou a menos por alguma regra, enquanto que no erro de truncamento as
casas excedentes são simplesmente desconsideradas sem impactar as casas a serem utilizadas.
Na base decimal geralmente efetua-se o arredondamento. Em poucas palavras podemos dizer que o
erro de arredondamento ocorre quando não podemos utilizar todas as casas de um número e assim a(s)
última(s) casas(s) a ser(em) considerada(s) é(são) arredondada para uma unidade a mais ou a menos por
alguma regra, enquanto que no erro de truncamento as casas excedentes são simplesmente desconsideradas
sem impactar as casas a serem utilizadas. Na base decimal geralmente efetua-se o arredondamento, e para
isto várias regras existem, sendo que a mais utilizada estabelece que se consideraremos apenas até o p-ésimo
dígito de um número, para arredondá-lo devemos observar o (p+1)-ésimo dígito sendo que:
- se este for 0, 1, 2, 3 ou 4 então o p-ésimo dígito é mantido,
- se este for 6, 7, 8 ou 9 então o p-ésimo dígito é acrescido em uma unidade ou
- se este for igual a 5, então se o p-ésimo dígito for par então ele é acrescido em uma unidade e caso
contrário, ou seja se o p-ésimo dígito for ímpar, então ele é mantido.
1
Definição 1.1.1: Definimos como erro absoluto (EA) a diferença entre o valor exato de um número x
e de seu valor aproximado x (calculado geralmente por algum processo numérico):
EA x x.
Em geral, apenas o valor x é conhecido, sendo assim impossível obter o valor exato do EA. Mas
podemos obter limitantes superiores ou estimativas para o módulo do erro absoluto. Por exemplo, sabemos
que (314 . ) e assim tomaremos para
. ,315 um valor dentro desse intervalo e assim teremos
EA 0.01.
Observemos que o limitante para o EA deve ser diretamente proporcional à grandeza do número a ser
representado. Por exemplo, o limitante 0.1 para o erro absoluto na representação de um número da ordem de
103 é bastante significante, porém este mesmo limitante pouco significa na representação de um número da
ordem de 101 . Então, dependendo da ordem de grandeza dos números envolvidos, o erro absoluto não é
suficiente para descrever a precisão de um cálculo.
Definição 1.1.2: O erro relativo (ER) é definido como o erro absoluto (ER) dividido pelo valor
aproximado x :
EA x x
ER .
x x
Exemplo: Seja o número x (2112.8, 2113) representado por x 2112.9 e assim sabemos que
EA x 0.1 . Seja também o número y (5.2,5.4) representado por y 5.3 e assim EA y . .
01
Observe que não devemos considerar suficiente o limitante para o erro absoluto no cálculo de y ,
devido à grandeza do número y. Agora, se calcularmos os erros relativos obtemos:
ER x 4.7 10 5 ,
ER y 0.02 ,
confirmando, então, que o número x é representado com maior precisão que o número y.
Dada uma sequência das operações adição, subtração, multiplicação e/ou divisão é interessante ter a
noção de como é o erro em cada uma delas. O erro final é composto pelo erro de cada fator e pelo(s) erro(s)
no(s) resultado(s) da(s) operação(ões).
2
Como exemplo dos erros nas operações, considere que estamos trabalhando em uma máquina que
nos permite trabalhar com números com até 8 dígitos. Assim os números:
x = 2,00000043
y = 3,00000032
x = 2,0000004
y = 3,0000003.
x + y = 5,00000075
x y = 5,0000007,
Agora:
x y = 6,0000019300001376
x y = 6,00000180000012
Ainda mais, como nossa máquina nos permite apenas 8 dígitos, teremos como resposta da
multiplicação acima:
x y = 6,0000018.
Observe que com apenas uma multiplicação o erro, que em x ou y encontrava-se a partir da 8ª casa
decimal, passou a existir já a partir da 7ª casa.
No exemplo acima, não consideramos o sistema operacional da máquina, o sistema binário, na qual,
como veremos, outras intervenções ocorrem.
Observe que, ainda que as parcelas de uma operação estejam representadas exatamente em uma
máquina, não se pode esperar que o resultado de uma operação seja exato. Por exemplo, vamos supor que
3
estamos trabalhando em uma máquina que nos permite trabalhar com até cinco dígitos. Sejam ainda
x 9370 e y 12,72 , que podem ser inseridos em nossa máquina sem arredondamentos. Ao calcularmos o
produto destes valores obtemos como resultado x y 119186,4 e como nossa máquina nos mostra apenas
cinco dígitos teremos como resposta x y 11919 , valor completamente equivocado. Na verdade, em
situações como esta teríamos como resposta uma mensagem de erro. Para tentar minimizar este problema
vamos trabalhar este problema na notação científica: x 0.937 104 e y 01272
. 10 2 . Daí calculando-se
x y obtemos:
x y 01191864
. 10 6 .
Este é o resultado exato desta operação, mas nos será mostrado ou armazenado:
x y 01192
. 10 6
efetuando-se arredondamento. Veja que agora conseguimos, pelo menos, efetuar o produto desejado, e
E x.y 0.0000136 106 que é o mesmo que E x.y 0.136 102 .
Veremos a seguir as fórmulas para os erros absoluto e relativo nas operações aritméticas com erros
nas parcelas. Para isto sejam, x e y os valores exatos de certos números, e x e y respectivamente, seus
valores aproximados (calculados geralmente por algum processo numérico). Da expressão do erro absoluto
obtemos:
x x EA x
y y EA y .
Nos cálculos que seguem não serão considerados o erro de arredondamento ou truncamento no
resultado final de cada operação efetuada.
1.2.1 - Adição:
x y ( x EA x ) ( y EA y ) ( x y) ( EA x EA y ) .
Logo, o erro absoluto na soma, denotado por EA x y é a soma dos erros absolutos das parcelas, isto
é:
EA x y EA x EA y .
4
EA x y EA x EA y EA x EA y EA x x EA y y
ER x y
x y x y x y x y x x y y x y
x y
ER x ER y .
x y x y
1.2.2 - Subtração:
EA x y EA x EA y
x y
ER x y ER x ER y .
x y x y
1.2.3 - Multiplicação:
x y ( x EA x ) ( y EA y ) x y x EA y y EA x EA x EA y .
x y x y x EA y y EA x
EA x y x EA y y EA x .
x EA y y EA x x EA y y EA x EA y EA x
ER x y ER y ER x .
x y x y x y y x
1.2.4 - Divisão:
5
x x EA x x EA x 1
.
y y EA y y EA y
1
y
1
Representando o fator sob a forma de uma série infinita, teremos:
EA y
1
y
2 3
1 EA y EA y EA y
1
EA y y y y
1
y
e desprezando os termos com potências maiores que um (pois estes termos são números muito pequenos),
temos:
x x EA x EA y x EA x x EA y EA x EA y
1 2 2
.
y y y y y y y
Então:
x x EA x x EA y
2
,
y y y y
EA x EA y
uma vez que, 2
é um número muito pequeno.
y
Logo:
EA x x EA y y EA x x EA y
EA x 2 2
,
y y y y
y EA x x EA y
2
y y EA x x EA y y EA x EA y
ER x 2
ER x ER y .
y x y x x y
y
Outro erro bastante frequente é o erro nos dados, quando estes são obtidos através de medidas
experimentais, portanto sujeitos a imprecisões. Este tipo de erro não será aqui tratado, uma vez que
dependem dos procedimentos experimentais.
6
Falaremos agora um pouco sobre o erro de arredondamento, que como já dissemos é bastante
comum, e fica ainda mais evidente quando trabalhamos na base binária.
A representação usual dos números é feita utilizando um sistema de posicionamento na base 10, isto
é, o número 327.302 significa:
Em geral trabalhamos na base 10, porém, qualquer número natural B 2 pode ser utilizado como
base. Se B é a base escolhida, o número:
a n a n 1 a 2 a 1a 0 a 1a 2
a n Bn an 1 Bn 1
a 2 B2 a 1 B1 a 0 B 0 a 1 B 1
a 2 B 2
1 23 0 22 0 21 1 20 1 2 1
0 2 2
1 2 3
O nosso número x possui 7 dígitos na base binária, outros possuem mais e como sabemos, a
representação de muitos números fracionários na base 2 possui infinitos dígitos, no entanto, o computador
considerará uma quantidade finita destes dígitos, e é claro que esta quantidade depende da máquina que
estamos utilizando. Somente para efeito ilustrativo suponhamos que o nosso computador considera apenas 7
dígitos significativos. Assim se:
x = 1001,101
y = 1001,100,
ou seja,
1 23 0 22 0 21 1 20 1 2 1
0 2 2
0 2 3
x = 9.625
7
e
y = 9.5
como representaremos por exemplo 9.6 nesse nosso sistema? A resposta é, nesse sistema por nós criado,
com 7 dígitos 9.6 não pode ser representado exatamente, e assim deve ser arredondado para 9.5 ou 9.625.
Outro problema que ocorre quando um processo de arredondamento é utilizado é que ao contrário do
que é válido para os números reais, as operações de adição e multiplicação deixam de ser associativas ou
distributivas. Isto se deve ao fato de, numa serie de operações aritméticas, o arredondamento ser feito após
cada operação. Para efeito ilustrativo, considere por exemplo que estamos trabalhando na base 10, com
apenas 3 dígitos:
enquanto
enquanto
Assim, os erros de arredondamento introduzidos a cada operação influirão na solução obtida através
do método numérico utilizado. Como consequência, métodos numéricos equivalentes podem fornecer
resultados diferentes.
Acontece, muitas vezes, que esta transformação pode ser acometida de erros, em razão da limitação
da representação do equipamento computacional que estamos utilizando para o processamento dos dados
numéricos.
Como vimos, dado um número real, N, é sempre possível representá-lo em qualquer base B, da
seguinte forma:
a n Bn an 1 Bn 1
a 2 B2 a 1 B1 a 0 B 0 a 1 B 1
a 2 B 2
8
a n 2n an 1 2n 1
a 2 22 a 1 21 a 0 2 0 a 1 2 1
a 2 2 2
Exemplos:
a) (1011)2 = 1 23 + 0 22 + 1 21 + 1 20.
Veja que neste caso, o binário só tem a parte inteira e temos a3= 1, a2= 0, a1= 1 e a0= 1.
Neste caso, o binário tem parte inteira e parte fracionária e a2 = 1, a1 = 1, a0 = 1, a-1 = 0 e a-2 = 1.
a n 10 n an 1 10 n 1
a 2 10 2 a 1 10 1 a 0 10 0 a 1 10 1
a 2 10 2
Exemplos:
Neste caso, o número na base decimal tem parte inteira a parte fracionária e temos a2 = 2, a1 = 3,
a0 = 1, a-1 = 3 e a-2 = 5.
Assim, dado um número real qualquer numa base B, podemos escrevê-lo em uma base B´, a partir de
adequação conveniente de seus coeficientes ai = 0, 1, 2, 3, ..., (B-1) e de uma potência adequada na nova
base B´.
Exemplos:
a) (1101)2 = 1 23 + 1 22 + 0 21 + 1 20 = (13)10
9
1.4.4 – Mudança de base decimal para a base binária:
Veremos a conversão da base 10 para a base dois da parte inteira e depois da parte fracionária.
Exemplos:
Exemplos:
3
a) (0.1875)10 = (0.0011)2 = 0 2-1 + 0 2-2 + 1 2-3 + 1 2-4 = , isto é:
16 10
10
(0.1875)(2) = 0.375 parte fracionária = 0.375 e parte inteira = 0,
(0.375)(2) = 0.75 parte fracionária = 0.75 e parte inteira = 0,
(0.75)(2) = 1.5 parte fracionária = 0.5 e parte inteira = 1,
(0.5)(2) = 1.0 parte fracionária = 0 e parte inteira = 1.
c) (0.2)10 = (0.001100110011...)2
Convertendo o número (0.2)10 para a base binária obtemos (0.001100110011...)2, ou seja é uma
dízima periódica de período (0.0011). Assim, o decimal (0.2)10 não tem uma representação binária exata, e
assim, a representação será aproximada e, portanto, apresentará erro.
e
(0.d1d2...dt)
onde:
é a base em que a máquina opera (normalmente a base 2),
t é o número de dígitos na mantissa; 0 d j 1 , j = 1, ..., t, d1 0,
e é o expoente, no intervalo [-u, u].
Considere, por exemplo, uma máquina que opera no sistema F[10, 3, -5, 5], ou seja, no sistema onde
= 10, t = 3 e e [-5, 5]. Neste sistema os números serão representados na seguinte forma de sistema:
11
M = 0.999 105 = 99900.
Caso 1) x G: Por exemplo: x = 235.89 = 0.23589 103. Observe que este número possui 5 dígitos
na mantissa. Estão representados exatamente nesta máquina os números: 0.235 103 e 0.236 103. Se for
usado o truncamento, x será representado por 0.235 x 103 e, se for usado o arredondamento, x será
representado por 0.236 x 103.
Caso 2) |x| < m: Por exemplo: x = 0.345 10-7. Este número não pode ser representado nesta
máquina porque o expoente e é menor que -5. Esta é uma situação em que a máquina acusa a ocorrência de
underflow;
Caso 3) |x| > M: Por exemplo: x = 0.875 109. Neste caso, o expoente e é maior que 5 e a máquina
acusa a ocorrência de overflow.
Exemplo:
Dar a representação dos números a seguir num sistema de aritmética de ponto flutuante de três
dígitos para = 10, m = -4 e M = 4.
12