• Nenhum resultado encontrado

Cálculo Numérico Computaciona Delcídio Moraes Claudio

N/A
N/A
Protected

Academic year: 2021

Share "Cálculo Numérico Computaciona Delcídio Moraes Claudio"

Copied!
55
0
0

Texto

(1)

alculo Num´erico

Computacional

Dalcidio Moraes Claudio Jussara Maria Marins

(2)
(3)

Sum´

ario

1 Introdu¸c˜ao a Matem´atica Num´erica 5

1.1 Natureza e Objetivos da Matem´atica Num´erica . . . 5

1.2 Algoritmos . . . 6

1.3 Algoritmos Num´ericos . . . 6

2 Introdu¸c˜ao `a Aritm´etica de M´aquina 13 2.1 Sistema de Ponto Flutuante . . . 13

2.2 Arredondamentos . . . 19

2.3 Erros . . . 22

2.4 Digitos Significativos Exatos . . . 24

2.5 Precis˜ao e Exatid˜ao de M´aquinas Digital . . . 27

2.6 Instabilidade . . . 30

2.6.1 Instabilidade dos Algaritmos . . . 30

2.6.2 Instabilidade de problemas . . . 38

3 Resolu¸c˜ao de Sistemas de Equa¸c˜oes Lineares 41 3.1 Revis˜ao . . . 41

3.1.1 Coloca¸c˜ao do problema . . . 41

3.1.2 Defini¸c˜oes . . . 41

3.1.3 Aritm´etica Matricial . . . 46

3.2 Erros Computacionais no C´alculo Num´erico de SELAs . . . 47

3.2.1 Tipos de algoritmos usados no C´alculo Num´erico de SELAs . . . 47

3.2.2 Tipos de erros computacionais nos algoritmos . . . 48

3.3 Etapas de resolu¸c˜ao dos SELAs . . . 49

3.3.1 Etapa: Descomplexifica¸c˜ao dos SELAs . . . 49

3.3.2 Etapa: Os algoritmos calculadores de SELAs e suas estruturas . . . 51

3.4 M´etodo de Elimina¸c˜ao de Gauss . . . 52

3.4.1 Algoritmo b´asico de Gauss . . . 52

3.4.2 Etapa: Triangulariza¸c˜ao . . . 53

3.4.3 Etapa: Retrossubstitui¸c˜ao . . . 54

3.4.4 Instabilidade num´erica . . . 58

3.4.5 Algoritmo de Gauss com pivotamento . . . 60

3.4.6 Condicionamento de uma matriz . . . 63

3.4.7 Refinamento da solu¸c˜ao . . . 69

3.4.8 Equacionamento matricial . . . 76

3.4.9 M´etodos de Gauss-Jordam . . . 78

3.4.10 O refinador para Gauss-Jordam . . . 79

3.5 M´etodos Iterativos . . . 81

3.5.1 M´etodo de Jacobi . . . 81 3

(4)

3.5.2 M´etodos de Gauss-Seidel . . . 84

3.5.3 Os algoritmos preparados para o Gauss-Seidel/Jacobi . . . 86

3.5.4 Condi¸c˜oes de convergˆencia do m´etodo . . . 87

4 Equa¸c˜oes e Sistemas n˜ao Lineares 99 4.1 Introdu¸c˜ao . . . 99

4.2 Revis˜ao sobre Polinˆomios . . . 101

4.3 Enumera¸c˜ao das Ra´ızes . . . 104

4.3.1 Enumera¸c˜ao das ra´ızes de uma equa¸c˜ao polinomial . . . 104

4.3.2 Enumera¸c˜ao das ra´ızes complexas de uma equa¸c˜ao polinomial . . . 105

4.4 Localiza¸c˜ao das Ra´ızes . . . 107

4.4.1 Localiza¸c˜ao das ra´ızes reais de uma equa¸c˜ao polinomial . . . 107

4.4.2 Localiza¸c˜ao das ra´ızes complexas de uma equa¸c˜ao polinomial . . . 109

4.5 Separa¸c˜ao das ra´ızes de uma equa¸c˜ao polinomial ou transcendente . . . 111

4.6 Ordem de Covergˆencia . . . 114

4.7 M´etodos Iterativos para resolu¸c˜ao de equa¸c˜oes polinomiais ou transcendentes . . . 115

4.7.1 M´etodos de quebra . . . 117

4.7.2 M´etodos de Ponto Ffixo . . . 126

4.7.3 M´etodos de m´ultiplos passos . . . 137

4.8 Acelera¸c˜ao de Aitken . . . 143

4.9 Compara¸c˜ao dos m´etodos do ponto de vista computacional . . . 144

4.10 Resolu¸c˜ao de sistemas de equa¸c˜oes alg´ebricas ou transcedentes . . . 146

4.10.1 M´etodos de Newton . . . 147

4.10.2 M´etodos de Newton modificado . . . 150

4.11 Software para resolu¸c˜ao de equa¸c˜oes e sistemas de equa¸c˜oes n˜ao lineares . . . 150

.1 Introdu¸c˜ao . . . 157

.2 Formatos . . . 158

.3 Exemplos . . . 161

.4 Exemplos . . . 163

(5)

Cap´ıtulo 1

Introdu¸

ao a Matem´

atica Num´

erica

1.1 Natureza e Objetivos da Matem´atica Num´erica

O estudo da Matem´atica do ponto de vista computacional constitui a Matem´atica Computacional.

A Matem´atica Num´erica insere-se no contexto da Matem´atica Computa-cional, que pode ser visualizada pela figura 1.1.

Vir´a figura

Figura 1.1: A Matem´atica Computacional

N˜ao formalizaremos aqui a descri¸c˜ao de cada item da figura.

Por m´etodos construtivos entendemos todo o m´etodo que envolve ape-nas um sistema de opera¸c˜oes elementares dadas a priori, utilizadas em um n´umero finito de vezes e que “construir˜ao” todo o processo de c´alculo envolvido.

O sistema de opera¸c˜oes escolhido para a Matem´atica Num´erica ´e eviden-temente o conjunto b´asico de opera¸c˜oes aritm´eticas {+, −, ·, /}, e atrav´es delas ser˜ao definidas as demais opera¸c˜oes necess´arias. Tal escolha ´e devida `

a facilidade de implementa¸c˜ao, compreen¸c˜ao universal e possibilidade de expans˜oes que formam opera¸c˜oes mais complexas.

A Matem´atica Num´erica tem por objetivo estudar processos num´ericos (algoritmos) para a solu¸c˜ao de problemas, visando `a m´axima economia e confiabilidade em termos dos fatores envolvidos. Como estes algoritmos

(6)

ser˜ao implementados em computadores, os fatores envolvidos podem ser: tempo de execu¸c˜ao, mem´oria utilizada e erros de arredondamento.

1.2 Algoritmos

Para que possamos resolver um problema atrav´es de um computador ´e necess´ario ter toda a sequˆencia de passos e opera¸c˜oes estabelecida de modo formal para a resolu¸c˜ao do problema ou seja um algoritmo.

• Um conceito (e n˜ao defini¸c˜ao) de um algoritmo pode ser uma sequˆencia de instru¸c˜oes ordenadas de maneira a dar em seu decurso a solu¸c˜ao para um problema espec´ıfico.

• Tais instru¸c˜oes devem aparecer em um n´umero finito e serem exe-cut´aveis mecanicamente com uma quantidade limitada de esfor¸co. • Um algoritmo poder´a depender ou n˜ao de dados iniciais (entradas),

mas ter´a obrigat´oriamente de produzir pelo menos um resultado final (sa´ıda).

• Deve ter apenas um ponto de in´ıcio e pelo menos um ponto de parada.

1.3 Algoritmos Num´ericos

S˜ao os algoritmos voltados ao processamento num´erico, isto ´e, as ope-ra¸c˜oes aritm´eticas formam o cerne do algoritmo e seu objetivo ´e obter um ou mais resultados num´ericos. Um algoritmo num´erico de boa qualidade tem as seguintes caracter´ısticas:

1. Inexistˆencia do Erro L´ogico ou Matem´atico

Exemplo 1.3.1. Procura-se uma solu¸c˜ao x∗ da equa¸c˜ao ax = b.

(7)

1.3. ALGORITMOS NUM ´ERICOS 7 Algoritmo 1.3.1. 1. In´ıcio 2. Ler a, b; 3. x = b/a; 4. Imprimir x; O algoritmo correto ´e:

Algoritmo 1.3.2. 1. In´ıcio 2. Ler a, b;

3. Se a = 0 ent˜ao se b = 0 ent˜ao imprimir “Identidade”

4. sen˜ao imprimir “Contradi¸c˜ao”

5. sen˜ao x = b/a;

6. imprimir x;

Os erros l´ogicos ocorrem quando n˜ao s˜ao verificadas as diversas possibi-lidades entre as op¸c˜oes dos testes, principalmente quando s˜ao encadeados ou mesmo quando se faz mais testes do que o necess´ario. No ´ultimo algoritmo, por exemplo, n˜ao ´e mais necess´ario testar se b ´e nulo ou n˜ao, pois n˜ao importa este resultado e teremos a solu¸c˜ao correta. De fato isto faz parte da pr´opria defini¸c˜ao da equa¸c˜ao e n˜ao da L´ogica.

2. Inexistˆencia do Erro Operacional

Mesmo que n˜ao haja erro l´ogico ou de defini¸c˜ao, o algoritmo pode falhar por violar restri¸c˜oes f´ısicas da m´aquina e teremos erros que s˜ao detectados em tempo de execu¸c˜ao. O pr´oximo exemplo deixa isto mais claro.

Seja T o conjunto de n´umeros poss´ıveis de serem representados por uma m´aquina e que valha:

1. ∀x ∈ T, −x ∈ T

2. t1 = inf {x | x ∈ T ∧ x > 0} t2 = sup{x |∈ T ∧ x > 0}

(8)

Se temos valores y, tais que |y| < t1 (underflow) ou |y| > t2 (overflow),1

ocorrer´a um erro operacional. Algumas vezes tais erros n˜ao s˜ao indicados pelo sistemas operacional ou compilador em muitos computadores. Ocorre, ent˜ao que se obt´em um resultado mas que n˜ao possui confiabilidade.

Exemplo 1.3.2. Seja z = x + iy ∈ C, x, y ∈ R. Procuramos |z| = mz = px2 + y2.

Se num algoritmo implementamos diretamente a f´ormula acima, con-forme forem os valores de x ou y podemos ter overflow em x2 ou y2, embora valha

p

x2 + y2 < t 2

Este problema n˜ao ocorre se o algoritmo for o seguinte: Algoritmo 1.3.3.

1. In´ıcio 2. Ler x, y

3. Se x = y = 0 ent˜ao mz = 0

3.1 sen˜ao se |x| >= |y| ent˜ao mz = |x| ∗ q 1 + xy2 3.2 sen˜ao mz = |x| ∗ r 1 +  x y 2 4. sa´ıda mz;

3. Quantidade finita de c´alculos

Exemplo 1.3.3. Determinar pelo m´etodo de Newton uma raiz da equa¸c˜ao: f (x) = signl(x) · p|x| = 0

onde signl(x) ´e a fun¸c˜ao sinal que ´e definida por:

sign(x) =    1 se x > 0 0 se x = 0 −1 caso contr´ario Um algoritmo problem´atico ´e dado por:

(9)

1.3. ALGORITMOS NUM ´ERICOS 9 Algoritmo 1.3.4. 1. entrada {x0, γ} 2. enquanto |f (xi)| > γ fa¸ca: 2.1 se f0(xi) 6= 0 ent˜ao xi+1 = xi − f (xi) f0(xi) 3. sa´ıda {i, xi} 4. p´are.

Na realidade, tal algoritmo n˜ao ir´a parar, al´em de estar incompleto, pois para diferentes valores de x0 6= 0 e de γ o m´etodo de Newton alterna

seus valores entre x0 e x1 = −x0, embora tenhamos f0(x) 6= 0 para cada

x ∈ (0, ∞).

Para corrigir tal problema precisamos estabelecer um n´umero m´aximo de itera¸c˜oes a serem executadas pelo algoritmo. Por exemplo, o comando 1 e 2 pode mudar para:

1. entrada {x0, γ, M AX}

2. enquanto |f (xi)| > γ e i < M AX fa¸ca.

Com esta fun¸c˜ao e a corre¸c˜ao proposta n˜ao atingiremos a solu¸c˜ao correta embora tenhamos evitado um loop no comando 2. Outro modo de resolver o problema ´e utilizar o m´etodo de Newton Intervalar que ser´a visto no cap´ıtulo 10.

4. Existˆencia de um crit´erio de exatid˜ao

Na Matem´atica Intervalar todos os m´etodos apresentam tal caracter´ıs-tica, uma vez que os resultados s˜ao sempre um intervalo que cont´em a solu¸c˜ao exata e da´ı temos implicitamente o limite para o erro.

Normalmente os limites de rros s˜ao emp´ıricos e pouco confi´aveis. 5. Independˆencia da M´aquina

Nos algoritmos num´ericos n˜ao deve haver dados dependentes da m´aquina. 6. Com precis˜ao infinita, os limites de erro devem convergir a zero

(10)

Exemplo 1.3.4. Dado a ∈ R, queremos determinar x = sin(a). Um algoritmo ingˆenuo, que explora o fato de que sin(x) varia sempre entre −1 e +1, onde o sinal ± pode ser determinado aleat´oriamente, ´e dado por: Algoritmo 1.3.5.

1. Entrada:{a} 2. x = 0 ± 1; 3. Sa´ıda:{a, x}

Este algoritmo errado satisfaz as exigˆencias de 1 a 5: n˜ao h´a erro l´ogico nem operacional, o algoritmo ´e finito, os dados n˜ao dependem de m´aquina, temos que o resultado dentro dos limites de erro; contudo para preencher o crit´erio 6 deve haver um crit´erio de truncamento apropriado. Se ele ´e satisfeito, temos o que se chama de “convergˆencia num´erica”. Para calcular a fun¸c˜ao seno ou mesmo outras fun¸c˜oes trigonom´etricas ou transcendentes devemos usar a S´erie de Taylor que ser´a exemplificada para a fun¸c˜ao expo-nencial na se¸c˜ao de Instabilidade.

7. Eficiˆencia

Quando se deseja encontrar a solu¸c˜ao para um problema, sempre visamos obter economia de recursos envolvidos.

Sobre ele formulamos condi¸c˜oes de rapidez, alta exatid˜ao, trabalhar com poucos dados de referˆencias, ocupar menor espa¸co de mem´oria, ser facil-mente represent´avel etc.

A eficiˆencia como caracter´ıstica de um bom algoritmo ´e bem diferente das caracter´ısitcas 1 e 2 que dizem respeito a efic´acia. Explicando melhor, efic´acia ´e a qualidade de produzir um resposta de forma correta para o problema dado, enquanto a eficiˆencia, al´em de intuir a id´eia anterior, exige que o processo seja econˆomico nos termos citados.

Exemplo 1.3.5. Fazer contas com os dedos da m˜ao. • ´E ineficaz para c´alculos n˜ao aritm´eticos.

(11)

1.3. ALGORITMOS NUM ´ERICOS 11

• ´E eficiente para certos c´alculos aritm´eticos triviais.

Exemplo 1.3.6. Algoritmo de Cramer para solu¸c˜ao de sistemas de Equa¸c˜oes Lineares.

De forma geral, dado o sistema n × n:        a11 a12 a13 . . . a1n a21 a22 a23 . . . a2n a31 a32 a33 . . . a3n ... ... ... ... ... an1 an2 . . . an3 ann        ·        x1 x2 x3 ... xn        =        y1 y2 y3 ... yn        (1.1)

Calcula-se o determinante ∆ da matriz dos coeficientes e mais os n de-terminantes ∆xi resultantes da substitui¸c˜ao da coluna i da matriz dos

coeficientes pelo vetor dos termos independentes. Assim, pelo teorema de Cramer a solu¸c˜ao (x1, x2, ..., xn) ´e dada por:

xi =

∆xi

Tal algoritmo envolve no m´ınimo (n + 1)!(n − 1) opera¸c˜oes aritm´eticas. Levando em conta. o tempo para cada opera¸c˜ao (Adi¸c˜oes e Subtra¸c˜oes: 40µs e Multiplica¸c˜oes: 400µs), temos o seguinte quadro:

n = 5 n = 10 n = 20

Cramer (∆ pela defini¸c˜ao) 2,5 s 3,4 dias 20 bilh˜oes de anos Cramer (∆ por Laplace) 0,4 s 6 min 5 meses

(12)
(13)

Cap´ıtulo 2

Introdu¸

ao `

a Aritm´

etica de M´

aquina

2.1 Sistema de Ponto Flutuante

• Introdu¸c˜ao

Os n´umeros inteiros possuem representa¸c˜ao computacional exata, den-tro da regi˜ao de representabilidade.

– Existem v´arios c´odigos mas o mais comum ´e o complemento de dois – Dentro da regi˜ao de representabilidade, a aritm´etica ´e exata.

• Os n´umeros reais, em geral, n˜ao tem representa¸c˜ao exata e s˜ao aproxi-mados. Exemplo 2.1.1. H = 1/2 X = 2/3 − H Y = 3/5 − H E = (X + X + X) − H F = (Y + Y + Y + Y + Y ) − H G = F/E Alguns resultados: 13

(14)

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 = FE → 0 G = FE →?! G = 0.5

A express˜ao ?! indica uma opera¸c˜ao inv´alida.

Resultados de G em float ´e 0.5 e para double fica em 1.0.

Defini¸c˜ao 2.1.1. Um n´umero real x ∈ R ´e dito um n´umero de ponto flutuante normalizado se valerem:

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 ´e chamado base, b ≥ 2.

e ´e chamado expoente, e1 ´e o menor e e2 ´e o maior expoente.

m ´e chamado mantissa.

n ´e o n´umero m´aximo de d´ıgitos usados na representa¸c˜ao do n´umero. di, i = 1(1)n, s˜ao os d´ıgitos da mantissa.

4

Defini¸c˜ao 2.1.2. A uni˜ao de todos os n´umeros de ponto flutuante com o zero, que ´e representado na seguinte forma:

0 = 0.000...0 | {z }

n vezes

·be1

(15)

2.1. SISTEMA DE PONTO FLUTUANTE 15

Usualmente, procuramos representar um sistema de ponto flutuante por F = F (b, n, e1, e2)

onde e1 e e2 s˜ao respectivamente o menor e o maior expoente, b ´e a base e

n ´e a precis˜ao.

4

Exemplo 2.1.2. Sistema de Ponto flutuante da: a) HP 25 : F (10, 9, −98, 100)

b) Texas SR50 : F (10, 10, −98, 100) c) Texas SR52 : F (10, 12, −98, 100) d) HP 48G : F (10, 12, −500, 499)

Vamos indicar por L e M, respectivamente, o menor e o maior n´umero positivo de F . L = 0.1 · be1 ou ainda L = (0. 1000 . . . 0 | {z } n casas )b = b−1 M = 0.[b − 1][b − 1][b − 1] . . . [b − 1] · be2 = (1 − b−n)

Vejamos algumas propriedades dos n´umeros de ponto flutuante. Seja F um sistema de um ponto flutuante da por F = F (b, n, e1, e2), ent˜ao:

#F = 2 · (b − 1) · bn−1 · (e2 − e1 + 1) + 1 (2.1)

Para qualquer mantissa m vale:

b−1 ≤ |m| < 1 (2.2)

|m| < 1, pois toda mantissa tem como primeiro d´ıgito (antes do ponto) o zero.

|m| ≥ b−1, pois se |m| < b−1, n˜ao ter´ıamos um n´umero normalizado, pois o primeiro d´ıgito ap´os o ponto ´e n˜ao nulo.

(16)

Vir´a figura

Figura 2.1: O Sistema F = F (2, 3, −1, 2).

(∀x ∈ F )[−x ∈ F ] (2.3)

Exemplo 2.1.3. Seja F = F (2, 3, −1, 2).

Como a base ´e 2, os d´ıgitos s˜ao 0 e 1, logo, todas as mantissas s˜ao: 0.100 0.101 0.110 0.111

e os expoentes poss´ıveis s˜ao -1, 0, 1 e 2.

Assim temos os seguintes n´umeros positivos:

(0.100x2−1) = (0.01)2 = 0.20 + 0.2−1 + 1.2−2 = 1/4 (0.100x20) = (0.1)2 = 0.20 + 0.2−1 = 1/2 (0.100x21) = (1.0)2 = 1.20 + 0.2−1 = 1 (0.100x22) = (10.0)2 = 1.21 + 0.20 + 0.2−1 = 2 (0.101x2−1) = (0.0101)2 = 0.20 + 0.2−1 + 1.2−2 + 0.2−3 + 1.2−4 = 5/16 (0.101x20) = (0.101)2 = 0.20 + 1.2−1 + 0.2−2 + 1.2−3 = 5/8

E assim, sucessivamente, teremos a seguinte tabela:

e bem 0.100 0.101 0.110 0.111

-1 1/2 1/4 5/16 3/8 7/16

0 1 1/2 5/8 3/4 7/8

1 2 1 5/4 3/2 7/4

2 4 2 5/2 3 7/2

(17)

2.1. SISTEMA DE PONTO FLUTUANTE 17

• Os n´umeros do ponto flutuante de F n˜ao est˜ao uniformemente dis-tribu´ıdos no intervalo [−7/2, 7/2];

• Mas 1/4, 5/16, 3/8, 7/16 est˜ao igualmente espa¸cados.

• Logo, entre potˆencias sucessivas da base existe uma quantidade cons-tante de n´umeros de ponto flutuante, dada por:

c = bn−1.(b − 1) (2.4)

• A Regi˜ao de Underflow est´a em torno do zero

• A regi˜ao de Overflow est´a acima e abaixo da regi˜ao de representa¸c˜ao. 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´umeros de ponto flutuante positivos est˜ao na seguinte tabela: e bem 0.10 0.11 0.12 0.20 0.21 0.22 -1 1/3 1/9 4/27 5/27 2/9 7/27 8/27 0 1 1/3 4/9 5/9 2/3 7/9 8/9 1 3 1 4/3 5/3 2 7/3 8/3 2 9 3 4 5 6 7 8 3. Regi˜ao de Underflow : (−1/9, 0) ∪ (0, 1/9) Regi˜ao de Overflow : (−∞, −8) ∪ (8, ∞) Caracter´ısticas b´asicas das opera¸c˜oes em F

As leis que valem para a aritm´etica em R n˜ao valem para F.

Exemplo 2.1.5. Seja F o mesmo sistema do exemplo 2.1.3: F = F (2, 3, −1, 2). Tomemos em F :

x = 5

4 e y = 3 8

(18)

x + y = 5 4 + 3 8 = 13 8

No entanto, 138 ∈ F , pois/ 138 = (1.625)10 = (0.1101 · 21)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ˆomenos n˜ao 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:

(0.1)10 = (0.11001 · 2−3)2

Somando (0.11001 · 2−3) sucessivamente dez vezes, teremos: (0.11111)2 = (0.96875)10 6= (1.0)10 Exemplo 2.1.6. Seja F = F (2, 3, −1, 2). Se x = 58, y = 38 e z = 34, ent˜ao: (x ⊕ y) ⊕ z = (0.101 · 20 ⊕ 0.110 · 2−1) ⊕ 0.110 · 20 = (0.101 ⊕ 0.011) ⊕ 0.110 = 1.000 ⊕ 0.110 = 1.11 x ⊕ (y ⊕ z) = 0.101 ⊕ (0.011 ⊕ 0.110) = 0.101 ⊕ 1.001 = 0.101 ⊕ 1.00 6 1 = 1.00 0.101 ⊕ 1.00 = 1.10 6 1 = 1.10

(19)

2.2. ARREDONDAMENTOS 19

Logo:

(x ⊕ y) ⊕ z 6= x ⊕ (y ⊕ z) Se x = 78, y = 54 e z = 38

Tamb´em temos que:

x (y ⊕ z) = 0.111 (1.01 ⊕ 0.011) = 0.111 1.001 = 1.0101 = 1.01 x y ⊕ x z = (0.111 1.01) ⊕ (0.111 0.011) = 1.00011 ⊕ 0.10101 = 1.101 = 1.10 Logo: x (y ⊕ z) 6= (x y) ⊕ (x z) 2.2 Arredondamentos

Defini¸c˜ao 2.2.1. Seja F = F (b, n, e1, e2) um sistema de ponto flutuante. Uma fun¸c˜ao  : R → F ´e considerada um arredondamento se valer:

(∀x ∈ F )[x = x] (2.5)

4 Como arredondar?

Tipos de arredondamentos Os mais conhecidos s˜ao:

• Arredondamento para cima ou por excesso (4x) • Arredondamento para baixo ou por falta (∇x)

• Arredondamento para o n´umero de m´aquina mais pr´oximo ( x) Exemplo 2.2.1. Seja F = F (2, 3, −1, 2).

(20)

9

8 = (1.125)10 = (0.1001 · 2 1)

2 .

Podemos arredondar de duas maneiras: 9 8 → (0.100 · 2 1) = (1.0) 10 9 8 → (0.101 · 2 1) = 5 4

No primeiro caso temos: ∇(9 8) = (0.100 · 2 1) 4(9 8) = (0.101 · 2 1)

Exemplo 2.2.2. Na base 10 podemos citar casos mais ilustrativos. Seja F = F (10, 4, −98, 10) e sejam:

x = 0.333333

y = 0.348436

z = 0.666666... Temos ent˜ao:

∇x = 0.3333 , ∇y = 0.3484 e ∇z = 0.6666 4x = 0.3334 , 4y = 0.3485 4z = 0.6667 x = 0.3333 , y = 0.3484 z = 0.6667 se w = 0.12345, ent˜ao:

(21)

2.2. ARREDONDAMENTOS 21 Vir´a figura Figura 2.2: Arredondamentos ∇w = 0.1234 4w = 0.1235 w = 0.1235

Podemos representar os trˆes tipos de arredondamento na Figura 2.2 Vamos deixar mais claros os conceitos anteriores.

Defini¸c˜ao 2.2.2. Um arredondamento  : R → F ´e dito por falta, ou por excesso se valerem, repectivamente:

(∀x ∈ R)[x ≤ x] (2.6)

(∀x ∈ R)[x ≤ x] (2.7)

Se, al´em disso, valer:

(∀x, y ∈ R)[x ≤ y → x ≤ y] (2.8)

que ´e tamb´em chamada propriedade monotˆonica, ent˜ao definimos: ∇x = arredondamento monotˆonico por falta.

4x = arredondamento monotˆonico por excesso. 4

Se F = F (b, n, e1, e2) tem para a base b um n´umero par, ent˜ao o arredondamento para o n´umero de m´aquina (ou ponto flutuante) mais pr´oximo ´e notado por x e definido como:

(22)

∀x ∈ [0, be1−1), x = 0 ∀x ∈ [be1, M],        x = ∇x, para x ∈ h∇x, ∇x+4x2  x = 4x, para x ∈ h∇x+4x2 , 4xi (2.9) Se x < 0, x = − (−x)

A regi˜ao (−be1−1, 0)∪(0, be1−1) ´e chamada de Regi˜ao de Underflow pois

nestes intervalos n˜ao h´a representa¸c˜ao adequada em F , e o erro relativo ´e grande.

A regi˜ao [−M, −be1] ∪ [be1, M] ´e chamada Regi˜ao de

Representabili-dade de F pois nesta regi˜ao o erro relativo ´e limitado.

A regi˜ao de (−∞, −M) cup(M, ∞) ´e chamada de Regi˜ao de Overflow e novamente nesta zona o erro relativo n˜ao ´e limitado.

Toda vez que executamos o arredondamento de um n´umero que n˜ao admite uma representa¸c˜ao 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˜ao a partir da d´ecada de 1980.

2.3 Erros

Existem v´arios tipos de erros e v´arias s˜ao as suas causas. Vamos es-tudar trˆes tipos de erros: os inerentes, os de discretiza¸c˜ao e os de arredondamento.

• Erros Inerentes

Aparecem na cria¸c˜ao ou simplifica¸c˜ao de um modelo matem´atico de determinado sistema, ou ainda nas medidas, em geral. Os valores de medidas como tempo, temperatura, distˆancia, intensidade luminosa etc. s˜ao obtidos de instrumentos que tˆem precis˜ao limitada.

(23)

2.3. ERROS 23

• Os erros de Discretiza¸c˜ao

Ou de Aproxima¸c˜ao, ou Truncamento s˜ao os erros cometidos quando se substitui qualquer processo infinito por um processo finito ou dis-creto. Seja, por exemplo, o c´alculo da constante de Euler e que ´e dada por: e = ∞ X i=0 1 i!

• Os erros de Arredondamento surgem quando trabalhamos com m´aquinas digitais para representar os n´umeros reais.

Em geral, trabalhamos com arredondamento para o n´umero de ponto flutuante mais pr´oximo ou com o arredondamento por falta.

A diferen¸ca entre o valor arredondado e o valor exato pode ser medida pelo erro absoluto ou pelo erro relativo.

Defini¸c˜ao 2.3.1. O erro absoluto, que ´e indicado por EA, ´e dado por:

EA = |x − x| (2.10)

4

Defini¸c˜ao 2.3.2. O erro relativo, que ´e indicado por ER, ´e dado por:

ER = |x − x| |x| ou ER = |x − x| |x| (2.11) 4 Exemplo 2.3.1. Se x = 0.00006 e se x = 0.00005 EA = 0.00001 ER = 0.00001 0.00005 = 0.2 ou 20%

Neste caso podemos at´e dizer que EA ´e pequeno; no entanto, n˜ao h´a

(24)

Vir´a figura

Figura 2.3: Erro Relativo = |x−x||x| em F = F (2, 3, −1, 2)

Teorema 2.3.1. Seja F = F (b, n, e1, e2) um sistema de ponto flutuante e  um arredondamento, ent˜ao vale:

(∀x ∈ R)  be1−1 ≤ |x| ≤ M → |x − x| |x| ≤ µ  onde: µ =    1 2b 1−n no caso de x = x bn−1 no caso de x = ∇x (2.12) ◦

Exemplo 2.3.2. Nas calculadoras Hewllet Packard 48G, temos:  = e para b = 10 e n = 12

µ = 1 210

−12

= 0.000 000 000 005

Observa-se que na regi˜ao de underflow o erro ´e sempre igual a 1. Para diminuir este erro ´e preciso que aumentemos o n´umero de casas na mantissa. Isto cusar´a maior densidade de n´umeros represent´aveis em F .

2.4 Digitos Significativos Exatos • Na pr´atica, n˜ao sabemos o valor exato.

(25)

2.4. DIGITOS SIGNIFICATIVOS EXATOS 25

• Precisamos, no entanto, avaliar o resultado, ou seja, saber qu˜ao exato ´e o resultado. revisemos o conceito de d´ıgito significante ou significativo. Defini¸c˜ao 2.4.1. Num sistema decimal, um d´ıgito ´e significante se qual-quer dos d´ıgitos for 1, 2, 3, 4, 5, 6, 7, 8 ou 9. O d´ıgito 0 (zero) ´e significante, exceto quando for usado para fixar a v´ırgula ou ponto decimal ou preencher o lugar de d´ıgitos descartados.

4

Exemplo 2.4.1. Em 0.008735 temos quatro d´ıgitos significantes ou sig-nificativos, a saber, o 8, o 7, o 3 e o 5. Em 30.457 temos cinco d´ıgitos significantes, ou seja, todos eles. Em 23.000 temos s´o dois d´ıgitos significa-tivos. 2

Defini¸c˜ao 2.4.2. Um d´ıgito significativo ´e exato se, aredondando-se o n´umero aproximado para uma posi¸c˜ao imediatamente ap´os aquela posi¸c˜ao do d´ıgito, isso fizer com que o erro absoluto n˜ao seja maior do que a meia unidade naquela posi¸c˜ao do d´ıgito. Abraviaremos D´ıgito Signifcativo Exato por Digse.

4

Exemplo 2.4.2. Os n´umeros 0.66667 e 0.666998 s˜ao aproxima¸c˜oes para 2/3; no entanto, todos os d´ıgitos significativos do primeiro s˜ao exatos, en-quanto no segundo, s´o os trˆes primeiros.

Vejamos com mais detalhes:

1. 0.66667 No primeiro d´ıgito 6 ficamos com o n´umero 0.66 e o erro ab-soluto em rela¸c˜ao a 2/3 ´e:

|0.66 − 0.666 . . . | = 0.006 66 . . . < 0.05

No segundo d´ıgito 6, temos:

|0.666 − 0.666 . . . | = 0.000 666 . . . < 0.005

No terceiro d´ıgito 6, temos:

(26)

|0.666 6 − 0.666 . . . | = 0.000 066 6 . . . < 0.000 5

No quarto d´ıgito 6, temos:

|0.666 67 − 0.666 . . . | = 0.000 003 333 . . . < 0.000 05

No d´ıgito 7, temos:

|0.666 670 − 0.666 . . . | = 0.000 003 333 . . . < 0.000 005

Logo todos os d´ıgito significativos s˜ao exatos 2. 0.666 998 Para o primeiro d´ıgito 6, temos:

|0.66 − 0.666 . . . | = 0.006 666 . . . < 0.05

No segundo d´ıgito 6, temos:

|0.666 − 0.666 . . . | = 0.000 6 . . . < 0.005

No terceiro d´ıgito 6, temos:

|0.6669 − 0.666 . . . | = 0.000 233 . . . < 0.000 5

Para o primeiro d´ıgito 9, temos:

|0.66699 − 0.666 . . . | = 0.000 323 . . . ≮ 0.000 05

Logo o d´ıgito 9 j´a n˜ao ´e exato.

Teorema 2.4.1. Se ER ≤ 12b−m, ent˜ao o n´umero ´e correto em m d´ıgitos significativos exatos. A demonstra¸c˜ao pode ser vista em [3].

Utilizando este teorema, vejamos a maneira mais pr´atica que a defini¸c˜ao para calcular o n´umero de d´ıgitos significativos corretos. Tomemos o loga-r´ıtmo decimal da desigualdade: ER ≤ 12b−m e b = 10.

|x−x| |x| ≤ 1 210 −m → log|x−x| |x|  ≤ log 12 − m → m ≤ log 12 − log|x−x||x|  (2.13)

(27)

2.5. PRECIS ˜AO E EXATID ˜AO DE M ´AQUINAS DIGITAL 27

Logo, para achar o maior n´umero de d´ıgitos significativos exatos temos:

m = −  − log 1 2 + log  |x − x| |x|  (2.14) Se ocorrer que x = x, ent˜ao podemos aplicar a f´ormula anterior do seguinte modo: m = −  − log 1 2 + log  µ + |x − x| |x|  (2.15) Logo, se ER ≤ 12b−m para b = 10, podemos dizer que:

m = −  0.3 + log  µ + |x − x| |x|  (2.16) onde µ ´e a unidade de erro de arredondamento.

Genericamente podemos calcular o n´umero de d´ıgitos significativos exa-tos pelo logaritmo decimal do ER.

Quando n˜ao temos o valor exato para fazermos as compara¸c˜oes, o que ocorre em geral, temos que: se x = limi→∞xi, ent˜ao podemos modificar a f´ormula anterior para:

Digse(xi, xi+1) = −  0.3 + log  µ + |xi+1 − xi| |xi|  (2.17) O que nos d´a o n´umero de d´ıgitos significativos exatos de xi+1 em rela¸c˜ao

xi

2.5 Precis˜ao e Exatid˜ao de M´aquinas Digital

Conforme vimos para cada m´aquina, calculadora ou computador h´a um sistema de ponto flutuante associado. Este sistema automaticamente define a precis˜ao da m´aquina.

Defini¸c˜ao 2.5.1. A precis˜ao de uma m´aquina digital ´e definida como o n´umero de d´ıgitos da mantissa dessa m´aquina.

(28)

Vir´a figura

Figura 2.4: Aproxima¸c˜oes para π

Portanto, a precis˜ao ´e algo claro, n˜ao vari´avel para uma m´aquina. J´a a defini¸c˜ao seguinte n˜ao nos d´a as mesmas caracter´ısticas.

4

Defini¸c˜ao 2.5.2. Exatid˜ao ´e uma medida de perfei¸c˜ao do resultado. A exatid˜ao da um resultado depende da precis˜ao da m´aquina e do m´etodo utilizado para obten¸c˜ao desse resultado.

4

Exemplo 2.5.1. Vejamos v´arias aproxima¸c˜oes para o n´umero π, na figura 2.4 e a seguir o c´alculo dos d´ıgitos significativos exatos das aproxima¸c˜oes, na pr´oxima tabela.

Aproxima¸c˜ao xi Digse (xi, π) Aproxima¸c˜ao xi Digse (xi, π)

3.410 3.4 3.415 4.2

3.411 3.5 3.416 5.3

3.412 3.6 3.417 4.2

3.413 3.7 3.418 3.7

3.414 3.9 3.419 3.6

Embora todas as aproxima¸c˜oes possuam um precis˜ao de cinco casas decimais, somente uma delas possui os cinco d´ıgitos significantes exatos, levando em conta o valor de π = 3.14159265359 o que confere com o valor arredondado para o n´umero de m´aquina mais pr´oximo, com 5 casas deci-mais.

Logo, a exatid˜ao de um processo depende, al´em da m´aquina, tamb´em do algortimo. Para termos uma id´eia da capacidade num´erica de uma

(29)

2.5. PRECIS ˜AO E EXATID ˜AO DE M ´AQUINAS DIGITAL 29

m´aquina, devemos conhecer, al´em da sua precis˜ao que, em geral, ´e dada em termos de d´ıgitos bin´arios, octais ou hexadecimais, conforme for a base de funcionamento de F , qual ´e a sua precis˜ao decimal. No caso de termos F = F (16, 6, −64, 63) a precis˜ao hexadecimal ´e 6, mas a precis˜ao p10 decimal correspondete ´e:

166 = 10p10 → 6 log

1016 = p1log1010 → p1 = 6 ∗ 1.204 = 7.224 (2.18)

Da´ı, a precis˜ao decimal de F ´e de 7.224,e 22.4% das vezes temos 8 casas decimais. Contudo, nem todo n´umero que tenha uma representa¸c˜ao exata com sete casas ou menos ser´a exatamente representado internamente. Por exemplo, 0.1 n˜ao admite representa¸c˜ao exata na base 2.

Al´em da precis˜ao decimal, o c´alculo do chamado ´Epsilon da M´aquina nos d´a uma id´eia da exatid˜ao da m´aquina.

O ε da m´aquina ´e o n´umero de ponto flutuante, tal que: 1 + ε > 1

Alguns m´etodos para o c´alculo de ε n˜ao d˜ao seu valor exato, mas isto nem sempre ´e necess´ario, pois o que importa ´e a sua oredem de grandeza.

O programa Pascal seguinte calcula uma aproxima¸c˜ao de ε da m´aquina: 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´AQUINA = ’:30, EPSILON : 30); END.

O resultado ´e ε ∼= 0.7105427357601 · 10−14

(30)

1. 1.4142 ´e mais preciso e mais exato que 1.41, pois o primeiro tem maior n´umero de casas e aproxima melhor √2.

2. 1.4149 ´e mais preciso que 1.414, pois tem mais casas decimais, por´em ´e menos exato do que 1.414, pois o d´ıgito 9 do primeiro n˜ao ´e exato.

2.6 Instabilidade

Veremos agora uma s´erie de problemas cujos diferentes modos de solu¸c˜ao podem acarretar diferentes resultados. ´E claro que para muitos problemas n˜ao importa qual a solu¸c˜ao utilizada que teremos sempre o mesmo e bom resultado. Quando n˜ao temos um bom resultado, os erros podem ser cau-sados pelos modelos ou entrada de dados (inerentes), pelo truncamento e pelo arredondamento conforme j´a citamos anteriormente. N˜ao trataremos aqui dos erros inerentes. Na realidade, podemos ver os problemas do ponto de vista da instabilidade. Esta instabilidade pode ser entendida como uma “sensibilidade a perturba¸c˜oes” e pode ocorrer tanto no problema em si como

no algoritmo, isto ´e, na maneira de resolvˆe-lo.

2.6.1 Instabilidade dos Algaritmos

Comecemos com dois exemplos que s˜ao citados em [2].

Exemplo 2.6.1. Calcular e e e−5.5 pela expans˜ao na s´erie de Taylor. Dado que: ex = 1 + x + x 2 2 + x3 3! + x4 4! + . . . Ent˜ao para x = 1 temos:

e ∼= 1 + 1 + 0.5 + 0.16667 + 4.1667E − 2 + 8.3333E − 3+ +1.3889E − 3 + 19841E − 4 + 2.4801E − 5+

+2.7557E − 6 = 2.7183

(2.19)

Comparando a soma anterior com a valor 2.718281828, temos um erro relativo de 6.6E − 6, que ´e bem pequeno.

(31)

2.6. INSTABILIDADE 31 Para x = −5.5 temos: e−5.5 ∼= 1 − 5.5 + 15.125 − 27.730 − 27.730 + 38.129− 41.942 + 38.446 − 30.208 + 20.768 − 12.692+ 6.9803 − 3.4902 + 1.5997 − . . . = 0.0026363 (2.20)

Comparando agora com e−5.5 dado por uma calculadora, temos que: e5.5 = 0.004 086 771 439

E o erro relativo ´e de 0.35 que ´e bem maior que o erro anterior. Qual a causa da diferen¸ca?

Observando os termos da soma do segundo caso, vemos que h´a uma combina¸c˜ao de dois fatores:

• somas de grandezas de diferentes ordens; • subtra¸c˜ao e grandezas quase iguais.

Este fenˆomeno ´e chamado de cancelamento subtrativo ou con-celamento catastr´ofico, que ´e bastante comum em c´alculos. se n˜ao houv´essemos arredondado cada parcela, o erro seria sensivelmente menor.

• Temos s´o esta causa?

O cancelamento subtrativo n˜ao ´e a real causa do erro final da soma; • Como melhorar?

Se mudamos o c´alculo de e−5.5 para 1/e−5.5 e utilizarmos as mesmas parcelas, teremos 0.0040865 e o erro relativo ´e 6.6E − 5.

• Logo, podemos utilizar a s´erie de taylor para argumentos positivos. Exemplo 2.6.2. Calcular In = R01xnex−1dx para n = 1, 2 . . .

Solu¸c˜ao: integrando por partes:

Z 1 0 xn |{z} u ex−1dx | {z } dv = xnex−110− Z 1 0 n xn−1ex−1dx = 1−nIn−1, n = 2, 3, . . . (2.21)

(32)

Ou seja: In = Z 1 0 xnex−1dx = 1 − n In−1 onde: I1 = Z 1 0 xex−1dx = 1 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

Olhando o integrando I9 = R x9ex−1, verificamos que ´e sempre positivo

em [0, 1] e, no entanto, o valor computado foi Negativo. O que causou tal erro?

Notemos que s´o foi feito um erro de arredondamento em I1quando 1/e foi tomado por 0.367879 em vez de 0.3678794412. Como a f´ormula est´a correta, o erro final ´e 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˜ao, o erro de I9 ´e exatamente (−2)(−3) . . . (−9) = 9!

Sendo:

E1 = [1/e − 0.367879] = 4.412 · 10−7 (2.22) Temos no final:

4.412 · 10−7 · 9! ∼= 0.1601 Na realidade, o valor correto de I9 ´e:

I9 = −0.06848 + 0.1601 = 0.00916

que ´e uma valor razo´avel para I9. Logo, embora a f´ormula 2.21 esteja

(33)

2.6. INSTABILIDADE 33

gerado ´e de m´a exatid˜ao. Um algoritmo est´avel ´e dado pela f´ormula equiv-alente:

In−1 = 1 − 1n

n n = . . . , 4, 3, 2 (2.23) Nesta f´ormula, a cada passo, o valor do erro em In ´e decrescido por n1, (em vez de multiplicado por n). Se n´os come¸camos por n  1, voltaremos e ent˜ao o erro inicial ou erros de arredondamento diminuir˜ao a cada passo. Resta-nos saber qual ser´a o valor final para In. Observemos que:

In = Z xnex−1dx ≤ Z 1 o xndx =  x n+1 n + 1 1 0 = 1 n + 1 (2.24)

Portanto, In tende a zero quando n tende ao infinito. se aproximadamamos I20 para zero e o usamos como valor inicial, temos:

I20 ∼= 0 I14 ∼= 0.0627322 I19 ∼= 0.0500000 I13 ∼= 0.0669477 I18 ∼= 0.0500000 I12 ∼= 0.0717733 I17 ∼= 0.0527778 I11 ∼= 0.0773523 I16 ∼= 0.0557190 I10 ∼= 0.0838771 I15 ∼= 0.0590176 I9 ∼= 0.0916123

Majorando o erro em I20 por 211 , temos: para E19 = 1 20 · 1 21 ∼ = 0.0024 para E18 = 1 19 · 1 20 · 1 21

Em E15 temos 4 · 10−8, o que mostra que o erro inicial est´a praticamente

dilu´ıdo. Continuando o algoritmo dado por 2.23, temos: I8 = 0.1009320 I4 = 0.1708934

I7 = 0.1123835 I3 = 0.2072767

I6 = 0.1268024 I2 = 0.2642411

(34)

Exemplo 2.6.3. Calcular a m´edia aritm´etica de dois n´umeros a e b. Algoritmo 1: 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}

Para um dado F = F (b, n, e1, e2) podemos ter, conforme a, b ∈ F os

seguintes problemas:

• Algoritmo 1: overflow em 2. • underflow em 2 e 3.

(35)

2.6. INSTABILIDADE 35

No algoritmo 3 n˜ao teremos provavelmente nenhum erro operacional, mas poderemos ter um erro no comando 2 se houver cancelamento subtrativo.

Vejamos agora um algoritmo cl´assico para calcular as ra´ızes de equa¸c˜ao do 2o grau cujas as f´ormulas s˜ao dadas pelas equa¸c˜oes seguintes:

x1 = −b + √b2 − 4ac 2a (2.25) x2 = −b −√b2 − 4ac 2a (2.26)

Vamos analisar alguns cassos a serem resolvidos em F = F (10, 8, −50, 50)

Exemplo 2.6.4. Caso a:

a = 1 , b = −105 , c = 1

As ra´ızes exatas corretamente arredondadas para 11 d´ıgitos s˜ao: x1 = 99999.999990

x2 = 0.000010000000001

Se as ra´ızes forem calculadas por (22), teremos: x1 = 100000.0 (muito boa)

x2 = 0 (ruin)

Na realidade, no c´alculo de x2 fomo v´ıtimas do chamado “cancelamento catastr´ofico”. Fa¸camos um parˆentese para explicar tal fenˆomeno.

Considerando x = 12345678.0 e y = 12345677.0, temos uma diferen¸ca x − y = 1.00000000, por´em, com uma pequena mudan¸ca de x para ¯x = 12345678.1 e de y para ¯y = 12345676.9, obtemos uma diferen¸ca de:

˜

(36)

Portanto, uma mudan¸ca no nono d´ıgito de um dado causou uma mu-dan¸ca no segundo d´ıgito da resposta. Neste caso, quando estamos sub-traindo grandezas aproximadamente iguais e h´a um erro muito grande, dizemos que houve um cancelamento subtrativo (o mesmo vale para somar grandezas iguais, mas de sinais diferentes).

Voltando para o exemplo inicial, para calcular x2 por 2.25 ocorre:

x2 =

+105 − √1010

2 =

0

2 = 0 (2.27)

Que ´e identificado cancelamento subtrativo.

Uma forma de evitar tal problema, ´e usar o seguinte algoritmo:

x1 =

−b − sign(b)√b2 − 4ac

2a (2.28)

Como ax2+bx+c = a(x−x1)(x−x2) implica que ax1 x2 = c, podemos

calcular a raiz por:

x2 =

c ax1

(2.29) Aplicando este algoritmo, n˜ao t˜ao ingˆenuo como 2.25, temos:

• x1 = 10000.00

• x2 = 1.0000000/100000.00 = 0.000010000000 Caso b:

a = 6 , b = 5 , c = −4

Aqui n˜ao h´a dificuldades em calcular para x1 e x2 os valores: • x1 = 0.50000000

• x2 = −1.3333333

Seja qual for a f´ormula utilizada. Caso c:

(37)

2.6. INSTABILIDADE 37

a = 6x1030 , b = 5x1030 , c = −4x1030

Desde que os coeficientes foram multiplicados por 1030 n˜ao h´a mudan¸ca nas ra´ızes. Contudo, a aplica¸c˜ao das f´ormulas pode levar a um problema de overflow, desde b2 > 1050 (considerando o F dado).

Caso d:

a = 10−30 , b = −1030 , c = 1030

Aqui, x1 est´a muito perto de 1, enquanto x2 est´a perto de 106. Portanto, nosso algoritmo deve determinar x1 muito aproximadamente, mas ir´a falhar para x2.

Caso e:

a = 1.0000000 , b = −4.0000000 , c = 3.9999999 As ra´ızes verdadeiras s˜ao:

• x1 = 1.999683772 • x2 = 2.000316228

Mas aplicando a f´ormula 2.28, obtemos x1 = x2 = 2.0000000, com

quatro d´ıgitos corretos.

Exemplo 2.6.5. Seja o sistema:

 0.117 · 10−2 x + 0.648 y = 0.649

0.512 x − 0.920 · 10−3 y = 0.511 (2.30) Que, resolvidos em F = F (10, 3, −3, 3) com arredondamento para o n´umero de m´aquina mais pr´oximo, temos:

 0.117 · 10−2 x + 0.648 y = 0.649

0x + 0.284 · 103 y = 0.511 (2.31) E da´ı y = 0.996 e x = 3.42.

(38)

Trocando a ordem das equa¸c˜oes e resolvendo no mesmo sistema de ponto flutuante, temos x = 1 e y = 1, a qual se acha bem mais pr´oxima da solu¸c˜ao exata que ´e:

x = 0.999843279 . . . e y = 0.999737937 . . .

Voltaremos a apresentar este exemplo no Cap´ıtulo 3 quando veremos o M´etodo de Elimina¸c˜ao de gauss com Pivotamento Parcial.

Com os exemplos anteriores vemos que os algoritmos podem gerar, sob certos dados, erros consider´aveis de modo a tornar in´util o resulstado.

Vejamos agora outro tipo de instabilidade.

2.6.2 Instabilidade de problemas

Consideremos a tarefa de colocar um l´apis comum, de base plana, em p´e. Se a base for colocada para baixo, a terefa ser´a f´acil; contudo, se a parte cˆonica da ponta ficar para baixo, a tarefa ´e quase imposs´ıvel (sem truques). A primeira tarefa constitui um problema est´avel, enquanto a segunda ´e dita inst´avel, pois, efetivamente, se o l´apis ficar em p´e, ser´a apenas por algumas fra¸c˜oes de segundo e depois cair´a. Algo semelhante ocorre com problemas num´ericos.

Veremos agora um problema cl´assico em metem´atica Num´erica que ´e citado em |26| Wilkinson.

Exemplo 2.6.6.

p(x) = x20− 210x19+ . . . = (x − 1)(x − 2)(x − 3) . . . (x − 19)(x − 20) = 0 ´

E claro que as ra´ızes s˜ao 1, 2, 3, . . . , 19 e 20 e est˜ao bem separadas. Computando as ra´ızes de p(x) + 2−23 · 210x19 = 0, num computador com

(39)

2.6. INSTABILIDADE 39 R1 = 1.000 000 000 R2 = 2.000 000 000 R3 = 3.000 000 000 R4 = 4.000 000 000 R5 = 4.999 999 928 R6 = 6.000 006 944 R7 = 6.999 697 234 R8 = 8.007 267 603 R9 = 8.917 250 249 R10, R11 = 10.095 266 145 ± 0.643 500 904i R12, R13 = 11.793 633 881 ± 1.652 329 728i R14, R15 = 13.992 358 137 ± 2.518 830 070i R16, R17 = 16.730 737 466 ± 2.812 624 894i R18, R19 = 19.502 439 400 ± 1.940 330 347i R20 = 20.846 908 101

Notemos que um termo da equa¸c˜ao mudou de −21019 para −210 + 2−23x19, ou seja, uma mudan¸ca no trig´esimo d´ıgito da base 2 em apenas um dos coeficientes. O resultado ´e completamente inesperado e as mu-dan¸cas nas ra´ızes s˜ao grandes. A raz˜ao dessa mudan¸ca dr´astica n˜ao ´e arredondamento nem o algoritmo e sem problema de condicionamento.

H´a certos problemas que, quando sofrem pequena altera¸c˜ao nos dados de entrada, tˆem na sua resposta pequena diferen¸ca proporcional, enquanto outros mostram grande varia¸c˜ao no resultado do mesmo com uma pequen´ıs-sima altera¸c˜ao nos dados de entrada. Os primeiros problemas s˜ao ditos bem condicionados e os segundos s˜ao ditos mal condicionados.

No caso de polinˆomio podemos analisar o seguinte: Seja p(x, α) = x20 − αx19 + . . .

Deferanciando p(x, α) = 0 em rela¸c˜ao a α, temos: ∂p(x, α) ∂x ∂x ∂α + ∂p(x, α) ∂α = 0

(40)

∂x ∂α = − ∂p/∂α ∂p∂α ∂x ∂α = x19 P20 i=1 Q20 j=1, j6=i(x − j)

Calculando em cada raiz, temos:

∂x ∂α x=i = i19 Q20 j=1, j6=i(i − j) , i = 1, 2, . . . , 20. (2.32)

Vejamos a seguinte tabela:

Raiz ∂α∂x|x = i Raiz ∂α∂x|x = i 1 −8.2x10−18 11 −4.6x107 2 8.2x10−11 12 2.0x108 3 −1.6x10−6 13 −6.1x108 4 2.2x10−3 14 1.3x109 5 6.1x10−1 15 −2.1x109 6 5.8x101 16 2.4x109 7 −2.5x103 17 −1.9x109 8 6.0x104 18 1.0x109 9 −8.3x105 19 −3.1x108 10 7.6x106 20 4.3x107

Estes n´umeros d˜ao uma medida direta da sensibilidade ou condiciona-mentodas ra´ızes para o coeficiente α. Logo, as ra´ızes maiores s˜ao as mais sens´ıveis. Na unidade quatro voltaremos a falar do condicionamento das ra´ızes de equa¸c˜oes n˜ao lineares.

Exemplo 2.6.7. Dada uma curva y = f (x), determinar a tangente a essa curva em x = x0, assim como a ´area limitada por esta curva e as retas

(41)

2.6. INSTABILIDADE 41

Vir´a figura

Figura 2.5: Estabiladade da integra¸c˜ao e instabildade da diferencia¸c˜ao

Se pequenas varia¸c˜oes ocorrerem em f (x) em virtude, por exemplo, de arredondamento ou truncamento, podemos ter grandes varia¸c˜oes no c´alculo da tangente `a curva no ponto (x0, f (x0)), como pode ser visto na Figura

2.5, onde a curva g constitui uma perturba¸c˜ao na curva f .

No entanto, a ´area sob a curva f ou g mant´em-se praticamente a mesma.

Exemplo 2.6.8. Consideremos a equa¸c˜ao diferencial:

y0(x) = y 0 ≤ x ≤ 1.0

y(0) = 1 (2.33)

Aproximando y0()x por:

(h/2)[−3y(x) + 4y(x + h) − y(x + 2h)]

Obtido pela aproxima¸c˜ao de y(x) por um polinˆomio do 2ograu e asso-ciando y(x) com yi, y(x + y) com y(x + 2y) com yi+2, temos:

yi+2 = 4yi+1 − 3yi − 2hyi i = 0, 1, 2, . . .

Onde y0 = 1 e y1 = eh.

(42)

y2 = 1.220 683 672 y3 = 1.346 187 75 y4 = 1.478 563 25 y5 = 1.606 452 2 y6 = 1.694 406 4 y7 = 1.636 978 56 y8 = 1.225 813 76 y9 = -0.735 076 352 y10 = -6.542 909 44

E da´ı dever´ıamos ter em uma aproxima¸c˜ao para y(1) = e. Contudo, y10 nada tem a ver com y(1).

Os dois ´ultimos exemplos mostram que a diferencia¸c˜ao pode ser um problema num´ericamente mais inst´avel do que a integra¸c˜ao. Contudo, do ponto de vista anal´ıtico o processo da diferencia¸c˜ao de fun¸c˜oes que surgem na pr´atica ´e mais simples do que a integra¸c˜ao.

Com isso, concluimos esta unidade mostrando alguns problemas que a Matem´atica Num´erica lida em fun¸c˜ao da aritm´etica feita numa m´aquina como um computador digital. Felizmente, os problemas causados pelo arredondamento ou pelo condicionamento dos problemas n˜ao s˜ao maiores que as vantagens do uso do computador. Estes exemplos devem levar-nos a pensar que n˜ao devemos em qualquer hip´otese confiar cegamente nos resultados produzidos pela m´aquina.

(43)

.1. INTRODU ¸C ˜AO 157

T´opicos sobre a Norma IEEE 754

.1 Introdu¸c˜ao

Hist´oricamente existem alguns marcos na representa¸c˜ao dos n´umeros tanto dos naturais ou inteiros como dos racionais como reais. Na nota¸c˜ao decimal o uso do zero e o sistema posicional foi um deles. Isto facilitou n˜ao s´o a representa¸c˜ao em si, como tamb´em os algoritmos de opera¸c˜oes aritm´eticas tornaram-se mais simples. Neste sistema a representa¸c˜ao de n´umeros de forma finita ou de fra¸c˜oes peri´odicas ou n˜ao, est´a bem estabelecido e usado de modo mundial.

Com o advento dos computadores e sua mem´oria com palavras de tamanho finito tornaram-se necess´arios criar novas representa¸c˜oes. Os n´umeros in-teiros s˜ao representados com sistemas de ponto fixo. Para estes, usualmente temos a representa¸c˜ao usando o c´odigo de complemento de dois, para re-presentar adequadamente o zero, os positivos e negativos. Para os n´umeros racionais s˜ao usados os sistemas de ponto flutuante. Os n´umeros reais, s˜ao aproximados por racionais. De fato em qualquer sistema de ponto flutuante s´o temos representa¸c˜oes para racionais. Isto traz v´arios problemas com os arredondamentos.

At´e a d´ecada de 80 cada fabricante de computador escolhia um sistema de representa¸c˜ao e o implementava e todos os demais aplicativos de software que usariam estas m´aquinas usavam necessariamente este sistema. Por exemplo, no software b´asico de mainframes com IBM usava-se um tipo de representa¸c˜ao, com base interna de 16, onde o n´umero de ponto flutuante era representado com mantisa, sinal da mantissa e caracter´ıstica que re-presentava o exponte sem sinal, fazendo um deslocamento. J´a nos antigos computadores Burroughs ou CDC, usava-se base 8 e o n´umero de ponto flutuante possui, sinal da mantissa, mantissa, expoente e sinal do expoente. Com a difus˜ao de computadores de pequeno porte onde a flexibilidade de aplicativos tornou-se maior, foi necess´ario desenvolver um padr˜ao para viabilizar o uso, reuso e intercˆambio de informa¸c˜oes sobre a aritm´etica de

(44)

ponto flutuante de modo mais uniforme. Estes problemas foram estudados por um comite do Instituto de Engenharia El´etrica e Eletrˆonica do Estados Unidos da Am´erica do Norte. 3

O objetivo da Norma IEEE 754 ´e estabelecer as diretivas para a imple-menta¸c˜ao da aritm´etica bin´aria de ponto flutuante. Ela especifica formatos, opera¸c˜oes b´asicas: adi¸c˜ao subtra¸c˜ao, multiplica¸c˜ao, divis˜ao, raiz quadrada, compara¸c˜oes, convers˜oes, e quais s˜ao as situa¸c˜oes de excess˜ao. A norma IEEE 854-1987 generaliza a 754 e abrange a aritm´etica de ponto flutuante na base decimal, que ´e usada principalmente nas calculadoras.

Embora a Norma propicie suporte para para diagnosticar certas situa¸c˜oes de risco, isto nem sempre ´e implementado pelo fabricante em sua totalidade.

O link da IEEE onde pode-se comprar a norma ´e www.ieee.org. ou http://standards.ieee.org/

O link para mais informa¸c˜oes e onde existem artigos como o do David Goldberg e outros ´e http://grouper.ieee.org/groups/754/

Um link muito interessante, criada por Quanfei Wen ´e: http://babbage.cs.qc.edu/courses/cs341/IEEE-754.html

.2 Formatos

Toda a m´aquina ou qualquer instrumento material tem implicitamente uma limita¸c˜ao f´ısica. Por exemplo, uma fita m´etrica comum n˜ao serve para medir corretamente com mil´ımetros e sim apenas com cent´ımetros; se usarmos um paqu´ımetro, podemos medir corretamente com mil´ımetros. Uma m´aquina como um carro tem um limite m´aximo de velocidade. Para atingir veloci-dades maiores temos que usar outro tipo de carro ou at´e mesmo outro tipo de ve´ıculo, como um avi˜ao. Estas limita¸c˜oes est˜ao associadas `a precis˜ao. No caso de c´alculos feitos em m´aquinas digitais temos a chamada precis˜ao simples, dupla ou precis˜ao extendida que dependem de v´arios parˆametros estabelecidos pelo hardware, como tamanho em bits da palavra de mem´oria,

3Institute of Electrical and Electronics Engineers: IEEE ou ”EYE triple E.”O IEEE ´e uma sociedade cujos membros

s˜ao t´ecnicos profissionais da ´area de engenharia eletrˆonica, el´etrica e atualmente de computa¸c˜ao e outras tecnologias emergentes.

(45)

.2. FORMATOS 159

tamanho de registradores especiais, n´umero de bits extras da palavra de mem´oria, como os “tags” bits ou “flags” que indicam a paridade, qual o tipo de conte´udo, underflow, overflow, divis˜ao por zero, opera¸c˜ao inv´alida ou outros indicadores para o sistema operacional.

Na Norma s˜ao assumidos as seguintes defini¸c˜oes: • N´umero de Ponto Flutuante Bin´ario

´

E uma seq¨uˆencia de d´ıgitos bin´arios armazenados em bits, composto de 3 campos, O bit mais significativo ´e o sinal da mantissa, 0 para positivo e 1 para negativo; um expoente deslocado (biased em inglˆes) e uma mantissa que cont´em a parte fracion´aria.

• N´umero Normalizado ´

E o n´umero de ponto flutuante cujo expoente esta dentro dos limites e a mantissa representa qualquer fra¸c˜ao bin´aria.

• Expoente ´

E o mesmo expoente da defini¸c˜ao usual de n´umero de ponto flutuante, ou seja, ´e o expoente da base 2 n˜ao deslocado, ou seja, “not-biased”. • Expoente “biased” ou Caracter´ıstica

´

E a soma de uma constante“bias”com o expoente gerando um expoente deslocado, para evitar que tenhamos que armazenar um sinal para o expoente, o que dificulta os algoritmos aritm´eticos. Nas m´aquinas IBM era chamado de Caracter´ıstica para n˜ao confundir com o expoente normal.

• N´umero Desnormalizado ´

E um n´umero n˜ao nulo cujo expoente tem um valor reservado, usual-mente o valor m´ınimo e cujo primeiro bit da mantissa ´e 0. ´E ´util para representar os n´umeros que ficam na regi˜ao de underflow.

(46)

´

E uma seq¨uˆencia de bits que representa a mantissa da defini¸c˜ao usual e que de fato possui como primeiro bit o valor 1 que se torna impl´ıcito, antes do ponto separador que tamb´em ´e impl´ıcito.

• Infinitos e Zeros

Com as possibilidades de bits temos duas configura¸c˜oes para o zero: +0 e −0, o que ´e comum em certos c´odigos, e dois infinitos: +∞, −∞.

• NaN: N˜ao ´e um n´umero de ponto flutuante ´

E uma seq¨uˆencia de bits que possui valores indefinidos e representam opera¸c˜oes inv´alidas.

Para cada formato temos a seguinte express˜ao:

(−1)S2e(b0.b1b2b3. . . bn−1)

onde S=0 se a mantissa for positiva ou S=1, se for negativa, Emin ≤ e ≤

Emax, o valor b0 tem o valor 1, na base bin´aria e assume-se que este ‘10 e´constante e fica subentendido e n˜ao ocupa um espa¸co ou bit; os demais d´ıgitos bin´arios s˜ao nulos ou 1.

No formato simples temos 32 bits dispostos na seguinte fˆorma:

Quantidade de bits 1 8 23

Conte´udo Sinal Expoente fra¸c˜ao Bits 31 30, 29, . . . 23 22,21 . . . 1, 0

(47)

.3. EXEMPLOS 161

Classe Sinal Exp Fra¸c˜ao

Zeros 1 0 0

0 0 0

N´umero Normalizado 0 1-254 qualquer 1 1-254 qualquer N´umero Desnormalizado 0 0 n˜ao nulo 1 0 n˜ao nulo

Infinitos 0 255 0

1 255 0

NaN( Not a Number) 255 n˜ao nulo

No formato duplo temos 64 bits dispostos na seguinte fˆorma:

Quantidade de bits 1 11 52

Conte´udo Sinal Expoente fra¸c˜ao Bits 63 62, 61, . . . 50 51,50 . . . 1, 0 Para outros formatos temos o seguinte resumo:

Parˆametro Formato

B´asico B´asico Duplo Duplo “single” Estendido “double” Estendido

n (precis˜ao) 24 ≥ 32 53 ≥ 64 Emax +127 ≥ 1023 +1023 ≥ 16383 Emin -126 −1022 ≤ −16382 Bias +127 N˜ao +1023 N˜ao especificado especificado Bits do expoente 8 ≥ 11 11 ≥ 15 Total em bits 32 ≥ 43 64 ≥ 79 .3 Exemplos

Estes exemplos se referem ao formato simples, que correspondem ao tipo float na linguagem C ou Real em Pascal nos atuais PC com palavra

(48)

b´asica de 32 bits ou 4 bytes. Na linguagem C, atrav´es das bibliotecas de I/O a especifica¸c˜ao de formato % converte o conte´udo apontado para a sa´ıda desejada.

especificador o argumento ´e convertido para a d ou i int nota¸c˜ao decimal de

inteiro com sinal

o int valor octal sem sinal

sem os zeros finais

x ou X int nota¸c˜ao hexadecimal, sem os zeros n˜ao significativos

u int nota¸c˜ao decimal sem sinal e ou E float or nota¸c˜ao decimal cient´ıfica

double com [−]m.mmm . . . mE[±]nnn f float or nota¸c˜ao decimal

double com [−]mmmm.nn . . . n

g ou G float or usa a forma mais curta dentre e ou f double e sem os zeros n˜ao significativos u int nota¸c˜ao hexadecimal, sem sinal p pointer endere¸co armazenado num ponteiro

O formato %p.qf indica que ser˜ao usadas p espa¸cos para o n´umero, con-tando o sinal e o ponto, e q indica o n´umero de casas decimais ap´os o ponto.

Observa¸c˜oes:

Muito cuidado ´e necess´ario ao usar os formatos adequados ao tipo de vari´avel.

1. No caso de inteiros a linguagem C, como normalmente ´e implementada n˜ao avisa sobre o overflow ou underflow.

2. A divis˜ao por zero n˜ao causa uma interrup¸c˜ao em si, embora quando o valor ´e impresso temos: (1/0) = 1.#IN F 00. e seu conte´udo fica: 7f 800000x = (0|111 1111 1|00000 . . . 0)2 que sinaliza +∞. Se este

(49)

.4. EXEMPLOS 163

valor for reusado o processo de indertermina¸c˜ao continua.

3. Se por exemplo, o valor (1.0/0.0) ´e somado a 10.0 temos: (1/0 ∗ 1 + 10)f = 1.40445e + 306

4. No caso de float ....

.4 Exemplos

Exemplo .4.1. Indicar a configura¸c˜ao de bits que assumem os seguintes valores:

1. float num=357.8125;

(a) Convertendo para bin´ario:

(357.8125)10 = (1 0110 0101.1101)2

(b) Deslocar o ponto fracion´ario:

(357.8125)10 = (1.0110 0101 1101)2 · 2+8

(c) Completar a mantissa at´e completar os 23 bits ou preencher com zeros o que faltar

m = 011 0010 1110 1000 0000 0000

Lembrar que o primeiro 1 fica subentendido e foi cortado, e come¸camos a preecher do bit mais significativo, da esquerda para direita.

(d) Deslocando o expoente: Somar a constante do “bias=127´´ 127 + 8 = 135 = (1000 0111)2

(e) Preencher o expoente com o resultado do item anterior. Se n˜ao houver 8 bits preencher com zeros.

(f) Determinar o sinal da mantissa. S = 0

(50)

(g) Juntando as partes:

(357.8125)10 = 0|100 0011 1|011 0010 1110 1000 0000 0000 ou ainda em hexa:

(357.8125)10 = 43b2e800x

Se o n´umero fosse negativo, ficar´ıamos com: (357.8125)10 = c3b2e800x

Aten¸c˜ao, isto n˜ao ´e converter o n´umero para a base 16.

Exemplo .4.2. Seja agora o caso de n´umeros inteiros: int i=-357; int j=357;

Usa-se o complemeto de 2.

1. Convertendo para bin´ario e completando com zeros:

357 = (1 0110 0101)2 357 = (0 . . . 0 0001 0110 0101)2 2. Fazendo o complemento de 2: 1 . . . 1 0 1001 1010 + 1 1 . . . 1 1110 1001 1011

3. para o valor positivo, n˜ao ´e necess´ario nenhuma outra conta, al´em da convers˜ao inicial.

Logo:

(357)10 = 00000165x

(51)

.4. EXEMPLOS 165

Exemplo .4.3. Outro n´umero real f loat num = −951.339 843 75; 1. Convertendo para bin´ario:

(−951.33984375)10 = (11 1011 0111.0101 0111)2

2. Deslocar o ponto fracion´ario:

(−951.33984375)10 = (1.11011011101010111)2) · 29

3. Completar a mantissa at´e completar os 23 bits ou preencher com zeros o que faltar

m = 1.11011011101010111000000

4. Deslocando o expoente: Somar a constante do “bias=127´´ 127 + 9 = 136 = (1000 1000)2

5. Preencher o expoente com o resultado do item anterior. Se n˜ao houver 8 bits preencher com zeros.

6. Determinar o sinal da mantissa.

S = 1 7. Juntando as partes:

(−951.33984375)10 = 1|100 0100 0|110 1101 1101 0101 1100 0000

ou ainda em hexa:

(−951.33984375)10 = c46dd5c0x

Se o n´umero fosse positivo, ficar´ıamos com:

(52)

Exemplo .4.4. Consideremos um n´umero real com precis˜ao dupla: 1. double x=245.;

2. Convertendo para bin´ario:

(245.)10 = (1111 0101)2 3. Deslocar o ponto fracion´ario:

(245.)10 = (1.111 0101)2 · 2+7

4. Completar a mantissa at´e completar os 52 bits ou preencher com zeros o que faltar

m = 111 0101 0000 000 . . . 0000

Lembrar que o primeiro 1 fica subentendido e foi cortado, como na precis˜ao simples e come¸camos a preecher do bit mais significativo, da esquerda para direita.

5. Deslocando o expoente: Somar a constante do “bias=1023 = 210− 1´´ 1023 + 7 = 1030 = (100 0000 0110)2

6. Preencher o expoente com o resultado do item anterior. 7. Determinar o sinal da mantissa.

S = 0 8. Juntando as partes:

(245.)10 = 0|100 0000 0110 1110 1010 0000 . . . 0000 ou ainda em hexa:

(53)

.5. ARREDONDAMENTOS 167

.5 arredondamentos

O arredondamento ´e um ponto cr´ıtico da aritm´etica de ponto flutuante. Para fazer o arredondamento de modo correto ´e necess´ario evitemente con-hecer os demais d´ıgitos do resultado. De fato nas unidades de aritm´etica existem mais informa¸c˜oes do que ´e mostrado na palavra de mem´oria. ´E a aprtir destas informa¸c˜oes que ´e calculado o arredondamento.

Existem 4 tipos de arredondamento definidos na norma. • “Unbiased:” arredonda para o mais pr´oximo

• Direcionado ao Zero

• Direcionado ao infinito positivo • Direcionado ao infinito negativo

Ser´a continuado. Revis˜ao de C´alculo

O seguintes resultados s˜ao vistos nos cursos b´asicos e as referˆencias est˜ao na Bibliografia.

(54)
(55)

Referˆ

encias Bibliogr´

aficas

[1] Lamport, L., LaTeX : A Documentation Preparation System User’s Guide and Reference Manual, Addison-Wesley Pub Co., 2nd edition, August 1994.

[2] Forsythe, G.E.;Malcom, M.A. & Moler

” C.B. Computer Methods for mathematical computations Englewood Clifs, Prentice Hall, 1977. [3] Pennington, R.H. Introductory computer methods and numerical

analysis. New York, MacMilan, 1965.

Referências

Documentos relacionados

relacionamento do cidadão Bragança Orgulhosa Bragança Inteletual Bragança Inovadora Bragança Criativa Desenvolvimento económico e competitividade Bragança Atrativa

Em junho de 2020, o Programa de Doutoramento em Materialidades da Literatura (DML) da Faculdade de Letras da Universidade de Coimbra (FLUC) completará dez anos de

Por exemplo, em Busiris, o candidato deve cruzar todo o templo, para alcançar o Santuário dos santuários; em Abidos, ele deve seguir diretamente pelo subterrâneo, para

• Oferecemos apartamentos adaptados para porta- dores de necessidades especiais.. Para sua maior comodidade seguem abaixo os Hotéis Ofi ciais do 10º Congresso da FORL, que farão

No que se refere ao escore total para unha frágil, observou-se, a partir da semana quatro, que a proporção de pacientes com melhora de pelo menos 50% foi estatisticamente

Ocorre que, passados quase sete anos da publicação da Lei n o  12.651/2012 e pacificadas as discussões sobre a sua aplicação, emendas a uma medida provisória em tramitação

The provisional measure addresses the necessary extension of the deadline for entry into the Environmental Regularization Program (PRA), but also contains amendments that aim

Atividade Prática Integradora D CÓDIGO:EBAxxx N Consolidação e integração dos conteúdos dos eixos estruturantes do curso.. Cerâmica CÓDIGO:APL017