cálculo numérico iprj/uerj sílvia mara da costa campos ... · aritmética de ponto flutuante...

16
1 Cálculo Numérico IPRJ/UERJ Sílvia Mara da Costa Campos Victer ÍNDICE Aula 1- Introdução Representação de números Conversão de números Aritmética de ponto flutuante Erros em máquinas digitais Aula 1 - Introdução O Cálculo Numérico tem por objetivo estudar e aplicar algoritmos numéricos para a solução de problemas, visando o menor "custo" e confiabilidade do resultado (observar tempo de execução, número de operações aritméticas, quantidade de memória, propagação do erro, etc). Um bom algoritmo numérico deve se caracterizado por: a) Independência da máquina : a execução do programa pode ser realizada em diferentes máquinas; b) Inexistência de Erro Aritmético : problemas de overflow e underflow devem ser detectados a priori; c) Inexistência de Erro Lógico : previsão de tudo o que poderá ocorrer durante o processo (divisão por zero, por exemplo); d) Quantidade finita de cálculos ; e) Existência de um critério de exatidão ; f) O erro deve convergir para zero com precisão infinita. g) Eficiência : produzir a resposta correta com economia. Ao se trabalhar com um computador (ou qualquer outra máquina digital) algumas dificuldades numéricas podem ocorrer. Podem ocorrer erros devido ao processo de tradução de números decimais para números binários.

Upload: phamdung

Post on 15-Dec-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

1

Cálculo Numérico

IPRJ/UERJ

Sílvia Mara da Costa Campos Victer

ÍNDICE

Aula 1- Introdução

Representação de números

Conversão de números

Aritmética de ponto flutuante

Erros em máquinas digitais

Aula 1 - Introdução

O Cálculo Numérico tem por objetivo estudar e aplicar algoritmos numéricos para a

solução de problemas, visando o menor "custo" e confiabilidade do resultado (observar tempo de execução, número de operações aritméticas, quantidade de

memória, propagação do erro, etc).

Um bom algoritmo numérico deve se caracterizado por: a) Independência da máquina: a execução do programa pode ser realizada em

diferentes máquinas; b) Inexistência de Erro Aritmético: problemas de overflow e underflow devem ser

detectados a priori; c) Inexistência de Erro Lógico: previsão de tudo o que poderá ocorrer durante o

processo (divisão por zero, por exemplo);

d) Quantidade finita de cálculos; e) Existência de um critério de exatidão;

f) O erro deve convergir para zero com precisão infinita. g) Eficiência: produzir a resposta correta com economia.

Ao se trabalhar com um computador (ou qualquer outra máquina digital) algumas

dificuldades numéricas podem ocorrer. Podem ocorrer erros devido ao processo de

tradução de números decimais para números binários.

2

1.1 - Processo de Modelagem de um Fenômeno da natureza

Modelagem - Fase de obtenção de um modelo matemático que descreve o

comportamento do problema que se quer estudar.

Resolução - Fase de obtenção da solução do modelo matemático através da

aplicação de métodos numéricos.

Todas as fases acima estão passíveis de erros.

Muitas vezes os resultados finais estão distantes do que se poderia esperar, ou que

todas as fases de resolução tenham sido realizadas corretamente. Os resultados

obtidos também dependem:

a) da precisão dos dados de entrada b) da forma como esses dados são representados no computador

c) das operações numéricas efetuadas

Estudaremos algoritmos numéricos a fim de obter uma solução numérica do problema, a qual, geralmente, difere da solução exata.

Possíveis fontes de erro que geram essa diferença: a) Simplificação do modelo matemático (algumas variáveis envolvidas são

desprezadas); b) Erro nos dados de entrada ( com frequência provindos de dados experimentais);

c) Truncamento (por exemplo, substituição de um processo infinito por um finito e linearizações);

d) Erro de arredondamento em aritmética de ponto flutuante.

Aula 1 - Representação de números

Os números empregados no calculo computacional podem ser de dois tipos: números inteiros e números em “ponto flutuante” (números reais da matemática, por exemplo

3,56 → 0,356 x 101). Os computadores atuais representam os números internamente no formato binário, como uma sequencia de 0s e 1s. Apesar dessa representação ser

conveniente para as maquinas é antinatural para os seres humanos, cujo sistema de numeração é o decimal.

Decomposição de um número num sistema de bases.

Em geral qualquer numero pode ser decomposto numa soma dos dígitos que o constitui (d) vezes potências da sua base (β) conforme indicado abaixo:

3

Onde os dígitos dj pertencem aos números naturais e satisfazem a condição: 0 ≤ dj ≤

(β-1)

Sistema de Numeração decimal ou base 10.

Todos os múltiplos e submúltiplos de um número são escritos com potências de 10.

Exemplos:

Sistema de numeração binário ou base 2.

Todos os múltiplos e submúltiplos de um número são escritos com potencias de 2.

Exemplos:

Obs. Os computadores digitais operam basicamente com dois tipos de sinais de tensão: Alto e baixo. Matematicamente, pode-se expressar esses valores por 0

(baixo) e 1 (alto).

Aula 1 – Conversão de números

Decimal para binário:

Devemos aplicar um método para a parte inteira (divisões sucessivas) e um método

para a parte fracionaria, se houver (multiplicações sucessivas). Exemplos:

4

Para números fracionários, usar a regra da multiplicação. Exemplos:

Concluímos então que os números (0,1)10 e (0,11)10 NÃO têm representação binária finita !!! → independente do computador, ele nunca vai saber o que

significa esses números exatamente pois a conversão para binário sempre acarretará numa aproximação (truncamento ou arredondamento)

Obs. O fato de um número não ter representação finita no sistema binário pode acarretar a ocorrência de erros aparentemente inexplicáveis nos cálculos dos

dispositivos eletrônicos.

5

Um número inteiro sempre pode ser representado exatamente por um inteiro

binário, mas isso não é verdade para os números fracionários.

Binário para decimal:

Exemplos:

Exercícios:

1) converta os números decimais em sua forma binária:

a) 2 b)10 c) 7550 d)13,25 e) 0,4217

2) Converta os números binários em sua forma decimal:

a) (10100)2 b) (1101)2 c)(0,1101)2 d) (11101,01)2

6

Aula 1 - 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:

Sendo:

Exemplo:

Nas maquinas digitais, um digito binário é denominado BIT (do inglês, binary digit). Um grupo de oito bits corresponde a 1 byte. Dessa forma, percebemos que a

representação dos números binários em um computador é feita com um número finito de bits. A esse tamanho finito de bits é dado o nome palavra de computador.

O tamanho da palavra do computador depende de características internas à

arquitetura do mesmo (Ex: 32 e 64 bits).

Quanto maior o tamanho da palavra do computador mais veloz e mais preciso será o computador.

Uma aritmética de ponto flutuante F é caracterizada por quatro números inteiros (F é

um subconjunto dos números reais):

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 = ¾

7

Com isso, os únicos números positivos representáveis nesse computador são:

Mantissa Expoentes

1/2 × 2e 3/4 × 2e 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 (reta

real, base 10):

Além desses números os seus respectivos números negativos e o número zero

também serão representados.

O número total de elementos de uma aritmética de ponto flutuante é dado

por:

Para o exemplo acima, o número de elementos é igual a 2(2-1)22-1(2-(-1)+1) + 1 =

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 consequência desastrosa!

Exemplo: Se a máquina opera no sistema: β=10; t=3; e ∈ [-5,5]

Os números são representados como:

0,d1d2d3 x 10e, 0 ≤ dj ≤ 9, d1 ≠ 0, e ∈ [-5,5]

O menor número representado nesta máquina em valor absoluto:

m=0,100 x 10-5 = 10-6

O maior número representado nesta máquina em valor absoluto: M=0,999 x 105 = 99900

8

Aula 1 - Erros em máquinas digitais

Erros na representação dos números.

O conjunto 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) A faixa dos expoentes é limitada (emin ≤ e ≤ emax );

(b) A mantissa representa um número finito de números.

(a) A faixa dos expoentes é limitada (emin ≤ e ≤ emax )

Fenômeno de “overflow”: sempre que uma operação aritmética produz um número com expoente superior ao expoente máximo. Fenômeno de “underflow”: ocorre

sempre que uma operação resulta em um expoente inferior ao expoente mínimo.

Representação do conjunto na reta real (para o caso do exemplo dado):

Exemplo 1: Considere uma aritmética de ponto flutuante F(10,2,-5,5)

Sejam x = 875 e y = 3172 . Calcular x * y.

Primeiro, deve-se arredondar os números e armazená-los no formato indicado. A operação de multiplicação é efetuada usando 2t dígitos.

x = 0,88x 103 e y =0,32 x 104, x*y = 0,2816 x 107 Como o expoente é maior que 5, resulta em OVERFLOW.

Sejam x =0,0064 e y=7312 Calcular x ÷ y. Primeiro, deve-se arredondar os números e armazená-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 resulta em um valor menor que o computador pode armazenar, ou seja,resulta em UNDERFLOW.

(b) A mantissa representa um número finito de números

Exemplo 1. Seja uma máquina que opere com apenas 6 dígitos na mantissa, ou

seja, capaz de armazenar números no formato m = ± 0,d1d2d3d4d5d6 x 10e. Como armazenaríamos o número:

9

(0,11)10 = (0,000111000010100011110101110000101000111101............)2 nesta

maquina?

Como o número (0,11)10 não tem representação binária finita, teremos neste caso: (0,11)10 → (0,000111)2 → (0,109375)10

Para de armazenar

Exemplo 2. 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.

Exemplo 3. 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 ponto flutuante requer o alinhamento dos pontos decimais dos

dois números. x = 0,43 x 101 e y = 0,0064 x 101 → x+y = 0,4364 x 101

Resultado com 2 dígitos : x+y = 0,44 x 101

Sejam x =372 e y=371 Calcular x - y. x = 0,37 x 103 e y = 0,37 x 103 → x-y = 0,00 x 103

Resultado com 2 dígitos: x-y = 0,00 x 103

Sejam x =691 e y=2,71 Calcular x + y. x = 0,69 x 103 e y = 0,0027 x 103 → x+y = 0,6927 x 103

Resultado com 2 dígitos : x+y = 0,69 x 103

ERROS

A análise dos erros obtidos através de um método numérico representa uma etapa

fundamental no processo de soluções numéricas.

Exemplo: Calcule a área de uma circunferência de raio 100m.

Alguns resultados obtidos: a) A=31400m2

b) A=31416m2 c) A=31415,92654 m2

Como justificar as diferenças entre os resultados? É possível obter "exatamente" esta área?

Os erros ocorridos dependem da representação dos números na máquina utilizada. A

representação de um número depende da base escolhida ou disponível na máquina

em uso e do número máximo de dígitos usados na sua representação.

10

O número π, por exemplo, não pode ser representado através de um número finito de

dígitos decimais. Em (a), o número π foi escrito como 3,14, em (b), como 3,1416,

em (c) como 3,141592654. Em cada um foi obtido um resultado diferente, e o erro neste caso depende exclusivamente da aproximação escolhida para π. Qualquer que

seja a circunferência, a sua área nunca será obtida exatamente, uma vez que π é um

número irracional.

1- Número aproximado

Um número é dito uma aproximação para o número exato se existe uma pequena

diferença entre eles. Geralmente, nos cálculos os números exatos não são conhecidos

e deste modo são substituídos por suas aproximações.

Se > temos uma aproximação por excesso do valor exato .

Se < temos uma aproximação por falta do valor exato .

Exemplo:

Como 1,41 < < 1,42 tempo uma 1,41 é uma aproximação por falta e 1,42 é uma

aproximação por excesso.

2- Erro Absoluto EA

Diferença entre um valor exato e sua aproximação .

Cota para o erro:

Muitas vezes o valor exato não é conhecido, logo EAx também não será conhecido.

Solução: determinar uma cota para o erro ao invés de determinar o erro. Isso permitirá saber que, mesmo não conhecendo o erro, ele estará entre dois valores

conhecidos. Dizemos que um número є > 0 é uma cota para o erro se EAx < є:

Assim, mesmo não conhecendo o valor exato, podemos afirmar que ele está entre

e , que são valores conhecidos.

Uma cota є só tem algum valor prático se .

3- Erro Relativo ER

Exemplo: ; e ; Assim: EAx=0,1 e EAy=0,0002.

11

Será que a aproximação é melhor que a ? Devemos verificar que as

grandezas dos números envolvidos são muito diferentes!

O Erro Relativo é definido por:

Logo, conclui-se que a aproximação é melhor que a , pois ERx <

ERy.

4- Erros relacionados a aproximação de cálculos

Ocorrem quando utilizamos num processo algorítmico infinito apenas uma parte finita

do processo.

Exemplo:

Podemos usar como uma aproximação finita para o valor

exato Para isso truncamos uma série infinita utilizando apenas uma parte finita

dela. Neste exemplo utilizamos, para aproximação, apenas quatro termos da série:

que é uma aproximação muito pobre para . 5- Erros devido ao armazenamento.

Erros originados pela representação dos números reais utilizando-se apenas um

número finito de casas decimais para representar um número real (em linguagem de

programação número real é chamado de número de ponto flutuante).

Os equipamentos eletrônicos utilizam nos cálculos a chamada aritmética finita.

Existem dois tipos de erros por arredondamento:

12

a) Arredondamento truncado

Regra:

Desprezam-se os algarismos que ficam acima da (t+1)-ésima casa decimal, onde t representa o número de dígitos da mantissa.

b) Arredondamento simétrico (ou arredondamento apenas)

Regras:

Se o valor do algarismo que fica na (t+1)-ésima casa decimal for menor do que 5, arredondamos o número e desprezamos todos os algarismos após a t-ésima

casa decimal;

Se for maior ou igual a 5, somamos 1 ao algarismo na t-ésima casa decimal e desprezamos os algarismos restantes.

Exemplo:

13

EXERCÍCIOS RESOLVIDOS:

1- Uma máquina é capaz de armazenar quatro dígitos na mantissa usando

arredondamento. Considere x=17534 e y=21178. Calcule os erros absolutos e relativos das variáveis x e y.

Solução:

Repita o exercício usando truncamento.

2- Considere uma maquina cujo sistema de representação de números é

definido por: base decimal, 4 dígitos na mantissa (t=4), e expoentes no

intervalo (-5,5). Pede-se:

a) Qual o menor e o maior número, em módulo, representados nesta maquina?

Solução: m=0,1000×10-5 = 10-6

M=0,9999×105 = 99990

b) Como será representado o número 73,758 nesta maquina, se for usado o arredondamento? E se for usado o truncamento?

Solução:

Truncamento: 0,7375×102 Arredondamento: 0,7376×102

c) Se a=42450 e b=3 qual o resultado de a+b? Solução:

a+b= 0,4245×105 + 0,00003×105 = 0,42453×105 (NAS OPERAÇÕES ENVOLVENDO NÚMEROS PONTO FLUTUANTES ESTES DEVEM TER

A POTÊNCIA DO MAIOR DELES) Mas o resultado será armazenado com 4 dígitos na mantissa, portanto

a+b=0,4245×105.

d) Qual o resultado da soma

14

nesta máquina?

Solução:

e) d) Qual o resultado da soma

nesta máquina?

Solução:

Será que o resultado deve ser o mesmo? As operações devem ser realizadas na ordem em que aparecem as parcelas, o que conduzirá a resultados distintos.

...até terminar o número 3 que resultará no número 0.3000x102. Depois é feita a

soma com o número 42450 e no final teremos: 0.3000×102 → 0.0003×105

S2=0.0003×105 + 0.4245×105 = 0.4248×105

15

3- Represente os números: 0.35, 5391 e 0.0003 no sistema F (10; 3;−2; 2).

Solução:

b) Para o número 5391, temos:

5391 = (5x10-1 + 3x10-2 + 9X10-3) x 104 (overflow)

c) Para o número 0.0003, temos:

0.0003 = (3x10-1 + 0x10-2 + 0X10-3) x 10-3 (underflow)

Exercício proposto:

Seja um sistema de aritmética de ponto flutuante de quatro dígitos e base

decimal. Dados os números: x= 0,7237×104 , y = 0,2145×10-3 e z = 0,2585×10-1, efetue as operações x+y+z e (xy)/z.

16

Referências:

1- Livro. Cálculo numérico.

Márcia Ruggiero e Vera Lopes.

1- Apostila. Cálculo Numérico.

Faculdade de Engenharia, Arquitetura e urbanismo. Prof. Dr. Sérgio Pilling.

3- Apostila.

Cálculo Numérico. Eliete Biasotto Hauser.