24
Marcelo Gomes Pereira Roberto Hugo Bielshowsky Cálculo Numérico Aritmética de ponto flutuante e erros numéricos Autores aula 01 DISCIPLINA Calc_Num_A01_RF_ZBZ_020909.indd Capa1 Calc_Num_A01_RF_ZBZ_020909.indd Capa1 02/09/09 09:33 02/09/09 09:33

Calc_Num_A01_GR_ZBZ_020909

Embed Size (px)

Citation preview

Page 1: Calc_Num_A01_GR_ZBZ_020909

Marcelo Gomes Pereira

Roberto Hugo Bielshowsky

Cálculo Numérico

Aritmética de ponto fl utuante e erros numéricos

Autores

aula

01

D I S C I P L I N A

Calc_Num_A01_RF_ZBZ_020909.indd Capa1Calc_Num_A01_RF_ZBZ_020909.indd Capa1 02/09/09 09:3302/09/09 09:33

Page 2: Calc_Num_A01_GR_ZBZ_020909

Todos os direitos reservados. Nenhuma parte deste material pode ser utilizada ou reproduzidasem a autorização expressa da UFRN - Universidade Federal do Rio Grande do Norte.

Divisão de Serviços Técnicos

Catalogação da publicação na Fonte. UFRN/Biblioteca Central “Zila Mamede”

Coordenadora da Produção dos MateriaisVera Lucia do Amaral

Coordenador de EdiçãoAry Sergio Braga Olinisky

Projeto Gráfi coIvana Lima

Revisores de Estrutura e Linguagem

Eugenio Tavares Borges

Janio Gustavo Barbosa

Thalyta Mabel Nobre Barbosa

Revisora das Normas da ABNT

Verônica Pinheiro da Silva

Revisores de Língua Portuguesa

Janaina Tomaz Capistrano

Kaline Sampaio de Araújo

Samuel Anderson de Oliveira Lima

Revisoras Tipográfi cas

Adriana Rodrigues Gomes

Margareth Pereira Dias

Nouraide Queiroz

Arte e Ilustração

Adauto Harley

Carolina Costa

Heinkel Hugenin

Leonardo Feitoza

Diagramadores

Elizabeth da Silva Ferreira

Ivana Lima

Johann Jean Evangelista de Melo

José Antonio Bezerra Junior

Mariana Araújo de Brito

Adaptação para Módulo Matemático

Joacy Guilherme de A. F. Filho

Governo Federal

Presidente da RepúblicaLuiz Inácio Lula da Silva

Ministro da EducaçãoFernando Haddad

Secretário de Educação a Distância – SEEDCarlos Eduardo Bielschowsky

ReitorJosé Ivonildo do Rêgo

Vice-ReitoraÂngela Maria Paiva Cruz

Secretária de Educação a DistânciaVera Lucia do Amaral

Secretaria de Educação a Distância- SEDIS

Pereira, Marcelo Gomes.

Cálculo numérico: matemática / Marcelo Gomes Pereira, Roberto Hugo Bielschowsky. – Natal, RN: EDUFRN, 2009.

260 p.

ISBN: 978 - 85 - 7273 - 521 - 6

Conteúdo: Aula 01 – Aritmética de ponto fl utuante; Aula 02 – Introdução ao Scilab; Aula 03 – Sistemas de equações lineares; Aula 04 – SEVs do n, bases e ajustes de modelos com quadrados mínimos; Aula 05 – Autovalores e valores singulares; Aula 06 – Valores singulares e erros numéricos ao resolver Ax=b; Aula 07 – Algoritmos e programação com o Scilab (Parte 1); Aula 08 – Algoritmos e programação com o Scilab (Parte 2); Aula 09 – Zeros de funções; Aula 10 – Interpolação polinomial; Aula 11 – Integração numérica; Aula 12 – Introdução numérica às equações diferenciais ordinárias.

1. Cálculo numérico. 2. Aritmética de ponto fl utuante. 3. Álgebra linear computacional. I. Bielschowsky, Roberto Hugo. II. Título.

CDD 519.4RN/UF/BCZM 2009/33 CDU 519.6

Calc_Num_A01_RF_ZBZ_020909.indd Capa2Calc_Num_A01_RF_ZBZ_020909.indd Capa2 02/09/09 09:3302/09/09 09:33

Page 3: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 1

ApresentaçãoBem-vindo à disciplina Cálculo Numérico!

Está curioso para saber do que se trata?

O Cálculo Numérico diz respeito às resoluções aproximadas de problemas. Seu principal alvo está nas aplicações a modelos que retratem algum fenômeno concreto. Em particular, nesta disciplina, trabalharemos modelos ligados à dinâmica populacional com dados do IBGE e que permitem estimar populações em tempos futuros, calcular a trajetória de um cometa, conhecendo alguns pontos de sua órbita, estimar áreas de regiões num mapa, modelar problemas simples em engenharia, representar soluções numéricas de problemas modelados por equações diferenciais etc...

Esta é uma disciplina que tem muito mais a ver com Matemática aplicada do que com Matemática pura e tem como um de seus objetivos propiciar uma ideia inicial de temas e métodos em Matemática aplicada. Em particular, será muito útil na disciplina “Modelos Matemáticos”, que consta em seu currículo e na qual você trabalhará diferentes temas de realidade concreta que admitem uma modelagem matemática signifi cativa. Aqui, trataremos de questões ligadas ao Cálculo e à Álgebra Linear, usando o computador para encontrar aproximações. Esperamos que você não torça o nariz para a palavra “aproximações”.

É verdade que uma solução aproximada de um problema traz naturalmente um erro. Mas isso não signifi ca que seja inútil. Pelo contrário, muitos problemas matemáticos não têm solução exata ou ela simplesmente não nos interessa. Na verdade, não existe medida precisa de grandezas no mundo real. Todas as medidas de fenômenos reais contêm, necessariamente, imprecisões a partir de alguma casa decimal. O Cálculo Numérico vem se tornando uma ferramenta cada vez mais importante na modelagem matemática de problemas aplicados, na medida em que computadores fazem contas numéricas com grande velocidade, desde que se admitam pequenos erros de arredondamento em cada operação.

Muito em especial, a Álgebra Linear vem se tornando uma ferramenta cada vez mais indispensável nas aplicações, por ser uma espécie de elo de ligação através do qual modelos matemáticos dialogam com os computadores. O grosso do tempo computacional gasto num programa para resolver uma aplicação relevante, com alguma complexidade numérica, é usualmente gasto em rotinas de Álgebra Linear. Já o velho Cálculo, pelo menos tão velho quanto Newton e Leibnitz, continua tão fundamental como sempre, pois cá de nosso cantinho de onde conseguimos enxergar as coisas, olhando para as equações que regem fenômenos naturais, às vezes dá a impressão que derivada e integral teriam sido as principais ferramentas utilizadas na criação do Universo.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo1Calc_Num_A01_RF_ZBZ_020909.indd Miolo1 02/09/09 09:3302/09/09 09:33

Page 4: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico2

O velho cálculo continua sendo cada vez mais a ferramenta fundamental com a qual se escrevem não apenas as equações dos primórdios de nosso Universo e da Física como um todo, mas também de ecossistemas marinhos, de dinâmicas econômicas, do clima em nosso Planeta, de reatores químicos etc. Com uma diferença fundamental do que acontecia até cerca de sessenta anos atrás: agora, sabemos fazer contas rapidamente, entrando no computador com dados escritos na forma de vetores e matrizes de números. Daí a importância crescente do Cálculo Numérico.

Linhas gerais de como está organizada a disciplina

Organizaremos a disciplina como uma espécie de revisita à Álgebra Linear e ao Cálculo, conduzida pelo Scilab, que é um programa bom nesta coisa de fazer contas rapidamente, além de ser muito amigável e livre (grátis).

Nas aulas 2, 3, 4, 5 e 6, privilegiaremos uma revisita à Álgebra Linear, através dos comandos do Scilab, de forma a reconhecer muitos dos métodos que você estudou em Álgebra Linear I e II. AL1 e AL2, como a elas nos referiremos. O ponto central desta revisita à Álgebra Linear é que será realizada em aritmética de ponto fl utuante, como veremos nesta aula, por oposição à aritmética exata, ou seja, com números reais sem aproximações, como você viu em AL1 e AL2. Por um lado, isso faz com que as contas sejam realizadas com velocidade extraordinária num computador, o que é fundamental nas aplicações. Pelo outro, gera erros de arredondamento que podem se acumular a ponto de inviabilizar completamente as soluções obtidas nos computadores, conforme teremos a oportunidade de ver em vários momentos e, muito em especial, na Aula 6, na qual trataremos da sensibilidade de um sistema linear a dados.

De modo que, bem distinto de uma repetição de algo já visto, trata-se de revisitar a Álgebra Linear com um olhar bem diferente. Em especial, gostaríamos de combinar com você que, nesta disciplina, sobretudo nas aulas 2, 3, 4, 5 e 6, tenha sempre à mão as aulas de Álgebra Linear I e II e que revejam essas disciplinas sempre que recomendarmos. Além disso ser muito importante nesta disciplina e evitar repetições inúteis de conteúdo, esperamos convencê-lo de um princípio pedagógico que nos parece importante.

Ao revisitarmos conceitos, com mais experiência e sob uma nova ótica, os consolidamos de uma maneira surpreendente. Em particular, o que nos parecia tão difícil antes, de repente fi ca bem fácil de entender e bem mais interessante.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo2Calc_Num_A01_RF_ZBZ_020909.indd Miolo2 02/09/09 09:3302/09/09 09:33

Page 5: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 3

As aulas 7 e 8 (Algoritmos e programação com Scilab I e II) serão dedicadas a uma introdução a algoritmos e a sua programação em Scilab. Trata-se principalmente de dar um pontapé inicial num assunto fundamental para o cálculo numérico e no qual o Scilab é especialmente amigável. Nas demais aulas, trataremos de algoritmos relacionados a cálculo diferencial e integral, visando encontrar zeros de funções, realizar interpolação polinomial, calcular aproximações numéricas de integrais, resolver numericamente equações diferenciais, obter estimativas para os erros cometidos em alguns dos métodos estudados, aplicar as técnicas desenvolvidas a problemas interessantes etc.

Esta primeira aula, em linhas geraisEsta primeira aula fala da aritmética de ponto fl utuante e de erros numéricos decorrentes

de se arredondar resultados de contas. Esse é um tema fundamental, que nos acompanhará transversalmente em toda a disciplina. A aritmética de ponto fl utuante corresponde, grosso modo, a considerarmos apenas um certo número de algarismos para representar grandezas, como usualmente fazemos com medidas de tamanho.

Que sentido tem representar com vinte casas decimais resultados operados a partir de medidas feitas com precisão de quatro casas apenas?

A contrapartida é que em cada operação realizada ocorrerão erros de aproximação em alguma casa decimal. O acúmulo de erros numéricos, mesmo que bem pequenos cada um, em problemas envolvendo bilhões de operações aritméticas, pode deformar completamente a solução obtida, a depender do problema em questão e do algoritmo empregado para resolvê-lo. Esse é um dos temas centrais da análise numérica, e o tangenciaremos na Aula 5. Nesta aula, pretendemos alertar você sobre difi culdades numéricas que podem ocorrer ao se trabalhar com o computador.

ObjetivosCalcular erros absoluto e relativo.

Efetuar arredondamento e truncamento.

Representar números em diferentes bases.

Introduzir o sistema “aritmética de ponto fl utuante”.

1

2

3

4

Calc_Num_A01_RF_ZBZ_020909.indd Miolo3Calc_Num_A01_RF_ZBZ_020909.indd Miolo3 02/09/09 09:3302/09/09 09:33

Page 6: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico4

IntroduçãoImagine-se na situação de alguém que tem um terreno medindo 10m por 10m e precisa

dividi-lo ao meio por uma cerca na diagonal do terreno. Para comprar arame e fazer a cerca, você precisa saber qual o comprimento dela. Como descobrir isso?

10

10

x

Felizmente, você conhece o teorema de Pitágoras e sabe que as medidas em questão devem satisfazer a equação x 2 = 102 + 102 = 2 × 102. Então, a cerca na diagonal terá um comprimento de 10

√2m. Mas, não dá para pedir 10

√2m de cerca na loja de ferragens. O

que você faz é utilizar uma calculadora ou o computador para traduzir essa informação em um número mais compreensível. Pedimos que, neste momento, você pare a leitura, pegue uma calculadora (de celular ou científi ca) ou ligue o computador e acione o Scilab. Em seguida, calcule 10

√2m. De acordo com o número que encontrar, pense em quanto de cerca seria

razoável pedir.

Usamos uma calculadora de celular e o resultado encontrado foi:

10√

2 = 14, 1.

Já em uma calculadora científi ca, o resultado encontrado foi:

10√

2 = 14, 14213562 .

No computador, com o programa Scilab, encontramos:

10√

2 = 14, 142135623730951.

Na verdade, nenhum dos valores encontrados é exatamente 10√

2 . O fato é que esse é um número irracional, com infi nitas casas decimais que não se repetem de acordo com um padrão. Então, por mais poderosa que seja a ferramenta que utilizarmos para efetuar esse cálculo, tudo o que poderemos encontrar são aproximações de 10

√2 .

Felizmente, para o nosso problema da cerca, não é necessário ter o valor exato. Bastaria saber que 14,2 metros de cerca já é mais do que o necessário. Esse tipo de situação em que não se pode ter a solução exata do problema, mas fi camos satisfeitos com uma solução aproximada, é muito comum em nosso dia-a-dia.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo4Calc_Num_A01_RF_ZBZ_020909.indd Miolo4 02/09/09 09:3302/09/09 09:33

Page 7: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 5

ErrosQuando falamos de soluções aproximadas, falamos também em erros numéricos. No

exemplo da cerca, no início desta aula, foram calculados três valores diferentes para 10√

2. Cada um deles tem uma certa distância do valor exato. Essa distância é o que estamos chamando de erro. Ter controle sobre os erros é fundamental quando se trabalha com aproximações. Dois tipos são do nosso interesse: os erros absolutos e os relativos.

O erro absoluto é simplesmente a diferença entre o valor exato de um número x e seu valor aproximado x .

No caso de 10√

2 , é impossível obter o valor exato do erro absoluto. Num caso como esse o que se faz é obter uma estimativa para o módulo do erro absoluto. Por exemplo, como sabemos que 10

√2 está entre 14 e 14,2, podemos garantir que o erro cometido com a

aproximação obtida no celular é menor que 0, 2, que é a maior diferença possível para valores x que estão entre 14 e 14,2.

Já com os valores 14,14213562 e 14,142135623730951 podemos ter uma estimativa mais precisa do valor de 10

√2. Observe que as duas aproximações coincidem até o segundo

algarismo 2. Podemos então estreitar o intervalo que contém a solução exata. Concluímos que 10

√2 é um número entre 14,14213562 e 14,14213563. Assim, a nossa última aproximação

possui um erro absoluto menor que 0,00000001.

À primeira vista, esse último erro é muito pequeno. Imagine que alguém lhe dissesse que cometeu um erro de 0,00000001. A primeira reação é achar que esse número é insignifi cante, quase zero. Isso pode ser verdade em muitas situações. Mas, o fato é que nossa noção de pequeno depende daquilo que estamos observando. No caso de 10

√2 , o erro cometido é

satisfatório para muitos problemas práticos.

Porém, se pensarmos em uma situação em que a solução exata é 0,0000000000000002, então uma aproximação que tem um erro de 0,00000001 está muito longe do ideal. Por causa dessa necessidade de se comparar o erro com as grandezas medidas, emprega-se a defi nição de erro relativo, que é o erro absoluto dividido pelo valor aproximado. No exemplo anterior, se a solução exata é 0,0000000000000002 e cometemos um erro absoluto de 0,00000001, então podemos ter encontrado a aproximação 0,0000000099999998. Dessa forma, o erro relativo seria de

ER =EA

x=

0, 000000010, 0000000099999998

∼= 1, 0000000200000004000000080000002 . Ou seja,

mais de 100% de erro.

Já no exemplo de 10√

2 , temos:

|ER| =|EA||x| <

0, 0000000114, 142135623730951

∼= 0, 0000000007 = 7 × 10−10.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo5Calc_Num_A01_RF_ZBZ_020909.indd Miolo5 02/09/09 09:3302/09/09 09:33

Page 8: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico

Atividade 1su

a re

spos

ta

6

a) Encontre aproximações de π com o máximo de algarismos que conseguir.

b) Calcule os erros absoluto e relativo cometidos pela sua aproximação.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo6Calc_Num_A01_RF_ZBZ_020909.indd Miolo6 02/09/09 09:3302/09/09 09:33

Page 9: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 7

Arredondamento e truncamentoVamos fazer um pequeno exercício com uma planilha eletrônica (Excel, BrOffi ce). Na

barra de fórmulas, digite “=PI()”. Esse comando retorna a constante π = 3,141592... Na barra de ferramentas, procure pelo botão ,00

,0 “diminuir casas decimais” e aperte-o até que sua

tela fi que parecida com esta:

Agora, procure pelo botão ,0

,00 “aumentar casas decimais” e aperte-o duas vezes. O valor de π que aparece é 3,142. Se você apertar o botão ,0

,00 mais uma vez, aparecerá 3,1416. Outra vez, e aparecerá 3,14159.

Por que o valor de π, mostrado na planilha, muda tanto?

A resposta é que cada vez que apertamos um dos botões mostrados, estamos dizendo ao programa que queremos ver uma aproximação de π com um determinado número de casas decimais. Para escolher qual será o último algarismo mostrado, o programa faz um arredondamento, analisando o algarismo seguinte ao último a ser mostrado.

Suponha que queremos usar uma aproximação do número N = I, d1d2d3d4 com apenas três casas decimais. Aqui, I é a parte inteira de N e os di são os dígitos após a vírgula. Então, o programa faz o seguinte:

se d4 < 5, então N é apresentado como N = I, d1d2d3;

se d4 ≥ 5, então, no lugar de d3, usa-se d3 + 1.

Desse modo, quando você disse à planilha que queria uma aproximação de π com somente um algarismo após a vírgula, ela verifi cou que a segunda casa após a vírgula é ocupada pelo número 4, que é menor do que 5. Assim, não houve alteração na primeira casa decimal.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo7Calc_Num_A01_RF_ZBZ_020909.indd Miolo7 02/09/09 09:3302/09/09 09:33

Page 10: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico8

Já quando foi dito ao programa que ele deveria mostrar π com três casas decimais após a vírgula, verifi cou-se que o quarto algarismo após a vírgula é 5, que é maior do que ou igual a 5. Então, foi adicionado 1 ao terceiro algarismo, resultando em 3,142.

O número π é irracional. Portanto, não tem uma representação fi nita.

Vamos ver até onde vai a capacidade do programa?

Continue apertando o botão de aumentar as casas decimais. Em algum momento, você terá um resultado parecido com este:

Observe que após o último 9, somente zeros aparecem, como se π fosse racional. O que aconteceu aqui?

Acontece que computadores e calculadoras só trabalham com quantidades fi nitas de casas decimais. Existe um limite para o número de algarismos que podem ser armazenados pelas máquinas. Quando esse número é maior do que a capacidade da máquina, uma das seguintes saídas é utilizada: arredondamento ou truncamento.

Nesse último exemplo foi usado o truncamento, que é simplesmente ignorar o restante das casas decimais. O número π foi “cortado” na 14ª casa decimal.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo8Calc_Num_A01_RF_ZBZ_020909.indd Miolo8 02/09/09 09:3302/09/09 09:33

Page 11: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 9

Atividade 2

A utilização de arredondamento ou truncamento implica em erros. Para ilustrar esse fato, suponha uma calculadora que mostra somente 5 dígitos.

a) Como seria mostrado o resultado da multiplicação de 0,937 por 0,1272 ? (Leve em consideração os dois métodos de aproximação: arredondamento e truncamento).

b) Qual o erro cometido pela calculadora em cada caso?

sua

resp

osta

Calc_Num_A01_RF_ZBZ_020909.indd Miolo9Calc_Num_A01_RF_ZBZ_020909.indd Miolo9 02/09/09 09:3302/09/09 09:33

Page 12: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico10

Representação de números racionais em diferentes bases

Existem infi nitas maneiras de se representar um número. Estamos acostumados a representar 123 (cento e vinte e três) dessa forma porque nosso sistema de numeração utiliza a base 10. Isso signifi ca que o último algarismo deve ser multiplicado por 100, o penúltimo por 101, o antepenúltimo por 102 e os resultados devem ser somados. Ou seja,

123 = 1 × 102 + 2 × 101 + 3 × 100.

Mas, essa é apenas uma forma de fazê-lo.

Quem disse que temos que usar 10 como base? Poderíamos usar outra? Como fi caria cento e vinte e três na base 7?

Note que 123 = 2 × 72 + 3 × 71 + 4 × 70.

Então, se usássemos a base 7, escreveríamos cento e vinte e três como 234.

É comum distinguir as representações de um número usando a seguinte notação:

(djdj–1...d2 d1d0)β = dj β j + dj–1 β j–1 + ... + d2β 2 + d1β 1 + d0β 0.

Assim, temos (123)10 = (234)7.

Exercício resolvido 1Converta (10111)2 para a base 10 e (123)10 para a base 2.

Solução

É fácil converter para a base 10. Basta fazer a conta

1 × 24 + 0 × 23 + 1 × 22 + 1 × 21 + 1 × 20 = (23)10.

Já para fazer a conversão da base 10 para a base 2, dividimos 123 por 2 e observamos que 123 = 61 × 2 + 1.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo10Calc_Num_A01_RF_ZBZ_020909.indd Miolo10 02/09/09 09:3302/09/09 09:33

Page 13: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 11

Dividimos 61 também por 2. Assim, verifi camos que 123 = (30 × 2 + 1) × 2 + 1.

Agora repetimos o procedimento com 30. Daí, 123 = ((15 × 2 + 0) × 2 + 1) × 2 + 1.

Continuando, dessa forma, encontraremos a seguinte sequência de igualdades:

123 = (((7 × 2 + 1) × 2 + 0) × 2 + 1) × 2 + 1

= ((((3 × 2 + 1) × 2 + 1) × 2 + 0) × 2 + 1) × 2 + 1

= ((((1 × 2 + 1) × 2 + 1) × 2 + 1) × 2 + 0) × 2 + 1) × 2 + 1.

Então, distribuindo as multiplicações, podemos ver que:

123 = 1 × 20 + 1 × 21 + 0 × 22 + 1 × 23 + 1 × 24 + 1 × 25 + 1 × 26.

Ou ainda, reordenando os coefi cientes, (123)10 = (1111011)2.

Atividade 3

Converta (11111)2 para a base 10 e (11)10 para a base 2.

sua

resp

osta

Calc_Num_A01_RF_ZBZ_020909.indd Miolo11Calc_Num_A01_RF_ZBZ_020909.indd Miolo11 02/09/09 09:3302/09/09 09:33

Page 14: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico12

Vale lembrar que o mesmo raciocínio é válido para representações com casas decimais. A representação (2,35)10 signifi ca que o número em questão é obtido como 2 × 100 + 3 × 10–1 + 5 × 10–2. A vírgula indica o lugar da potência de expoente zero e que, a partir daquele lugar, as potências utilizadas terão expoentes negativos.

Da mesma forma, (10,01)2 = 1 × 21 + 0 × 20 + 0 × 2–1 + 1 × 2–2 = (2,25)10.

Aritmética de ponto fl utuante Um computador normalmente opera com a representação binária (base 2). Mas, além da

escolha da base, a representação de um número real é feita no sistema denominado aritmética de ponto fl utuante. Nesse sistema, um número é representado na forma:

–+ (0.d1d2...dk ) × β e,

onde β é a base utilizada e os dígitos kddd ...21 são chamados de mantissa do número.

Funciona da seguinte maneira: se a base de representação é 10 e queremos colocar o número 280,4 no sistema de aritmética de ponto fl utuante, escrevemos 0.2804 × 103. Ou seja, deslocamos a vírgula até obtermos 0,2804 e multiplicamos por uma potência de 10 cujo expoente é determinado pelo deslocamento da vírgula. Como os computadores e as calculadoras geralmente trabalham com ponto no lugar da vírgula, também fi zemos essa substituição.

O procedimento é o mesmo com qualquer base. Tome, por exemplo, o número (10,01)2. Fazemos o deslocamento e multiplicamos pela potência de 2. Então, a representação em aritmética de ponto fl utuante é 0.1001 × 22. Cuidado, se você for verifi car essa conta! Lembre-se que 0.1001 está na representação binária. Ele representa o número 1 × 2–1 + 0 × 2–2 +

0 × 2–3 + 1 × 2–4 = (0,5625)10.

Em qualquer que seja a máquina podemos contar somente com uma capacidade fi nita de representação de números. Por limitações físicas, as máquinas só operam com um determinado número de dígitos na mantissa. Também é fi nita a quantidade de expoentes disponíveis. Por exemplo, considere uma máquina que opere com base 10, com 5 dígitos na mantissa e expoentes entre –8 e 8. Os números serão representados na forma 0.d1d2d3d4d5 × 10e,

onde cada dígito di está entre 0 e 9, com d1 =/ 0 e e ∈ [– 8,8].

Qual o menor número positivo que pode ser representado nessa máquina?

Calc_Num_A01_RF_ZBZ_020909.indd Miolo12Calc_Num_A01_RF_ZBZ_020909.indd Miolo12 02/09/09 09:3302/09/09 09:33

Page 15: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 13

Como devemos ter d1 =/ 0, a menor possibilidade é m = 0.10000 × 10–8 = 10–9.

E o maior?

Aqui, escolhemos os maiores valores possíveis para os dígitos e para o expoente. Daí, temos M = 0.99999 × 108 = 99999000.

Seja G = { x ∈ ℜ | m ≤ x ≤ M }. Dado um número real x, uma das seguintes possibilidades ocorre:

1) x ∈ G

se for este o caso, há ainda duas possibilidades:

1.1) x tem uma quantidade de dígitos menor que ou igual a cinco na mantissa e, portanto, é representado exatamente nessa máquina;

1.1) x tem uma quantidade de dígitos na mantissa maior que 5. Então, não pode ser representado exatamente nessa máquina. Tome como exemplo o número 28,0476. Esse é um número que possui 6 dígitos na mantissa. Sua representação em ponto fl utuante é 0.280476 × 102. Para ser representado pela máquina, será feito um truncamento ou um arredondamento. Dessa forma, o número usado pela máquina será 0.28047 × 102 ou 0.28048 × 102.

2) |x | < m ou |x | > M

a máquina dará, teoricamente, uma mensagem de erro, pois o número não pode ser representado nela. Por exemplo, os números 10–10 ou 1010 não podem ser representados nessa máquina. Na prática, o “zero” em ponto fl utuante é, em muitos programas, geralmente representado com o menor expoente possível naquele programa e não como o zero dos números reais. Isso deriva dos problemas numéricos inerentes a operações com números abaixo deste “zero”, em valor absoluto, ou cujos resultados, em valor absoluto, estejam abaixo deste “zero”. Tais programas são mais precavidos e advertem da possibilidade de riscos numéricos, se determinadas operações resultam em números abaixo deste “zero” do programa. No caso do Scilab, com o qual trabalharemos, e onde o “zero” do programa seria da ordem de 10–324, ele considera todos os números que surjam entre 0 e 10–324 como “zero”, sem maiores precauções em denunciar que aconteceram problemas nas operações realizadas, caso tais números excepcionalmente pequenos surjam lá pelo meio das contas.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo13Calc_Num_A01_RF_ZBZ_020909.indd Miolo13 02/09/09 09:3302/09/09 09:33

Page 16: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico

Atividade 4

14

Complete a Tabela 1 dando as representações dos números em um sistema de aritmética de ponto fl utuante de três dígitos, base 10 e expoente entre –4 e 4.

Tabela 1 – Representações dos números em um sistema de aritmética de ponto fl utuante de três dígitos, base 10 e expoente entre –4 e 4

X Representação obtidapor arredondamento

Representação obtidapor truncamento

1,25

10,053

–238,15

2,71828...

0,000007

718235,82

Erros relativos em aritmética de ponto fl utuante: estabilidade na adição e possível amplifi cação na subtração

Observe, no Exemplo 1, como o erro relativo na subtração de dois números positivos, relativamente próximos entre si, pode fi car muito maior que os erros relativos no truncamento de cada um dos números, enquanto que o mesmo não acontece com sua adição.

Exemplo 1Considere x = 2617/45871 e y = 2618/45872.

1) Calcule √

x −√y e

√x +

√y usando uma máquina de calcular comum.

A nossa calculadora utiliza 11 dígitos signifi cativos e nos deu:

d =√

y −√x = 0, 00004302799;

s =√

y +√

x = 0, 47776691255.

2) Obtenha d =√

x −√y e s =

√x +

√y em aritmética de ponto fl utuante, sempre na

base 10. Porém, usando apenas 5 dígitos signifi cativos e truncando a partir da sexta casa.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo14Calc_Num_A01_RF_ZBZ_020909.indd Miolo14 02/09/09 09:3302/09/09 09:33

Page 17: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 15

Nesse caso, x = 0.05706 e y = 0,05708. Ao calcular √

x −√y e

√x +

√y , utilizando apenas

5 casas decimais em cada operação realizada, truncando a sexta casa, obtivemos:

d =√

y −√x = 0, 00004;

s =√

y +√

x = 0, 47776.

3) Avalie os erros relativos das duas contas feitas no item anterior.

Começamos avaliando os erros absolutos cometidos até 4 casas decimais signifi cativas e operando sempre por truncamento, como sendo:

ΔsAbs≈ 0,477766912 – 0,47776 = 0, 6912*10–6;

ΔdAbs≈ 0,000043027 – 0,00004 = 0,3027*10–6.

Os correspondentes erros relativos podem então ser estimados por:

ΔSrel ≈ ΔSAbs

/(√y +

√x)

= 6912∗10∧(−6)/0.47776 = 0.144∗10−5 .

Δdrel ≈ ΔdAbs

/(√y −√

x)

= 0, 3027∗10−6/0.00004 = 0.757∗10−2.

Observação – Note que, no Exemplo 1, obtivemos um erro relativo Δs rel ≈ 0.144*10–5, na soma s =

√y +

√x , feita com cinco dígitos, indicando um acerto em cinco casas decimais

nesta conta. Melhor que isso não poderíamos esperar, já que estamos truncando as contas na quinta casa decimal. Já na subtração d =

√y −√

x , obtivemos Δd rel ≈ 0.757*10–2, indicando um acerto de apenas duas casas decimais, o que é consideravelmente pior. Isso não foi por acaso e leva o nome de erro de cancelamento. Indicamos, a seguir, por que a subtração de dois números relativos pode amplifi car drasticamente os erros relativos em x e y, enquanto que a soma é mais estável, produzindo resultados da mesma ordem de grandeza que os erros absolutos em x e y. Digamos que x e y representam aproximações de dois números reais positivos x e y. Os erros absolutos dessas aproximações seriam, então, Δx = x − x e Δy = y − y . Considere ainda:

s = x + y e d = x – y (soma e subtração de x e y);

s = x + y e d = x − y (soma e subtração das correspondentes aproximações).

Os correspondentes erros relativos Δdrel e Δsrel satisfarão, então:

|ΔSrel | = |(S − s)/s| =|Δx + Δy|

x + y≤ |Δx|

x + y+

|Δy|x + y

≤ |Δx|x

+|Δy|

y= |Δxrel |+ |Δyrel |

Δdrel = (d − d)/d =Δx − Δy

x − y=

Δx

x − y− Δy

x − y

Calc_Num_A01_RF_ZBZ_020909.indd Miolo15Calc_Num_A01_RF_ZBZ_020909.indd Miolo15 02/09/09 09:3302/09/09 09:33

Page 18: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico

Resumo

16

Veja que, para a soma, nossa conta acima diz que o seu erro relativo seria, em módulo, limitado pela soma dos módulos dos erros relativos em x e y. Já para a diferença, se os

números x e y estiverem próximos, os denominadores de Δx

x − ye

Δy

x − y indicam que

Δdrel pode ser consideravelmente maior que os erros relativos Δxrel =

Δx

xe Δyrel =

Δy

y,

como aconteceu no Exemplo 1.

No Exemplo 1 e na Observação 1 já temos um indício do preço a pagar por usarmos aritmética de ponto fl utuante no lugar de aritmética exata. Na verdade, a mais severa das limitações ao se trabalhar com a aritmética de ponto fl utuante reside na possibilidade do acúmulo de erros numéricos resultar em erros signifi cativos no resultado devolvido, ao cabo de muitas operações aritméticas realizadas sequencialmente, mesmo que cada um dos erros seja relativamente pequeno. Inclusive, podendo distorcer completamente a solução procurada de algum problema, conforme teremos a oportunidade de verifi car em algumas das aulas seguintes, a depender de cada problema e dos algoritmos empregados. Na aula 5, discutiremos um pouco mais a questão da amplifi cação de erros numéricos em aritmética de ponto fl utuante.

Autoavaliação1) Responda às questões a seguir:

a) Qual a diferença entre erro absoluto e erro relativo?

b) O que é arredondamento? E truncamento?

c) Como encontrar a representação de um número em uma base diferente da base 10?

d) Como se representa um número no sistema aritmética de ponto fl utuante?

Nesta aula, você aprendeu a calcular erros de aproximações. Viu que se pode obter aproximações por arredondamento e truncamento. Aprendeu a converter representações de números e viu que as máquinas operam com aritmética de ponto fl utuante.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo16Calc_Num_A01_RF_ZBZ_020909.indd Miolo16 02/09/09 09:3302/09/09 09:33

Page 19: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 17

Exercícios propostos1) Converta os seguintes números decimais para sua forma binária:

a) 25;

b) 2345;

c) 0,5.

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

a) (10111)2;

b) (0,1101)2;

c) (11,11)2.

3) Considere um sistema de aritmética de ponto fl utuante de quatro dígitos e base decimal. Dados os números x = 0.937 × 104 e y = 0,1272 × 102, efetue as seguintes operações e obtenha o erro relativo no resultado, supondo que x e y estão exatamente representados:

a) x + y;

b) xy.

4) Considere uma máquina cujo sistema de representação de números é defi nido por: β = 10, quatro dígitos na mantissa e e ∈ [–5, 5]. Pede-se:

a) Qual o menor e o maior números em módulo representados nesta máquina?

b) Como será representado o número 73.758 nesta máquina, se for usado arredondamento? E se for usado truncamento?

c) Se a = 42.450 e b = 3, qual o resultado de a + b?

d) Qual o resultado da soma S = 42450 +10∑

k=1

3 nesta máquina?

Referências FRANCO, Neide Bertoldi. Cálculo numérico. São Paulo: Pearson Prentice Hall, 2006.

PIRES, Paulo Sérgio da Motta. Introdução ao Scilab: versão 3.0. Natal: Departamento de Engenharia de Computação e Automação; Universidade Federal do Rio Grande do Norte, 2004. Disponível em: <www.dca.ufrn.br/~pmotta/sciport-3.0.pdf>. Acesso em: 30 jan. 2009.

RUGGIERO, Márcia A. Gomes; LOPES, Vera Lúcia da Rocha. Cálculo numérico: aspectos teóricos e computacionais. São Paulo: Makron Books, 1996.

Calc_Num_A01_RF_ZBZ_020909.indd Miolo17Calc_Num_A01_RF_ZBZ_020909.indd Miolo17 02/09/09 09:3302/09/09 09:33

Page 20: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico18

Respostas dos exercícios propostos

1) a) (11001)2; b) (100100101001)2; c) (0,1)2

2) a) (23)10 ; b) (0,8125)10 ; c) (3,75)10

3) x + y é 0.9383 × 104 no arredondamento e 0.9382 × 104 no truncamento.xy é 0.1192 × 106 no arredondamento e 0.1191 × 106 no truncamento.

4) a) m = 0.1000 × 10–5 e M = 0.9999 × 105;

b) No arredondamento: 0.7376 × 102. No truncamento: 0.7375 × 102;

c) a + b = 0.4245 × 105;

d) S = 0.4245 × 105.

Anotações

Calc_Num_A01_RF_ZBZ_020909.indd Miolo18Calc_Num_A01_RF_ZBZ_020909.indd Miolo18 02/09/09 09:3302/09/09 09:33

Page 21: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico 19

Anotações

Calc_Num_A01_RF_ZBZ_020909.indd Miolo19Calc_Num_A01_RF_ZBZ_020909.indd Miolo19 02/09/09 09:3302/09/09 09:33

Page 22: Calc_Num_A01_GR_ZBZ_020909

Aula 01 Cálculo Numérico20

Anotações

Calc_Num_A01_RF_ZBZ_020909.indd Miolo20Calc_Num_A01_RF_ZBZ_020909.indd Miolo20 02/09/09 09:3302/09/09 09:33

Page 23: Calc_Num_A01_GR_ZBZ_020909

2º S

emes

tre d

e 20

09Im

pres

so p

or: G

ráfi c

a

EMENTA

> Marcelo Gomes Pereira

> Roberto Hugo Bielschowsky

Erros. Interpolações. Mínimos quadrados. Zeros de funções Integração numérica. Resolução numérica de sistemas de equações lineares. Tratamento numérico das equações diferenciais ordinárias.

Cálculo Numérico – MATEMÁTICA

AUTORES

AULAS

01 Aritmética de ponto fl utuante e erros numéricos

02 Introdução ao Scilab

03 Sistemas de equações lineares

04 SEVs do n, bases e ajustes de modelos com quadrados mínimos

05 Autovalores e valores singulares

06 Valores singulares e erros numéricos ao resolver Ax=b

07 Algoritmos e programação com o Scilab – Parte I

08 Algoritmos e programação com o Scilab – Parte II

09 Zeros de funções

10 Interpolação polinomial

11 Integração numérica

12 Introdução numérica às equações diferenciais ordinárias

Calc_Num_A01_RF_ZBZ_020909.indd Contracp1Calc_Num_A01_RF_ZBZ_020909.indd Contracp1 02/09/09 09:3302/09/09 09:33

Page 24: Calc_Num_A01_GR_ZBZ_020909

Calc_Num_A01_RF_ZBZ_020909.indd Contracp2Calc_Num_A01_RF_ZBZ_020909.indd Contracp2 02/09/09 09:3302/09/09 09:33