Cálculo Numérico
Aula 1: Computação numérica . Tipos de Erros. Aritmética de ponto flutuante
Computação Numérica
- O que é Cálculo Numérico?
Cálculo numérico é uma metodologia para resolver problemas matemáticos utilizando o computador.
São utilizadas apenas as operações que os computadores podem realizar, ou seja:
- quatro operações básicas (adição, subtração multiplicação e divisão)
- operações lógicas (comparação “=”, conjunção “e”, disjunção “ou” e negação “não”).
Uma solução obtida por meio de um método numérico será sempre numérica enquanto que soluções analíticas podem ser dadas em termos de funções matemáticas
- Para que serve?
Serve para resolver problemas nos quais o cálculo de uma solução analítica seja muito complexo ou mesmo não exista.
Exemplo:
Não exite uma função cuja derivada seja
É possível obter uma solução via cálculo numérico. Para isso, deve-se definir um intervalo [a b] e calcular uma aproximação da área sob a curva definida pela função. Dessa forma, teremos o valor aproximado para a integral no intervalo [a b]. Só será possível calcular este valor numericamente. Note que, o resultado será um valor numérico e não uma função.
- Dado um problema prático qualquer como resolvê-lo utilizando as técnicas do cálculo numérico?
Vamos dividir o processo de solução em três etpas:
Etapa1: Definir o problema real a ser resolvido.
Etapa2: Encontrar um modelo matemático para representar o problema real.
Etapa3: Calcular uma solução numérica do problema originado da modelagem matemática. Esta etapa deve ser dividida em três partes:
Determinar um método numérico de solução e construir um algoritmo (descrição de um conjunto de comandos que resulta em uma seqüência finita de acontecimentos) .
Transcrever o algoritmo em um código (linguagem que possa ser interpretada pelo computador).
Editar o código em um computador e executá-lo até que sejam eliminados os erros e possam ser obtidos os resultados.
Na aula 6, resolveremos um problema real usando esta técnica.
Durante as etapas de solução de um problema, podem surgir erros que alteram os resultados obtidos. Como resolver tal problema?
Primeiramente é necessário conhecer os tipos de erros e desenvolver maneiras para minimizá-los.
Erros
Quando resolvemos problemas utilizando computação numérica os resultados obtidos são em geral aproximados. Assim, torna-se importante medir o quão próximo este resultado está do valor “exato”. Para quantificar essa aproximação é comum utilizar-se o erro.
Erro absoluto : valor real – valor aproximado
Erro relativo : (valor real –valor aproximado) / valor real.
Erro percentual: 100*erro relativo
Exemplo:
valor exato=10000 valor aproximado=9999
Erro absoluto = 1
Erro relativo= 1/10000 = 0,0001
Erro percentual= 0,01%
valor exato=10 valor aproximado=9
Erro absoluto = 1
Erro relativo= 1/10 = 0,1
Erro percentual= 10%
O que podemos concluir?
O erro absoluto não representa satisfatoriamente o erro cometido.
Tipos de erros
Erros inerentes- surgem de modelos matemáticos incorretos, medidas imprecisas. O usuário não tem condições de evitá-los.
Erro de truncamento – são erros que surgem quando um processo matemático infinito é substituído por uma parte finita dele. Por exemplo, para calcular funções como sen(x) ou ex em um computador é necessário aproximá-las por uma série infinita e utilizar apenas um número finito de termos.
série infinita
Número finito de termos “n”
A medida que n aumenta o erro de truncamento diminui.
Erro de arredondamento- são erros cometidos pelos computadores ao realizarem operações aritméticas. Um número decimal qualquer não pode ser representado exatamente em um computador, pois ele deve ser convertido para binário (base 2) e armazenado em um número finito de bits. A seguir, vamos relembrar como são feitas as conversões entre as bases decimal e binária.
Sistema de numeração
No nosso cotidiano estamos acostumados a lidar com números na base 10, entretanto, em computação numérica esta base pode ser diferente de 10. É o caso de microcomputadores e estações de trabalho que utilizam a base 2, ou computadores de grande porte da linha IBM que utilizam a base 16. Assim, é importante conhecer a representação de números em bases diferentes da base decimal. A própria representação do número em uma determinada base pode ser já uma fonte de erros. Uma representação exata em uma base, não significa que tenha representação exata em uma outra base.
Um número qualquer pode ser descrito numa base de acordo com a seguinte expressão polinomial:
Parte Inteira Parte Fracionária
Onde:
Exemplos:
Observe que os algarismos que representam o número na base são os coeficientes da expressão polinomial. É importante também observar que o deslocamento da vírgula no número é realizado pela multiplicação do número pela correspondente potência da base do número.
Exemplos:
Sistemas decimal e binário:
O sistema decimal é baseado em dez dígitos diferentes, por isso é chamado de sistema de numeração decimal. Todos os números do sistema de numeração decimal são escritos usando-se uma combinação dos seguintes dez dígitos 0 1 2 3 4 5 6 7 8 9
Por exemplo, considere o número 4538
:
4
5
3
8
Multiplica por:
103
102
101
100
Somando tudo:
4 ×103 + 5 ×102 + 3×101 + 8×100 = 4538
Por analogia, se o sistema decimal é baseado em dez dígitos, então o sistema binário deve ser baseado em dois dígitos? Exatamente. Números no sistema binários são escritos usando-se apenas os dois seguintes dígitos: 0 e 1
Conversões:
- Binário para decimal
Exemplo: Converter 11001110 para decimal:
1
1
0
0
1
1
1
0
Multiplica por:
27
26
25
24
23
22
21
20
Somando: tudo:
1 × 27 + 1 × 26 +0 × 25 + 0 × 24 + 1 × 23 + 1 × 22+ 1 × 21 +1 × 20 = 206
Converter 0,111 para decimal:
1
1
1
Multiplica por:
2-1
2-2
2-3
Somando tudo:
1 ×2-1 + 1 ×2-2 + 1 ×2-3 =0,875
- Decimal para binário
Exemplo: Converter 144 para binário:
Divida 144 por 2. Pegue o quociente da divisão e novamente divida-o por 2. Continue o processo até que o quociente seja 1. O correspondente binário será formado pelo número 1 seguido dos restos da divisão escritos na ordem inversa.
144
72
36
18
9
4
2
Dividido por 2
Quociente
72
36
18
9
4
2
1
Resto:
0
0
0
0
1
0
0
Ordem inversa
0
0
1
0
0
0
0
Resulta em:
1
0
0
1
0
0
0
0
- Parte fracionária
Multiplique sucessivamente a parte fracionária por 2 até que ela seja igual a zero. Se não for possível tornar a parte fracionária igual a zero é um indicativo que o número não possui representação exata. O número binário é representado pelas partes inteiras resultantes.
Exemplo: Converter 0,875 para binário.
Multiple por 2
Parte inteira
1 1 1
Resultado
0,111
Exemplo: Converter para a base 2.
0 0 0 1 1
0 0 1 1
0 0 1 1
Note que esse número não possui representação exata na base 2. Portanto, a operação seguinte não terá resultado exato na utilização de microcomputadores.
Aritmética de ponto flutuante
A representação de números reais mais utilizada em máquinas é a do ponto flutuante . Esse número tem três partes: o sinal, a parte fracionária (mantissa) e o expoente,
± .d1d2 d3... dp × Be , sendo
di´s : dígitos da parte fracionária, d1 ≠ 0, 0 ≤ di ≤ B-1
β: base (em geral 2, 10 ou 16),
t: no de dígitos,
e: expoente inteiro.
Exemplo:
x=34,2; β=10; t=4
x=0,3420 × 102
x=0,1 ; β=2; t=9
x=0,110011001× 2-3
Uma aritmética de ponto flutuante é caracterizada por quatro números inteiros: F(). Pode-se observar que F é um subconjunto dos números reais, ou seja .
Exemplo: Considere F(2,2,-1,2 ), com número normalizado, isto é, d1 ≠ 0. Os números serão:
± .10 × 2e ou ± .11 × 2e , sendo -1≤ e ≤ 2.
Convertendo para decimal, temos:
.10 = ½ e .11 = ¾
Com isso, os únicos números positivos representáveis nesse computador são:
Mantissa Expoentes
1/2 × 2 e
3/4 × 2 e para e= -1, 0, 1 e 2
Ou seja, ¼, ½, 1, 2, 3/8, 3/4, 3/2 e 3, que podem ser representados na reta numerada:
0 1 2 3
O número total de elementos de uma aritmética de ponto flutuante é dado por:
Para o exemplo anterior temos que o número de elementos é 17. (8 positivos, 8 negativos e o zero).
O conjunto dos números de ponto flutuante é discreto, e não contínuo como os números reais. Não temos mais o conceito que entre dois números sempre existe um outro. Esse fato pode ter conseqüência desastrosa.
Parâmetros de aritméticas de ponto flutuante utilizadas em alguns computadores digitais.
Máquina e Aritmética
Cray-1 Precisão Simples
2
48
-8192
8191
Cray-1 Precisão Dupla
2
96
-8192
8191
DEC VAX formato G Dupla
2
53
-1023
1023
DEC VAX formato D Dupla
2
56
-127
127
Calculadoras HP 28 e 48G
10
12
-499
499
IBM 3090 Precisão Simples
16
6
-64
63
IBM 3090 Precisão Dupla
16
14
-64
63
IBM 3090 Precisão Extendida
16
28
-64
63
IEEE Precisão Simples
2
24
-126
127
IEEE Precisão Dupla
2
53
-1022
1023
PDP 11
2
24
-128
127
Control Data 6600
2
48
-976
1070
IEEE- Precisão Simples
Comprimento total
32 bits
Mantissa
23 bits
Expoente
8 bits
Base
2 bits
Maior expoente
127
Menor expoente
-126
Maior número
3,4 x 1038
Menor número
1,18 x 10-38
Número de dígitos
7
O conjunto de números de números reais é infinito, entretanto, a sua representação em um sistema de ponto flutuante é limitada, pois é um sistema finito. Essa limitação tem duas origens:
a faixa dos expoentes é limitada ();
Sempre que uma operação aritmética produz um número com expoente superior ao expoente máximo, tem-se o fenômeno de “overflow”. De forma similar, operações que resultem em expoente inferior ao expoente mínimo tem-se o fenômeno de “underflow”.
No caso do exemplo dado, pode-se observar qual as regiões que ocorrem o overflow e o underflow. Neste caso, considera-se a parte positiva e negativa da aritmética do exemplo.
-3,0 - 0 3,0
Overflow Underflow Overflow
Exemplos:
Considere uma aritmética de ponto flutuante F(10,2,-5,5)
-overflow: Sejam x =875 e y=3172 . Calcular x × y.
Primeiro, deve-se arrendondar os números e armazenálos no formato indicado. A operação de multiplicação é efetuada usando 2t dígitos.
x = 0.88x 10 3 e y =0 .32 x 104, x×y = 0.2816 x 10 7
Como o expoente é maior que 5, resulta em overflow
-underflow: Sejam x =0,0064 e y=7312 Calcular x ÷ y.
Primeiro, deve-se arrendondar os números e armazena-los no formato indicado. A operação de divisão é efetuada usando 2t dígitos.
x = 0.64x 10 -2 e y = 0.73 x 104, x÷y = 0.8767 x 10 -6
O resultado dessa operação resultou em um valor menor que o computador pode armazenar, ou seja, resulta em underflow
a mantissa pode representar um número finito de números ()
1) Considere a representação binária de 0,6 e 0,7.
0,6=0,100110011001... 0,7=0,1011001100110...
Se esses dois números forem representados na aritmética F(2,2,-1,2 ) eles serão representados igualmente por 0.10 × 20. Esse número equivale a 0,5 em decimal. Portanto, tanto o 0,6 quanto o 0,7 serão considerados 0,5.
2) Operações em F(10,2,-5,5).
- Sejam x =4,32 e y=0,064 Calcular x + y.
A adição aritmética de PF requer o alinhamento dos pontos decimais dos dois números.
x = 0.43x 10 1 e y = 0.0064 x 101, x+y = 0.4364 x 10 1
Resultado com 2 dígitos : x+y = 0.44 x 10 1
- Sejam x =372 e y=371 Calcular x - y.
x = 0.37x 10 3 e y = 0.37 x 103, x-y = 0.00 x 10 0
- Sejam x =691 e y=2,71 Calcular x + y.
x = 0.69x 10 3 e y = 0.0027 x 103, x+y = 0.6927 x 10 3
Resultado com 2 dígitos : x+y = 0.69 x 10 1
Mesmo que as parcelas ou fatores de uma operação possam ser representados exatamente no sistema, não se pode esperar que o resultado armazenado seja exato.
Exercício: Seja a=7,8953083 e b=7,8949992
Em uma calculadora comum faça:
a2, b2, 2ab, 2 (ab), (a-b)2, a2 – 2ab + b2, a2 – 2(ab) + b2, a2 + b2 – 2(ab)
O que você conclui disso?
Referencias;
F. F. Campos. Algoritmos Numéricos. LTC. 2001
Notas de Aula: Técnicas Computacionais em Sistemas de Energia Elétrica – EEL 6005. Disponível em: www.labspot.ufsc.br/~campagno/pos/ComputacaoCientifica_Cap1.doc
J. D. Santos; Z. C. Silva. Métodos Numéricos. Editora Universitária-UFPE. 2006
a
b
Problema
Real
Modelo
Matemático
Solução
Numérica