Introdução a métodos computacionais II

Propaganda
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
Matemática Computacional

Estudo da matemática do ponto de vista
computacional
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
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
Matemática Simbólica

Busca a solução analítica de problemas
matemáticos

Por exemplo, a solução analítica da integral:
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.
Matemática Intervalar

Trata dados na forma de intervalos numéricos,
buscando controlar os limites de erro dos
processos da matemática numérica.
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
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 → R 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
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.
O que é um Algoritmo ?
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.
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.
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
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
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
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”.
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.
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
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.
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 R e a solução de máquina.

Considere o problema de determinar
sen(a) = x , dado a  R.
Precisão Infinita

Algoritmo: calcula sen(a) = x
Entrada {a}
x=0±1
Saí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.
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.
Eficiência

Um exemplo compreende o algoritmo de Cramer para a solução
de sistemas de equações lineares: Ax = b, com A  Rn×n.

Passos do algoritmo
1) calcule o determinante Δ da matriz dos coeficientes;
2) calcule os n determinantes Δxj resultantes da substituição da
coluna 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.

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.
Influência da Computação Numérica
Exemplo 1: Falha no lançamento de mísseis
(25/02/1991 – Guerra do Golfo – míssil Patriot)
Limitação na representação
numérica (24 bits)
Erro de 0,34 s no cálculo do
tempo de lançamento
Influência da Computação Numérica
Exemplo 2: Explosão de foguetes
(04/06/1996 – Guiana Francesa – foguete Ariane 5)
Limitação na representação
numérica (64 bits/ 16 bits)
Erro de trajetória 36,7 s
após o lançamento
Prejuízo: U$ 7,5 bilhões
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
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.
Download