Problemas e condicionamento No mapa da mina, assinalei em roxo, verde, laranja e azul o que já vimos. Em vermelho o que veremos agora. Operações elementares O mapa da mina Matemática do contínuo
de bolo. Um algoritmo é um procedimento passo-a-passo para efetuar cálculos. Uma sequência finita de instruções para resolver um problema Mestra, o que é mesmo um algoritmo?
comum) de dois números inteiros, é o mais antigo que se tem notícia na história da humanidade. Ele aparece como a Proposição II do Livro VII dos “Elementos”, de Euclides, 300 aC.
difíceis que a humanidade já se fez, e foi respondida, na década de 30 dos anos 1.900. Uma das respostas é a definição de função computável, dada através de uma máquina de Turing.
1946 • Local - Moore School of Electrical Engineering – Un. da Pensilvânia • Idealizadores - J. P. Eckert e John Mauchly • Tamanho – 5,50 por 24,40 metros • Consumo – 150 Kw • 17.468 válvulas eletrônicas • 70.000 resistências • 10.000 capacitores • 1.500 relés • 6.000 comutadores manuais Alguns dados sobre o ENIAC:
Michael John Muuss 1. J. P. Eckert 2. J. G Brainerd 3. S. Feltman 4. H. H. Goldstine 5. J.W. Mauchly 6. H. Pender 7. Gen. G. M. Barnes 8. Cor. P. N. Gillon John von Neumann
2 X n Y n-1 Qualquer função computável : → é computada através de uma sucessão finita de operações elementares. Incluindo as do IEEE 754. Diagramaticamente:
finita de funções elementares (incluindo aí comparações, e decisões lógicas) para computar uma outra função. Esta ideia independe do IEEE 754. Um algoritmo nada mais é que uma composição de operações elementares ∘ ⋅⋅⋅ ∘ 2 ∘ 1 = que computam uma função f associada ao problema.
1 2+4 12-7 10+3 26-5 2 x + Surfista, deu certinho, 2 = 21 ! Mas eu lembro que, para calcular o valor da polinomial = 4 + 43 − 72 + 3 − 5, em = 2 usávamos o seguinte esquema:
a seguinte: Entre com os coeficientes 4 , 3 , 2 , 1 , 0 da polinomial e com 0 . 1º passo Defina 4 = 4 2º passo Para = 3,2,1,0 calcule = +1 0 + 3º passo
3 • 2 = 3 0 + 2 • 1 = 2 0 + 1 • 0 = 1 0 + 0 Confira Surfista que os cálculos efetuados com o algoritmo foram os dessa caixinha. Vou implementar o algoritmo. Vai ser mais rápido! No cálculo direto são 10 multiplicações e 4 adições e o Briot precisa só de 4 adições e 4 multiplicações.
dois algoritmos para resolver um problema associado a uma função f são composições diferentes: = ∘ ⋅⋅⋅ ∘ 2 ∘ 1 e = ∘ ⋅⋅⋅ ∘ 2 ∘ 1 Obviamente: Cada algoritmo poderá envolver uma quantidade diferente de operações elementares! 1º Cada operação elementar possui a sua sensibilidade – seu número de condicionamento! 2º
para cada uma das operações elementares e . Cada uma pode ser bem ou mau condicionada. Pois é Loirinha, lembre-se que: tanto a f como cada operação elementar e cada possui seu número de condicionamento.
situação altamente indesejável é a f ser bem condicionada, mas uma das operações elementares (ou ) ser mau condicionada. Então o algoritmo será instável. f n X n Y n-1
elevar ao quadrado cada componente do vetor X calculei = max(). • Depois montei o vetor = /. Os elementos de Y satisfazem | | ≤ 1. Logo, elevá-los ao quadrado e somá-los não causará “overflow”.
de propriedades: 1. Associatividade, 2. Definição de oposto, 3. Existência do neutro. Como diria o Sherlock: “Elementar meu caro Watson, elementar”: + − = + − = + 0 =
causou um prejuízo enorme. Apesar de que, nesse caso, o erro foi na utilização do Método dos Elementos Finitos. De qualquer forma, um erro de Cálculo Numérico.
solução aos dados do problema. A solução é calculada pela implementação de algoritmos no computador (IEEE 754). Como vimos alguns algoritmos são estáveis e outros instáveis.
, num ∈ dado e um algoritmo que permite calcular a solução = () . Lembre-se Surfista, as questões sobre estabilidade/instabilidade só aparecem no contexto computacional (IEEE 754). f Y X = ()
direto (forward error), é o erro do algoritmo ao calcular a solução para o dado (input) : ∆ = − = − () Solução do problema Solução calculada pelo algoritmo
direto (forward) é |∆| = − | = |1.41 − 1.41421 … ≅ 0.00421 O problema em avaliar o erro forward é que a solução exata (no caso = 2) usualmente é desconhecida.
anos 1950, bolou uma forma ingênua de contornar o problema: Descobrir qual aproximação de fornece o valor () calculado pelo algoritmo e medir ∆ = − . Aproximação a descobrir f ( ) é a solução exata na aproximação . A solução calculada pelo algoritmo
permite calcular ∆ = − , o erro reverso (backward error) do algoritmo em . f A solução exata do problema Aproximação a descobrir f Solução exata da aproximação A solução calculada pelo algoritmo ∆ Backward error
com o algoritmo, (), é uma boa aproximação (∆ é pequeno) para a solução ( ) de um problema aproximado (∆ é pequeno). ∆ f ∆ = () = ( ) Solução calculada com o algoritmo Solução do problema aproximado
um problema f é bem condicionado e um algoritmo para calcular a solução é estável poderemos garantir que a solução computada () e a solução real () estarão próximas. Problema bem condicionado Algoritmo estável
Garantir que o problema é bem condicionado; 2. Usar um algoritmo estável para calcular a solução. Exatamente, Surfista. Então você terá certeza que a solução computada estará próxima da solução real.
+ − 1 para próximo de 0. Vamos considerar o algoritmo natural, descrito pela composição = 3 ∘ 2 ∘ 1 na qual: • 1 = 1 + , para próximo de 0, • 2 = , para próximo de 1, • 3 = 1 − , para próximo de 1.
erro forward. Mais adiante, no curso, veremos alguns exemplos. A solução obtida com o algoritmo é boa quando é a solução exata de um problema aproximado!