30
Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Embed Size (px)

Citation preview

Page 1: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Métodos Computacionais II

Introdução a Métodos Computacionais

Antonio Mendes da Silva Filho

2007.2

Page 2: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Natureza e Objetivos da Matemática Numérica

Máquinas de contagem da IBM no início do Século XX Advento das máquinas computacionais nos anos 40

Aplicações em cálculos balísticos Logística de transporte

Importância dos métodos computacionais Propriedades da matemática real são perdidas em máquinas

computacionais Representação aproximada de números perda de precisão Erros, propagação e amplificação de erros

Page 3: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Matemática Computacional

Estudo da matemática do ponto de vista computacional

Page 4: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Divisões da Matemática Computacional A matemática computacional é a área da

matemática que se preocupa com o desenvolvimento, emprego e estudo de métodos numéricos, podendo ser subdivida em:

1. Matemática Numérica

2. Matemática Simbólica

3. Matemática Gráfica

4. Matemática Intervalar

* maior ênfase prática

Page 5: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Matemática Numérica

Parte da matemática computacional que se preocupa com o desenvolvimento de algoritmos para resolução aproximada de problemas representada por um modelo matemático.

Utiliza como sistema de operações o conjunto {+,., /, .} de operadores matemáticos

Page 6: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Matemática Simbólica

Busca a solução analítica de problemas matemáticos Por exemplo, a solução analítica da integral:

Page 7: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Matemática Gráfica

Trabalha com de forma gráfica (i.e. modelos gráficos) buscando representar a solução dos problemas também na forma gráfica.

Page 8: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Matemática Intervalar

Trata dados na forma de intervalos numéricos, buscando controlar os limites de erro dos processos da matemática numérica.

Page 9: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Foco de Atuação

Nosso foco recai sobre a matemática numérica

Estudamos processos numéricos para a

resolução de problemas (algoritmos) visando a

máxima economia e confiabilidade em termos de

fatores envolvidos, tais como:

1. tempo de execução

2. memória utilizada

3. erros de arredondamento

Page 10: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

O que é Problema Computacional Consiste em computar o valor de uma função para uma

entrada que satisfaça as especificações. Ou seja, dada uma função f : A → B e uma entrada x que

pertence a A, computar y = f (x). Definir um problema computacional é especificar a

relação entre entrada e saída. Exemplo: x codifica um grafo direcionado G = (V , E), uma

função w : E → RR com os pesos dos arcos, e dois vértices s e t. f (x) é o caminho mais curto de s a t.

Necessidade de algoritmo para resolvê-lo

Page 11: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

O que é um Algoritmo ?

Informalmente, um algoritmo é um procedimento computacional bem-definido que toma como entrada um valor (ou conjunto de valores) e produz como saída um valor (ou conjunto de valores) com a solução de um problema computacional.

Um algoritmo é uma seqüência de passos computacionais que transforma entrada em saída.

Podemos ver um algoritmo como uma ferramenta para resolver um problema computacional bem definido.

Page 12: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

O que é um Algoritmo ?

Page 13: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Problema de Ordenação

Entrada Uma seqüência (a1, a2, . . . , an) de n números.

Saída Uma permutação (a1’, a2’, ..., an’) da seqüência de entrada tal que

a1’ ≤ a2’ ≤ ... ≤ an’

Dada uma seqüência de entrada (31, 41, 59, 26, 41, 58), um algoritmo de ordenação produz a saída (26, 31, 41, 41, 58, 59).

A entrada (31, 41, 59, 26, 41, 58) é dita instância do problema.

Em geral, uma instância consiste de todas as entradas satisfazendo quaisquer restrições impostas na especificação do problema, necessárias para computar a saída.

Page 14: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Problema de Ordenação (cont.)

Aplicações do problema de ordenação Operação de ordenação é fundamental em ciência da

computação. O melhor algoritmo para uma certa aplicação

depende: tamanho da entrada grau de ordenação da entrada

Corretude Um algoritmo é dito correto se, para toda a instância,

o algoritmo termina com a saída correta. Neste caso, dizemos que o algoritmo resolve o

problema.

Page 15: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Algoritmos Numéricos

Algoritmo numéricos são fundamentais ao

processamento numérico

Algoritmos numéricos são tão importantes ao

processamento numérico, quanto a solução numérica

de sistemas de equações lineares a não-lineares.

A seguir, características desejadas de algoritmos

numéricos são apresentadas

Page 16: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Características Desejáveis dos Algoritmos Numéricos

Inexistência de erro lógico

Inexistência de erro operacional

Quantidade finita de cálculos

Existência de um critério de exatidão

Independência de máquina

Precisão infinita

Eficiência

Page 17: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Inexistência de Erro Lógico

Um algoritmo não apresenta erro lógico se este sempre produz

o resultado correto. Considere o exemplo abaixo.

Problema: procura-se a solução x* de ax = b

Algoritmo ingênuo: x* = b/a

Algoritmo correto:Se a = 0, então se b = 0 imprima “identidade”Senão imprima “contradição”Caso contrário x* = b/a

Page 18: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Inexistência de Erro Operacional

O algoritmo pode falhar por violar restrições físicas da máquina.

Seja T o conjunto de números possíveis de serem

representados por uma máquina onde:

a) x T, - x T

b) t1 = inf{x : x T x > 0}

c) t2 = sup{x : x T x > 0}

Se temos valores y tais que |y| < t1 dizemos que ocorreu

“underflow”.

Se |y| > t2 dizemos que ocorreu “overflow”.

Page 19: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Quantidade Finita de Cálculos

Em algoritmos iterativos, é necessário que se

estabeleça um critério de parada e se prove

convergência.

Um algoritmo não pode executar indefinidamente e

quando ele pára se espera que este tenha produzido o

resultado esperado.

Page 20: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Existência de um Critério de Exatidão

É fundamental que o algoritmo possua um critério de

exatidão em função das limitações de precisão das

máquinas.

Deseja-se que o algoritmo forneça um resultado

aceitável da forma:

Resultado = Valor Aproximado + Erro

Page 21: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Independência de Máquina

É desejável que o algoritmo produza o mesmo resultado

quando executado em diferentes máquinas.

A constante de Euler e = 2.718281828 . . ., por exemplo,

terá representação distinta em diferentes máquinas.

Assim, não se deve utilizar o valor, mas sim a

representação e = exp(1) que corresponde ao valor

adotado pelo compilador.

Page 22: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Precisão Infinita

Com precisão infinita, os limites de erro devem convergir

para zero.

Esta exigência estabelece a dependência entre a

solução ideal em RR e a solução de máquina.

Considere o problema de determinar

sen(a) = x , dado a RR.

Page 23: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Precisão Infinita Algoritmo: calcula sen(a) = x

Entrada {a}x = 0 ± 1Saída {a, x}

Este algoritmo satisfaz as exigências: Não ter erro lógico Não tem erro operacional O algoritmo é finito Os dados não dependem da máquina Temos o resultado dentro dos limites de erro MAS, para satisfazer o critério de precisão infinita, deve haver

condição adequada de truncamento. Se satisfeita, haverá convergência numérica.

Page 24: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Eficiência

Quando se deseja encontrar a solução para um problema,

sempre visamos obter economia de rescursos envolvidos.

Um conjunto de fatores relevantes compreende:

1. tempo de execução

2. exatidão;

3. volume de dados

4. dificuldade de representação

5. eficácia.

Fazer contas com os dedos da mão, por exemplo, é eficaz

mas não é eficiente para cálculos aritméticos não triviais.

Page 25: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Eficiência Um exemplo compreende o algoritmo de Cramer para a solução

de sistemas de equações lineares: Ax = b, com A RRn×n.

Passos do algoritmo1) calcule o determinante Δ da matriz dos coeficientes;

2) calcule os n determinantes Δxj resultantes da substituição dacoluna j da matriz dos coeficientes pelo vetor b; e

3) a solução x = (x1, x2, . . . , xn) é dada por Δxj = Δxj/Δ , j = 1, . . . , n.

O algoritmo de Cramer acima executará (n + 1)!(n + 1) operações aritméticas

Já o algoritmo de Gauss termina após n3 operações.

Page 26: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Passos para Resolução de um Problema Criação do modelo matemático do problema

Necessidade de simplificação

Uso de valores já conhecidos

Parâmetros de equações similares

Escolha ou desenvolvimento do algoritmo

Definição de parâmetros do algoritmo

Como a maioria dos problemas não tem solução direta e

precisa, é comum fazer uso de métodos iterativos.

Page 27: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Exemplo 1: Falha no lançamento de mísseis(25/02/1991 – Guerra do Golfo – míssil Patriot)

Erro de 0,34 s no cálculo do tempo de lançamento

Limitação na representação numérica (24 bits)

Influência da Computação Numérica

Page 28: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Exemplo 2: Explosão de foguetes(04/06/1996 – Guiana Francesa – foguete Ariane 5)

Erro de trajetória 36,7 sapós o lançamento

Limitação na representação numérica (64 bits/ 16 bits)

Prejuízo: U$ 7,5 bilhões

Influência da Computação Numérica

Page 29: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Links

Desastres Causados por Erros de Computação Numérica

http://www.ima.umn.edu/~arnold/disasters/

Coletânea de Bugs de Software

http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html

Page 30: Métodos Computacionais II Introdução a Métodos Computacionais Antonio Mendes da Silva Filho 2007.2

Referências

Ruggiero, M. A. G., Lopes, V. L. R., Cálculo Numérico – Aspectos

Teóricos e Computacionais, Markron Books.

Cláudio, D. M. e Martins, J. M., Cálculo Numérico Computacional,

Ed. Atlas, 1987.

Barroso, L, Barroso, M.M.A., Campos Filho, F. F., Cálculo Numérico

com Aplicações, Ed. Harbra, 1987.