Escolar Documentos
Profissional Documentos
Cultura Documentos
Calculo Numerico Computaciona Delcidio Moraes Claudio PDF
Calculo Numerico Computaciona Delcidio Moraes Claudio PDF
Computacional
24 de agosto de 2005
2
Sumário
3
4 SUMÁRIO
Virá figura
1.2 Algoritmos
Algoritmo 1.3.1.
1. Inı́cio
2. Ler a, b;
3. x = b/a;
4. Imprimir x;
1. Inı́cio
2. Ler a, b;
3. Se a = 0 então se b = 0 então imprimir “Identidade”
4. senão imprimir “Contradição”
5. senão x = b/a;
6. imprimir x;
1. ∀x ∈ T, −x ∈ T
2. t1 = inf {x | x ∈ T ∧ x > 0}
t2 = sup{x |∈ T ∧ x > 0}
8 CAPÍTULO 1. INTRODUÇÃO A MATEMÁTICA NUMÉRICA
Se temos valores y, tais que |y| < t1 (underflow) ou |y| > t2 (overflow),1
ocorrerá um erro operacional. Algumas vezes tais erros não são indicados
pelo sistemas operacional ou compilador em muitos computadores. Ocorre,
então que se obtém um resultado mas que não possui confiabilidade.
Exemplo 1.3.2. Seja z = p x + iy ∈ C, x, y ∈ R.
Procuramos |z| = mz = x2 + y 2.
Se num algoritmo implementamos diretamente a fórmula acima, con-
forme forem os valores de x ou y podemos ter overflow em x2 ou y 2,
embora valha
p
x2 + y 2 < t2
Este problema não ocorre se o algoritmo for o seguinte:
Algoritmo 1.3.3.
1. Inı́cio
2. Ler x, y
3. Se x = y = 0 então mz = 0 q
y 2
3.1 senão se |x| >= |y| então mz = |x| ∗ 1+ x
r 2
x
3.2 senão mz = |x| ∗ 1+ y
4. saı́da mz;
Algoritmo 1.3.4.
1. entrada {x0, γ}
2. enquanto |f (xi)| > γ faça:
2.1 se f 0(xi) 6= 0 então xi+1 = xi − ff0(x i)
(xi )
3. saı́da {i, xi}
4. páre.
Na realidade, tal algoritmo não irá parar, além de estar incompleto, pois
para diferentes valores de x0 6= 0 e de γ o método de Newton alterna
seus valores entre x0 e x1 = −x0, embora tenhamos f 0(x) 6= 0 para cada
x ∈ (0, ∞).
Para corrigir tal problema precisamos estabelecer um número máximo
de iterações a serem executadas pelo algoritmo. Por exemplo, o comando
1 e 2 pode mudar para:
7. Eficiência
Quando se deseja encontrar a solução para um problema, sempre visamos
obter economia de recursos envolvidos.
Sobre ele formulamos condições de rapidez, alta exatidão, trabalhar com
poucos dados de referências, ocupar menor espaço de memória, ser facil-
mente representável etc.
A eficiência como caracterı́stica de um bom algoritmo é bem diferente
das caracterı́sitcas 1 e 2 que dizem respeito a eficácia. Explicando melhor,
eficácia é a qualidade de produzir um resposta de forma correta para o
problema dado, enquanto a eficiência, além de intuir a idéia anterior, exige
que o processo seja econômico nos termos citados.
Exemplo 1.3.5. Fazer contas com os dedos da mão.
• É ineficaz para cálculos não aritméticos.
• É eficaz, mas não eficiente para cálculos aritméticos não triviais.
1.3. ALGORITMOS NUMÉRICOS 11
• Introdução
Os números inteiros possuem representação computacional exata, den-
tro da região de representabilidade.
Alguns resultados:
13
14 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
HP 48G SR 50 PC 1
H = 0.5 H = 0.5 H = 0.5
X = 0.166666666667 X = 0.1666666667 X = 0.166667
Y = 0.1 Y = 0.1 Y = 0.1
E = 0.000000000001 E = 2.0E(−13) E=0
F =0 F =0 F =0
G = EF → 0 G = EF →?! G = 0.5
1. x = mbe
2. m = ± · d1d2d3...dn, n ∈ N
3. 1 ≤ d1 ≤ b − 1, 0 ≤ di ≤ b − 1, i = 2(1)n
4. e1 ≤ e ≤ e2 sendo e1 ≤ 0, e2 ≥ 1, e1, e2 ∈ Z
onde:
b é chamado base, b ≥ 2.
e é chamado expoente, e1 é o menor e e2 é o maior expoente.
m é chamado mantissa.
n é o número máximo de dı́gitos usados na representação do número.
di, i = 1(1)n, são os dı́gitos da mantissa.
4
Definição 2.1.2. A união de todos os números de ponto flutuante com o
zero, que é representado na seguinte forma:
e1
| {z } ·b
0 = 0.000...0
n vezes
L = 0.1 · be1
ou ainda
L = (0. |1000{z. . . 0})b = b−1
n casas
Virá figura
c = bn−1.(b − 1) (2.4)
• A Região de Underflow está em torno do zero
• A região de Overflow está acima e abaixo da região de representação.
Exemplo 2.1.4. Seja F = F (3, 2, −1, 2).
1. #F = 2.(3 − 1).32−1.(2 − (−1) + 1) + 1 = 49
2. As mantissas e os números de ponto flutuante positivos estão na seguinte
tabela:
5 3 13
x+y =
+ =
4 8 8
No entanto, 13
8 ∈/ F, pois 13 1
8 = (1.625)10 = (0.1101 · 2 )2 que possui
um dı́gito a mais na mantissa do que o permitido. Na realidade, podemos
escolher entre
3/2 = (1.5)10 = (0.110)2 ou
7/4 = (1.75)10 = (0.111)2
para um resultado aproximado.
x ⊕ y 6= x + y
x y 6= x · y
Tais fenômenos não ocorrem apenas em alguns sistemas de ponto flu-
tuante restritos, conforme os vistos nos exemplos. Consideremos F =
F (2, 5, −98, 100). Neste caso, temos:
(0.1)10 = (0.0001100110011...)2
ou arredondando em F para:
Se x = 85 , y = 3
8 e z = 34 , então:
Logo:
(x ⊕ y) ⊕ z 6= x ⊕ (y ⊕ z)
Se x = 87 , y = 5
4 ez= 3
8
x (y ⊕ z) 6= (x y) ⊕ (x z)
2.2 Arredondamentos
Como arredondar?
Tipos de arredondamentos
Os mais conhecidos são:
9
8= (1.125)10 = (0.1001 · 21)2 .
Podemos arredondar de duas maneiras:
9
→ (0.100 · 21) = (1.0)10
8
9 5
→ (0.101 · 21) =
8 4
9
4( ) = (0.101 · 21)
8
x = 0.333333
y = 0.348436
z = 0.666666...
Temos então:
se w = 0.12345, então:
2.2. ARREDONDAMENTOS 21
Virá figura
∇w = 0.1234
4w = 0.1235
w = 0.1235
∀x ∈ [0, be1−1),
x = 0
h
∇x+4x
x = ∇x, para x ∈ ∇x, 2 (2.9)
∀x ∈ [be1 , M], h i
x = 4x, para x ∈ ∇x+4x , 4x
2
Se x < 0,
x = −
(−x)
A região (−be1−1, 0)∪(0, be1−1) é chamada de Região de Underflow pois
nestes intervalos não há representação adequada em F, e o erro relativo é
grande.
A região [−M, −be1 ] ∪ [be1 , M] é chamada Região de Representabili-
dade de F pois nesta região o erro relativo é limitado.
A região de (−∞, −M) cup(M, ∞) é chamada de Região de Overflow
e novamente nesta zona o erro relativo não é limitado.
Toda vez que executamos o arredondamento de um número que não
admite uma representação exata em F fazemos um erro.
Mais detalhes podem ser vistos na Norma IEEE 754 - Standart for Binary
Floating-Point Arithmetic, que foi adotado como padrão a partir da década
de 1980.
2.3 Erros
Existem vários tipos de erros e várias são as suas causas. Vamos es-
tudar três tipos de erros: os inerentes, os de discretização e os de
arredondamento.
• Erros Inerentes
Aparecem na criação ou simplificação de um modelo matemático de
determinado sistema, ou ainda nas medidas, em geral. Os valores de
medidas como tempo, temperatura, distância, intensidade luminosa
etc. são obtidos de instrumentos que têm precisão limitada.
2.3. ERROS 23
• Os erros de Discretização
Ou de Aproximação, ou Truncamento são os erros cometidos quando
se substitui qualquer processo infinito por um processo finito ou dis-
creto. Seja, por exemplo, o cálculo da constante de Euler e que é dada
por:
∞
X 1
e=
i=0
i!
EA = |x − x| (2.10)
4
Definição 2.3.2. O erro relativo, que é indicado por ER , é dado por:
|x − x| |x − x|
ER = ou ER = (2.11)
|x| |x|
4
Exemplo 2.3.1. Se x = 0.00006
e se x = 0.00005
EA = 0.00001
0.00001
ER = = 0.2 ou 20%
0.00005
Neste caso podemos até dizer que EA é pequeno; no entanto, não há
dúvida a respeito do ER que é da ordem de 20%.
24 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
Virá figura
|x−x|
Figura 2.3: Erro Relativo = |x|
em F = F (2, 3, −1, 2)
◦
Exemplo 2.3.2. Nas calculadoras Hewllet Packard 48G, temos:
= e para b = 10 e n = 12
1
µ = 10−12 = 0.000 000 000 005
2
No dı́gito 7, temos:
|0.666 670 − 0.666 . . . | = 0.000 003 333 . . . < 0.000 005
◦
Logo, para achar o maior número de dı́gitos significativos exatos temos:
1 |x − x|
m = − − log + log (2.14)
2 |x|
Se ocorrer que x = x, então podemos aplicar a fórmula anterior do
seguinte modo:
1 |x − x|
m = − − log + log µ + (2.15)
2 |x|
Logo, se ER ≤ 12 b−m para b = 10, podemos dizer que:
|x − x|
m = − 0.3 + log µ + (2.16)
|x|
onde µ é a unidade de erro de arredondamento.
Genericamente podemos calcular o número de dı́gitos significativos exa-
tos pelo logaritmo decimal do ER .
Quando não temos o valor exato para fazermos as comparações, o que
ocorre em geral, temos que: se x = limi→∞ xi, então podemos modificar a
fórmula anterior para:
|xi+1 − xi|
Digse(xi, xi+1) = − 0.3 + log µ + (2.17)
|xi|
O que nos dá o número de dı́gitos significativos exatos de xi+1 em relação
xi
Virá figura
Portanto, a precisão é algo claro, não variável para uma máquina. Já a
definição seguinte não nos dá as mesmas caracterı́sticas.
4
Definição 2.5.2. Exatidão é uma medida de perfeição do resultado.
A exatidão da um resultado depende da precisão da máquina e do método
utilizado para obtenção desse resultado.
4
Exemplo 2.5.1. Vejamos várias aproximações para o número π, na figura
2.4 e a seguir o cálculo dos dı́gitos significativos exatos das aproximações,
na próxima tabela.
1+ε>1
Alguns métodos para o cálculo de ε não dão seu valor exato, mas isto
nem sempre é necessário, pois o que importa é a sua oredem de grandeza.
O programa Pascal seguinte calcula uma aproximação de ε da máquina:
PROGRAM EPSMAQ (OUT PUT);
VAR EPSILON, EPS : REAL;
BEGIN
EPS: = 1;
REPEAT EPSILON: = EPS;
EPS: = 0.5 * EPS
UNTIL EPS + 1 = 1;
WRITELN(’EPSILON DA MÁQUINA = ’:30, EPSILON : 30);
END.
O resultado é ε ∼
= 0.7105427357601 · 10−14
√
Exemplo 2.5.2. seja o número irracional 2 = 1.414213562...
30 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
2.6 Instabilidade
e∼
= 1 + 1 + 0.5 + 0.16667 + 4.1667E − 2 + 8.3333E − 3+
+1.3889E − 3 + 19841E − 4 + 2.4801E − 5+ (2.19)
+2.7557E − 6 = 2.7183
Comparando a soma anterior com a valor 2.718281828, temos um erro
relativo de 6.6E − 6, que é bem pequeno.
2.6. INSTABILIDADE 31
e−5.5 ∼
= 1 − 5.5 + 15.125 − 27.730 − 27.730 + 38.129−
41.942 + 38.446 − 30.208 + 20.768 − 12.692+ (2.20)
6.9803 − 3.4902 + 1.5997 − . . . = 0.0026363
Comparando agora com e−5.5 dado por uma calculadora, temos que:
e5.5 = 0.004 086 771 439
E o erro relativo é de 0.35 que é bem maior que o erro anterior.
Qual a causa da diferença?
Observando os termos da soma do segundo caso, vemos que há uma
combinação de dois fatores:
• somas de grandezas de diferentes ordens;
• subtração e grandezas quase iguais.
Este fenômeno é chamado de cancelamento subtrativo ou con-
celamento catastrófico, que é bastante comum em cálculos. se não
houvéssemos arredondado cada parcela, o erro seria sensivelmente menor.
• Temos só esta causa?
O cancelamento subtrativo não é a real causa do erro final da soma;
• Como melhorar?
Se mudamos o cálculo de e−5.5 para 1/e−5.5 e utilizarmos as mesmas
parcelas, teremos 0.0040865 e o erro relativo é 6.6E − 5.
• Logo, podemos utilizar a série de taylor para argumentos positivos.
R1
Exemplo 2.6.2. Calcular In = 0 xnex−1dx para n = 1, 2 . . .
Solução: integrando por partes:
Z 1 Z 1
n x−1 n x−1 1
n xn−1ex−1dx = 1−nIn−1, n = 2, 3, . . .
x e dx
|{z} | {z } = x e 0
−
0 u dv 0
(2.21)
32 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
Ou seja: Z 1
In = xnex−1dx = 1 − n In−1
0
onde:
Z 1
1
I1 = xex−1dx =
0 e
Usando F = F (10, 6, −98, 99), temos os seguintes valores:
I1 ∼
0.367879 I6 ∼
= = 0.127120
I2 ∼
0.264242 I7 ∼
= = 0.110160
I3 ∼
0.207274 I8 ∼
= = 0.118720
I4 ∼
0.170904 I9 ∼
= = -0.068480
I5 ∼
0.145480
=
R 9 x−1
Olhando o integrando I9 = x e , verificamos que é sempre positivo
em [0, 1] e, no entanto, o valor computado foi Negativo.
O que causou tal erro?
Notemos que só foi feito um erro de arredondamento em I1 quando 1/e foi
tomado por 0.367879 em vez de 0.3678794412. Como a fórmula está correta,
o erro final é devido apenas a este erro feito em I1. Observemos como tal
ocorreu: em I2 o erro foi multiplicado por −2, depois em I3 foi multiplicado
por −3,1 etc. Então, o erro de I9 é exatamente (−2)(−3) . . . (−9) = 9!
Sendo:
1. entrada {a, b}
2. s ← a + b
3. m ← s/2
4. saı́da {m}
Algoritmo 2:
1. entrada {a, b}
2. s1 ← a/2
3. s2 ← b/2
4. m ← s1 + s2
5. saı́da {m}
Algoritmo 3:
1. entrada {a, b}
2. d1 ← a − b
3. d1 ← d1/2
4. m ← b + d1
5. saı́da {m}
• Algoritmo 1: overflow em 2.
• underflow em 2 e 3.
2.6. INSTABILIDADE 35
√
b2 − 4ac
−b +
x1 = (2.25)
√2a
−b − b2 − 4ac
x2 = (2.26)
2a
Vamos analisar alguns cassos a serem resolvidos em F = F (10, 8, −50, 50)
a = 1 , b = −105 , c = 1
x1 = 99999.999990
x2 = 0.000010000000001
Se as raı́zes forem calculadas por (22), teremos:
x2 = 0 (ruin)
Na realidade, no cálculo de x2 fomo vı́timas do chamado “cancelamento
catastrófico”. Façamos um parêntese para explicar tal fenômeno.
Considerando x = 12345678.0 e y = 12345677.0, temos uma diferença
x − y = 1.00000000, porém, com uma pequena mudança de x para x̄ =
12345678.1 e de y para ȳ = 12345676.9, obtemos uma diferença de:
z̃ = 1.20000000
36 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
• x1 = 10000.00
• x2 = 1.0000000/100000.00 = 0.000010000000
Caso b:
a = 6 , b = 5 , c = −4
Aqui não há dificuldades em calcular para x1 e x2 os valores:
• x1 = 0.50000000
• x2 = −1.3333333
• x1 = 1.999683772
• x2 = 2.000316228
x = 0.999843279 . . . e y = 0.999737937 . . .
Exemplo 2.6.6.
∂x ∂p/∂α
=−
∂α ∂p∂α
∂x x19
= P20 Q20
∂α i=1 j=1, j6=i (x − j)
Virá figura
y 0(x) = y 0 ≤ x ≤ 1.0
(2.33)
y(0) = 1
Onde y0 = 1 e y1 = eh.
Se tomarmos h = 0.1, teremos:
42 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
.1 Introdução
.2 Formatos
• Número Normalizado
É o número de ponto flutuante cujo expoente esta dentro dos limites e
a mantissa representa qualquer fração binária.
• Expoente
É o mesmo expoente da definição usual de número de ponto flutuante,
ou seja, é o expoente da base 2 não deslocado, ou seja, “not-biased”.
• Número Desnormalizado
É um número não nulo cujo expoente tem um valor reservado, usual-
mente o valor mı́nimo e cujo primeiro bit da mantissa é 0. É útil para
representar os números que ficam na região de underflow.
• Mantissa ou Fração
160 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
• Infinitos e Zeros
Quantidade de bits 1 8 23
Conteúdo Sinal Expoente fração
Bits 31 30, 29, . . . 23 22,21 . . . 1, 0
.3 Exemplos
.4 Exemplos
S=0
164 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
ou ainda em hexa:
(357.8125)10 = 43b2e800x
(357.8125)10 = c3b2e800x
Exemplo .4.2. Seja agora o caso de números inteiros: int i=-357; int
j=357;
Usa-se o complemeto de 2.
1 . . . 1 0 1001 1010
+ 1
1 . . . 1 1110 1001 1011
(357)10 = 00000165x
(−357)10 = f f f f f e9bx
.4. EXEMPLOS 165
Exemplo .4.3. Outro número real f loat num = −951.339 843 75;
1. Convertendo para binário:
(−951.33984375)10 = (1.11011011101010111)2) · 29
m = 1.11011011101010111000000
S=1
7. Juntando as partes:
ou ainda em hexa:
(−951.33984375)10 = c46dd5c0x
(951.33984375)10 = 446dd5c0x
166 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
S=0
8. Juntando as partes:
ou ainda em hexa:
.5 arredondamentos
Será continuado.
Revisão de Cálculo
O seguintes resultados são vistos nos cursos básicos e as referências estão
na Bibliografia.
168 CAPÍTULO 2. INTRODUÇÃO À ARITMÉTICA DE MÁQUINA
Referências Bibliográficas
169