Vous êtes sur la page 1sur 30

Captulo 1

Introduo aos Mtodos Computacionais para


EDO e EDP - 01/2017
Notas de aula

Prof. Yuri Dumaresq Sobral

Departamento de Matemtica
Universidade de Braslia

2017

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

O que Clculo Numrico?

O curso de Clculo Numrico uma introduo ao estudo da


Anlise Numrica, que a rea da Matemtica que se
interessa em desenvolver e caracterizar algoritmos eficientes
para computar precisamente quantidades matemticas (contas
aritmticas, funes, integrais, etc...)

Temos trs palavras cruciais devem ser bem definidas para


entendermos o escopo da Anlise Numrica!

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Algoritmo
Um algoritmo um procedimento que descreve, de maneira clara,
sem ambiguidade, uma sequncia finita de
instrues/passos/comandos que devem ser executados em uma
ordem especfica.

Existem vrias maneiras de representar um algoritmo:


Diagrama de bales: forma de representao grfica

https://thumbs.dreamstime.com/z/algorithm-27863175.jpg

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Algoritmo

Pseudocdigo: representao a partir de uma linguagem


computacional simplificada
Exemplo:

Faa para i variando de 1 a 100


Se i for par, escreva Par
Seno, escreva mpar
Termine

Vamos usar principalmente esta opo para representar os


algoritmos que vamos ver no curso de Clculo Numrico.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Eficincia

A eficincia uma medida de quo rapidamente um algoritmo


produz um determinado resultado. A eficincia de algoritmos, em
geral, medida em termos da quantidade de operaes aritmticas
que o cdigo executa.

A unidade de medida de esforo computacional o flop, que o


esforo computacional envolvido em uma operao do tipo:

soma = soma + x (i) x (i),


isto : uma operao de soma, uma operao de produto e uma
gesto de ndices.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Eficincia

Exemplo:
Faa para i variando de 1 a N
soma = soma + x (i) x (i)
Termine

Este algoritmo requer (exatamente) N flops para ser executado.

Observao: Raramente nos interessamos pela quantidade exata de


flops de un algoritmo, e sim por sua ordem de grandeza. s vezes,
impossvel determinar exatamente quantos flops um determinado
algoritmo necessita para ser executado.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Eficincia

 
Definio: Dizemos que f (x ) = O g(x ) quando, para x ,
temos que
f (x )
lim = M > 0,
x g(x )

isto , |f (x )| < M |g(x )| quando x .

Exemplo: f (x ) = 6x 4 2x 3 + 5 O(x 4 )

Exemplo: O mtodo para multiplicar matrizes N N O(N 3 )

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Eficincia

Observao: Note que falar de ordem de um algoritmo no


necessariamente falar da velocidade com que um programa
baseado neste algoritmo vai completar sua tarefa.

Algoritmos bons em programas ruins levam a desenpenhos


modestos!

Saber codificar bem um bom algoritmo essencial se o objetivo


alcanar resultados mais rapidamente.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Preciso

Quando falamos de preciso nos referimos ao desejo de se avaliar


uma quantidade matemtica pelo computador corretamente, isto
, queremos que ela seja o mais correta possvel.

Temos dois aspectos sobre a preciso que precisam ser discutidos


quando falamos em calcular uma quantidade matemtica no
computador: convergncia e erros sistemticos.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Preciso

1. Convergncia: Quando aplicamos um determinado algoritmo


para resolver um problema matemtico, precisamos ter certeza de
que ele nos levar sua soluo correta, isto , que o algoritmo
convergir para a soluo do problema.

Mas, em geral, esta soluo desconhecida!

O ponto central da Anlise Numrica a convergncia dos


algoritmos: como demonstrar, a priori, que um algoritmo vai nos
levar onde queremos chegar? Veremos alguns exemplos ao longo
do curso!

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Preciso

2. Erros sistemticos
Existem 4 tipos de erros sistemticos em clculo numrico:
modelo matemtico inadequado para o problema estudado;
erros nos parmetros que alimentam o modelo matemtico;
aproximaes usadas para resolver o problema matemtico;
erros de aproximao de aritmtica computacional.

Os dois primeiros itens dizem respeito a problemas anteriores ao


clculo numrico e, portanto, no esto ao nosso alcance.

s vezes, quando nos deparamos com um resultado obtido via


computador que est claramente errado, precisamos ter certeza de
que estamos resolvendo o problema correto antes de culparmos o
mtodo.
Y.D. Sobral Int. Met. Comp. EDO e EDP
Captulo 1 Introduo - Conceitos Bsicos

Preciso

O terceiro item , de fato, um dos focos da anlise numrica:

Se no conseguimos resolver o problema cheio, que


simplificaes podemos fazer para encontrar uma resposta?

Se der certo encontrarmos uma resposta, quo prxima da


soluo verdadeira do problema ela est?

Normalmente, esta abordagem comum em problemas mais


complicados, muitas vezes no-lineares. No sero o nosso foco,
mas talvez veremos alguns problemas deste tipo ao longo do nosso
curso.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Preciso

O quarto ponto , de fato, um problema de engenharia de


computao! E, portanto, est fora de nosso alcance.

Mas, para controlarmos os erros que podemos cometer ao usarmos


o computador, essencial que conheamos um pouco melhor como
um computador faz contas.

Um computador, a calculadora que vamos utilizar neste curso,


opera de uma maneira significativamente diferente de uma
calculadora padro e, por isto, vamos estudar um pouco de
aritmtica computacional.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

Quando trabalhamos com clculo numrico, nosso objeto de


trabalho mais essencial so os nmeros e precisamos saber como o
computador representa e manipula estes nmeros.

Existem dois sistemas principais de representao de nmeros em


mquinas:

i. Representao por ponto fixo, que d origem aritmtica de


ponto fixo.

Nesta representao, os nmeros so representados de forma


igualmente espaada, todos separados de seus vizinhos por uma
quantidade fixa.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

Este sistema tende a gerar sistemas computacionais mais rpidos e


eficientes em processamento de operaoes.

Exemplo: so usados com frequncia em calculadoras portteis.

Porm... Um computador, por mais potente que seja, s pode


representar uma quantidade finita de nmeros (todos racionais)!
Ento...

O sistema de representao por ponto fixo NO uma boa idia


se quisermos representar muitos nmeros!

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

Precisamos de uma sistema melhor!

ii. Representao por ponto flutuante, que d origem aritmtica


de ponto flutuante.

Neste sistema, existe uma distribuio no-uniforme dos nmeros


ao longo da reta real.

Existem vrios padres para a representao de nmeros por ponto


flutuante. Vamos discutir um exemplo destes para termos uma
noo de como eles funcionam.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

Normalmente, os nmeros nos sistema de ponto flutuante so


representados como

(1 + 0.d1 d2 d3 . . . dt ) e

onde:

d1 6= 0 e 0 di < , com di ZZ

a base do sistema

t a preciso do sistema

e o expoente do sistema

Os nmeros d1 d2 d3 . . . dt so chamados de mantissa

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

Vamos dar uma olhada no sistema IEEE 754 de 32 bits, que um


dos padres mais frequentemente usados atualmente. Neste
padro, temos:

=2

Os nmeros so guardados em words, que consistem numa


sequncia de 32bits (nmeros 0 ou 1) da seguinte forma:

0 10000100 10100000000000000000000
(sinal) (expoente) (mantissa)

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

0 10000100 10100000000000000000000
(sinal) (expoente) (mantissa)

(sinal): 1 bit para + (0) ou (1);

(expoente): 8 bits para determinar o expoente via nmeros


binrios (base 2). Neste campo, o menor valor permitido
00000001 (= 110 ) e o maior 11111110 (= 25510 ). O expoente
calculado como sendo este nmero menos 127 para permitir
representar nmeros pequenos e grandes;

(mantissa): 23 bits para determinar a mantissa via


nmeros binrios fracionais (base 21 ).

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

0 10000100 10100000000000000000000
(sinal) (expoente) (mantissa)
Vamos calcular este nmero:

(sinal) = 0: + (nmero positivo)

(expoente) = 10000100:

n
100001002 = 0 20 + 0 21 + 1 22 + 0 23 + 0 24 + 0 25 +
o
+0 26 + 1 27
10
= {22 + 27 }10 = {4 + 128}10 = 13210

Portanto: e = 132 127 = 5


Y.D. Sobral Int. Met. Comp. EDO e EDP
Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

0 10000100 10100000000000000000000
(sinal) (expoente) (mantissa)
(mantissa) = 10100000000000000000000:

n
10100000000000000000000 1 = 1 21 + 0 22 + 1 23 +
2
o
+0 24 + + 0 223
10
1 1
 
= + = 0, 625
2 8 10

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

0 10000100 10100000000000000000000
(sinal) (expoente) (mantissa)
Portanto:

{01000010010100000000000000000000}IEEE 754 =

= {+ (1 + 0, 625) 25 }10 = 5210 (ufa!)

Mas o que realmente importante de toda esta conta?

Que agora sabemos qual o prximo nmero possvel que pode ser
representado por este computador!

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Introduo aritmtica computacional

O nmero seguinte a
{01000010010100000000000000000000}IEEE 754 :

{01000010010100000000000000000001}IEEE 754 =

52,000003814697265625

Portanto, se buscarmos uma soluo para um problema que esteja


ENTRE estes dois nmeros, temos um PROBLEMA: o computador
no ser capaz de representar este nmero! Este nmero no
existe no computador!

O sistema fsico do computador (hardware) encontrar uma


maneira de aproximar (erro!) este nmero buscado para um
possvel.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Erros da aritmtica computacional

Existem duas maneiras padro de aproximar nmeros:

Truncamento: Retiram-se as casas decimais que diferem do


nmero possvel imediatamente menor.

Arredondamento: Leva-se o nmero ao nmero possvel mais


prximo, seja ele maior ou menor.

Estas operaes (que no podemos controlar!) levam a erros que


so inerentes ao sistema de representao numrica de um
computador. Temos que levar isto em considerao na hora de
pensar sobre a soluo de um problema numrico!

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Erros da aritmtica computacional

Podemos quantificar estes erros de duas maneiras. Seja x o valor


exato que queiramos computar numericamente e seja x sua
aproximao computada.

Erro absoluto: Ea = |x x |

|x x |
Erro relativo: Er = , se x 6= 0. No definido para x = 0.
|x |

Se Er < 5 10t , dizemos que x aproxima x com t 1 algarismos


significativos.

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Erros da aritmtica computacional

Alm dos erros de representao de nmeros, temos tambm um


problema de gerao de erros quando operamos nmeros com
preciso finita, isto , com um nmero finito de dgitos.

Normalmente, o sistema de 32 bits discutido anteriormente


trabalha com 7 algarismos significativos.

Detalhes deste tipo de erros fogem ao nosso escopo, mas vamos


mostrar onde este tipo de problemas podem aparecer.

Exemplo 1 Considere que tenhamos um sistema com 5algarismos


significativos e que queiramos calcular o valor de + 2. Ento:

[] = 0.31416 101 e [ 2] = 0.14142 101

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Erros da aritmtica computacional


Assim, teremos:

h i
+ 2 = [] + [ 2] = [0.31416101 +0.14142101 ] = 0.45558101

Os erros envolvidos nestas operaes so:

Ea = |0.45558 101 4.5558062159 . . . | = 0.00000621596 . . .

|0.45558 101 4.5558062159 . . . |


Er = = 0.00000136 . . . = 1.36106
|4.5558062159 . . . |

Concluso: estas operaes preservaram os 5 algarismos


significativos!
Y.D. Sobral Int. Met. Comp. EDO e EDP
Captulo 1 Introduo - Conceitos Bsicos

Erros da aritmtica computacional


Porm, isto nem sempre acontece.

Exemplo 2 Considere que tenhamos um sistema com 4 algarismos


significativos, que funcione com arredondamento, e que queiramos
calcular o valor de x y para x = 0.54617 e y = 0.54601. Ento:

x y = [[x ] [y ] ] = [0.5462 100 + 0.5460 100 ] = 0.0002 100

O erro relativo envolvido nesta operao :

|0.0002 100 0.00016|


Er = = 0.25 = 2.5 101
|0.00016|

Concluso: perdemos TODOS os algarismos significativos nestas


operaes. Note que o erro relativo de 25%, muito alto!
Y.D. Sobral Int. Met. Comp. EDO e EDP
Captulo 1 Introduo - Conceitos Bsicos

Erros da aritmtica computacional

Problema: Se este valor for um passo intermedirio de uma grande


conta, estaremos propagando um erro de 25% nos passos
seguintes, que ir contaminaro resultado final!

Esta perda significativa de preciso que o computador sofre devido


a operaes de ponto flutuante com preciso finita chamada de
CANCELAMENTO CATASTRFICO.

A evitar: operaes com resultados que do prximos de zero,


operaes com nmero de ordem de grandeza muito diferentes,
nmeros foram dos limites extremos do sistema de representao,
etc.

Para o sistema de 32 bits, o menor nmero prximo de 1038 ,


(underflow), e o maior de 1036 , (overflow).

Y.D. Sobral Int. Met. Comp. EDO e EDP


Captulo 1 Introduo - Conceitos Bsicos

Erros da aritmtica computacional

Exemplo final: Suponha que queiramos resolver numericamente o


PVI abaixo.

dy 1
= 2y et , y (0) =
dt 3
1
A soluo exata dada por y (t) = et , isto , y (t) 0 quando
3
t . Porm... A condio inicial ter inevitavelmente um erro
1
de representao , tal que [y ] (0) = + . Ento, a soluo
3
encontrada pelo computador ser:
1
[y ] (t) = et + e2t
3
Note que [y ] (t) quando t , dependendo do sinal de
. Comportamento totalmente errado.

Y.D. Sobral Int. Met. Comp. EDO e EDP