Métodos Computacionais II

Slides:



Advertisements
Apresentações semelhantes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Advertisements

Introdução a Algoritmos
Métodos Iterativos.
Fluxo em Redes Prof. Ricardo R. Santos.
INTRODUÇÃO A ALGORITMOS NUMÉRICOS
Analise de Algoritmos e Notação Assintótica
Zeros de Funções.
Amintas engenharia.
Amintas engenharia.
Amintas engenharia.
Soluções Numéricas de Sistemas Não Lineares
Sistemas lineares.
Introdução Cálculo Numérico Profs.: Bruno C N Queiroz
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Teste de Software Geórgenes Zapalaglio
SISTEMAS LINEARES Métodos Diretos: Método de Eliminação de Gauss
INTRODUÇÃO A ALGORITMOS NUMÉRICOS
ERROS EM ALG. NUMÉRICOS E SUAS CONSEQUÊNCIAS
Estruturas de Dados e Complexidade de Algoritmos
Complexidade de Algoritmos
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE MATEMÁTICA
Complexidade de Algoritmos
Introdução a Computação e Cálculo Numérico
Cálculo Numérico Aula 8 – Sistemas de Equações Lineares / Parte 1
DINÂMICA DOS FLUIDOS COMPUTACIONAL Cap
Fundamentos de Programação e Especificação de Protocolos
Prof. Guilherme Amorim 14/11/2013
Professora: Ana Cristina G. e Silva Natal-RN
SISTEMAS LINEARES.
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE MATEMÁTICA
I NTRODUÇÃO A A LGORITMOS N UMÉRICOS Prof. Renata S.S. Guizzardi 2012/01.
I NTRODUÇÃO A A LGORITMOS N UMÉRICOS Prof. Renata S.S. Guizzardi 2012/01.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Introdução a Programação
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Adpt. por Prof. Guilherme Amorim
Interpolação.
Sistema de equações lineares
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
PROGRAMAÇÃO MATEMÁTICA MÉTODO SIMPLEX
Resolução de sistemas de equações lineares
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Introdução a Cálculo Numérico
Campus de Caraguatatuba Aula 7: Noções Básicas sobre Erros (1)
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Fontes de Erros Aula 1 Introdução; Erros em processos numéricos;
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br.
Cálculo Numérico Módulo I
Sistemas Lineares Fatoração LU
Equações algébricas e transcendentais
Qualidade no Desenvolvimento de Software Wolley W. Silva Baseado nas notas de aula dos professores Tatuo e Daisy.
Campus de Caraguatatuba Aula 18: Sistemas de Equações Lineares (6)
Analise de Algoritmos e Notação Assintótica
Algoritmos e Programação MC102
Apresentação. Problemática  Solução aproximadas de problemas de matemática usando métodos numéricos: resolução numéricas de problemas sem solução teórica.
Integração numérica Aula 10 Fórmulas de Newton-Cotes: Trapézios;
Métodos Numéricos Computacionais
Métodos Numéricos Erros.
INTRODUÇÃO AOS MÉTODOS NUMÉRICOS Professor: Dr. Edwin B. Mitacc Meza
CÁLCULO NUMÉRICO Aula 5 – Sistema de Equações lineares.
Exercícios Faça um algoritmos para trocar uma lampada queimada.
UNIDADE 2 – ZEROS DAS FUNÇÕES REAIS
Algoritmo e Estrutura de Dados I Introdução ao conceito de algoritmo Márcia Marra
Interpolação Polinomial: Introdução; Lagrange.
Solução Numérica de Equações
Interpolação PROF. HERON JR.. Objetivo  Interpolar uma função f(x) consiste em aproximar essa função por uma outra função g(x), escolhida entre uma classe.
Transcrição da apresentação:

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.