Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Algoritmos e estabilidade

Algoritmos e estabilidade

Paulo Bordoni

April 11, 2019
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Algo como uma receita de bolo. Um algoritmo é um

    procedimento passo-a-passo para efetuar cálculos. Uma sequência finita de instruções para resolver um problema Algoritmos são como programas de computador? Mestra, o que é mesmo um algoritmo?
  2. Como já disse, essas respostas são pobres! A Mestra simplificou

    demais ! Torno a repetir a afirmação do Filósofo: Algoritmo é um conceito fundamental em Matemática e Computação.
  3. Sim, uma descrição passo a passo do que fazer –

    um algoritmo! Dados Resultados Problema Condição Obter resultados partindo de dados e cumprindo uma condição envolve um roteiro do que fazer, não?
  4. Loirinha, chamo sua atenção para um “detalhe”: A formalização do

    conceito de algoritmo é anterior ao ENIAC - o 1º computador digital.
  5. Surfistas e Loirinhas, leiam mais sobre o Projeto Manhattan e

    aplicações bélicas da ciência e tecnologia no apêndice 1 que incluí ao final deste conjunto de transparências.
  6. A IBM e os sete anões Expressão cunhada lá pela

    metade da década de 1960, descrevendo como a IBM dominava o negócio de computadores. Em 1965 a IBM detinha 65,3 % do mercado. Os sete anões, Burroughs, Sperry Rand (anteriormente Remington Rand) , Control Data , Honeywell , General Electric, RCA e NCR, dividiam o resto. Dez anos depois:
  7. Ele aparece como a Proposição II do Livro VII dos

    “Elementos”, de Euclides, 300 aC. O algoritmo de Euclides, para calcular o mdc (máximo divisor comum) de dois números inteiros, é um dos mais antigos que se tem notícia na história da humanidade.
  8. O algoritmo se baseia na ideia que para > ,

    então , = , − . Por exemplo, 7,4 = 4,3 = 3,1 = 1,2 = 1,1 = 1
  9. . Início Repetir até que = Esse algoritmo é um

    processo repetitivo: Se < Passo 1 Substituir − Passo 2 Mostrar = = Fim
  10. Por exemplo, se = (, ) então podemos simplificar a

    fração Τ , escrevendo = ∙ ∙ = . Mestres, qual a utilidade em achar o (, ) de dois números A e B ?
  11. Portanto, se , = 1 então Τ já está na

    sua forma mais simples! É mesmo, 357 255 = 49 35 = 21 15 = 7 5
  12. Vocês tem 3 minutos para acabar! O 1º ganha uma

    bala. Loirinhas, Surfistas e Cabelos de Fogo: 1. Escolham dois números A e B, com 3 dígitos cada um. 2. Calculem o (, ).
  13. 1. Blá, blá, blá ... 2. ... 3. ... No

    4º ano do Ginásio aprendi a extrair a raiz quadrada, , de um número da seguinte forma: Loirinhas, Surfistas e Cabelos de Fogo, descubram esse algoritmo na web e calculem para alguns valores de .
  14. Qual a utilidade em executar passo-a- passo, tais instruções, Tio?

    Posso usar a calculadora do meu celular para obter a raiz quadrada de um número! E como será que uma calculadora faz isto, Surfista?
  15. Tio, o Surfista tem razão, esses dois exercícios não acrescentam

    nada. Constituem apenas um treinamento! Quando vou utilizá-los? Cabelos de fogo vou mostrar a resposta a essa questão, apresentada por um colega meu. Um professor.
  16. Mestre, a reclamação de meus colegas é mundial. Basta ler

    a Introdução do livro do seu colega para confirmar!
  17. É... As universidades estão cheias de Ph-deuses mentirosos. É mais

    cômodo ficar com o estabelecido por Aristóteles e não contestar o poder da Igreja e de igrejinhas... É Mestre, seu colega acabou de dizer que essa resposta é mentirosa!
  18. Sim, mas afinal, qual é a resposta? Pense no título,

    marcado em vermelho, do parágrafo, Loirinha. Na realidade o livro todo é a melhor resposta. Leia-o!
  19. Essa pergunta é uma das mais difíceis que a humanidade

    já se fez! A resposta só foi dada na década de 30 do século passado. Sim Mestre o que é, de fato, um algoritmo?
  20. Loirinha: David Berlinski, responde tua pergunta através de uma viajem

    fantástica pelo interior de algoritmo! as ideias, a lógica subjacente, os homens, as máquinas digitais, ... Sim ele navega pela história, pelas ideias, pela lógica subjacente, os homens envolvidos, as máquinas digitais, ...
  21. Nas palavras do lógico: um algoritmo é um método finito,

    escrito em um vocabulário simbólico fixo, regido por instruções precisas, que se movem em passos discretos, 1, 2, 3, ..., cuja execução não requer insight, esperteza, intuição, inteligência ou clareza e lucidez, e que mais cedo ou mais tarde chega a um fim. Antecedendo ao capítulo I, destacado numa página, lemos:
  22. Mestres, sugiro o garrote para todos os alunos que deixarem

    de ler este livro! Não exagere Torquinho, a Inquisição acabou a séculos, mas prometo pensar em reprová-los
  23. Os autores foram Church, Turing, Gödel e Post. No capítulo

    11, “O pavão da razão”, Berlinski recorda que foram dadas quatro definições distintas, mas equivalentes para algoritmo.
  24. A mais intuitiva é a de Turing, que descrita através

    de uma máquina imaginária – hoje referida como “a máquina universal de Turing”. Máquina (abstrata) porque recorre à mecanização de procedimentos.
  25. Z A B Fita Cabeçote Estados {0, 1} Símbolos Quadrado

    atual O cabeçote pode: 1. Ler o símbolo escrito sobre o quadrado atual; 2. Mover-se do quadrado atual para o seguinte ou anterior ou ainda ficar parado (isto depende do Estado em que a Máquina está); 3. Escrever ou apagar um símbolo no quadrado atual (também depende do Estado em que a Máquina está).
  26. Allan M Turing 1912-1954 Este é artigo onde Turing apresenta

    sua forma de entender algoritmos. Ela passou a ser referida como “Máquina de Turing”, por envolver uma descrição mecânica de um algoritmo.
  27. Como já dissemos, existem 4 definições, equivalentes, de computabilidade. No

    livro abaixo, os autores, Profs. de Computação da USP, explicam tudo de forma acessível.
  28. × f = () Não confundam função com uma expressão

    que permite calculá-la. Podem haver diversas. Por exemplo = ( − 1)2 e = 2 − 2 + 1.
  29. Nada a ver, ( − 1)2 = 2 − 2

    + 1, é uma identidade! Apressadinho! Do lado esquerdo temos 2 operações elementares, do lado direito 4. O dobro!
  30. Pois é Surfista, você está cansado de saber que (

    − 1)3= 3 − 32 + 3 − 1. Claro, Mestre, a igualdade é pela expansão do binômio de Newton!
  31. 0 1 2 3 4 5 6 7 0 1

    - - - - - - - 1 1 1 - - - - - - 2 1 2 1 - - - - - 3 1 3 3 1 - - - 4 1 4 6 4 1 - - 5 1 5 10 10 5 1 - 6 1 6 15 20 15 6 1 7 - - - É, no 2º grau você deve ter visto que os coeficientes do binômio de Newton podem ser calculados, por recorrência, pelo esquema indicado abaixo. Sim, Mestra e com ele obtenho: ( + )3 = 3 + 32 + 32 + 3
  32. Surfista, você verá que a fala do Galileu “Não confundam

    ...“ faz sentido. O valor = () de uma função : → pode ser calculado de diversas formas. Cada uma estabelece um algoritmo para calcular y em ∈ .
  33. f Y ℴ1 X ℴ Y 1 X 2 X

    n Y n-1 Qualquer função computável : → é computada através de uma sucessão finita de operações (funções) elementares. Incluindo as do IEEE 754. Diagramaticamente:
  34. Então, Loirinha: Um algoritmo é, essencialmente, uma descrição dessa cadeia

    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.
  35. Um algoritmo é uma composição de operações elementares ℴ ∘

    ⋅⋅⋅ ∘ ℴ2 ∘ ℴ1 = que computam uma função f associada ao problema. Repetindo:
  36. No estudo de algoritmos, o 1º aspecto a considerar é

    o quantidade de operações elementares utilizadas pelo algoritmo.
  37. Quando dois algoritmos ℴ ∘ ⋅⋅⋅ ∘ ℴ2 ∘ ℴ1

    e ∘ ⋅⋅⋅ ∘ 2 ∘ 1 resolvem o mesmo problema (compõe a mesma função ), em princípio devemos escolher o mais rápido. Se ℴ é o tempo para efetuar a operação ℴ e para efetuar a operação deveremos comparar σ=1 (ℴ ) com σ=1 ( ) .
  38. Mas outros tempos computacionais devem ser considerados para decidir. Por

    exemplo, o tempo gasto para buscar dados em armazenamento secundário (do HD para a RAM). A menor delas deve fornecer o algoritmo mais rápido.
  39. A notação “big “ é uma forma de estimar o

    número de operações envolvidas num algoritmo. No cap. 3, Algorithm Analysis, do livro acima, o tema é exposto com clareza. É um dos tópicos mais importantes no estudo de algoritmos.
  40. O texto pode ser baixado do endereço: web.mit.edu/16.070/www/lecture/big_o.pdf Loirinhas, Surfistas

    e Cabelos de Fogo, leiam o texto “Big O notation” e façam a tarefa que o Tio vai mandar.
  41. Além desse texto em pdf, leiam também o cap. 3

    do livro acima. Em seguida: 1. Façam um resumo do texto em pdf. 2. Apresentem um resumo das seções 3.1, 3.2 e 3.3 do livro. 3. O algoritmo de Briot-Rufini-Horner é (? ? ) ?
  42. Mestres, e as condições de entrega, etc, etc? Exatamente as

    mesmas do primeiro exercício, passado na aula anterior.
  43. Surfista, no 2º grau você aprendeu a utilizar o algoritmo

    de Briot-Rufini-Horner? Aprendi sim, Mestre. Só não entendi prá que serve!
  44. Um exemplo típico de analfabetismo funcional... É o algoritmo mais

    rápido para calcular o valor de uma função polinomial num ponto = 0 .
  45. 1 4 -7 3 -5 - 2×1 2×6 2×5 2×13

    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:
  46. 2 x O algoritmo é extendido, da mesma forma, para

    calcular o valor das derivadas 1ª, 2ª, ... da polinomial num ponto = 0 . Vejam: 1 4 -7 3 -5 - 2 12 10 26 1 6 5 13 21 - 2 16 42 1 8 21 55 - 2 20 1 10 41 2 x 2 x (2) (2) 2(2)
  47. Certo Loirinha, e no caso geral de = 4 4

    + 3 3 + 2 2 + 1 + 0 os cálculos ficam {[(4 0 + 3 )0 + 2 ]0 + 1 }0 + 0 Deu 21 porque as contas do esquema foram as seguintes: 1 × 2 + 4 × 2 − 7 × 2 + 3 × 2 − 5
  48. A descrição, passo a passo do esquema (algoritmo) usado é

    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
  49. • 4 = 4 • 3 = 4 0 +

    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. 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.
  50. • Prelúdio: algoritmos de forma ingênua: • Algoritmos e a

    resolução de problemas, • Exemplos: o algoritmo de Euclides e o da raiz quadrada. • Interlúdio 1: quando vou usar isto? • Algoritmos - mergulho em profundidade: • Um livro fantástico sobre algoritmos; • A máquina de Turing; • Um algoritmo é uma composição de funções elementares; • Algoritmos diferentes podem resolver um mesmo problema; • Tarefa para casa 2: A notação “big ” para medir algoritmos; • Apêndice 1: O algoritmo de Briot-Rufini-Horner • Apêndice 2: Mais um pouco sobre lógica matemática; • Apêndice 3: Crimes de guerra e a Operação Lava-jato. Eis um resumo do que vimos sobre algoritmos:
  51. Números NO COMPUTADOR Estabilidade DE ALGORIMOS Algoritmos e a resolução

    de problemas Números Neste mapa da mina, assinalei em cores o que já vimos. Em branco o que veremos agora. DIFERENCIABILI//. E CONDICIONAMENTO O mapa da mina OPERAÇÕES ELEMENTARES E CONTINUIDADE Vetores, matrizes e a numpy
  52. Recordando: × f = () Não confundam função com uma

    expressão que permite calculá-la. Podem haver diversas. Por exemplo = ( − 1)2 e = 2 − 2 + 1.
  53. Recordando: Nada a ver, ( − 1)2 = 2 −

    2 + 1, é uma identidade! Apressadinho! Do lado esquerdo 2 operações elementares, do lado direito 4. O dobro!
  54. Recordando: Calma Surfista, você verá que a fala do Filósofo

    faz sentido. O valor = () de uma função : → pode ser calculado de diversas formas. Cada uma estabelece um algoritmo para calcular y em ∈ .
  55. Recordando: f Y f 1 X f n Y 1

    X 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:
  56. Recordando: Então, Loirinha: Um algoritmo é, essencialmente, uma descrição dessa

    cadeia 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.
  57. Pois é Surfista, você está cansado de saber que (

    − 1)3= 3 − 32 + 3 − 1. Claro, Mestre, a igualdade é pela expansão do binômio de Newton!
  58. Portanto você concorda que = ( − 1)5 e =

    5 + −54 + 103 − 102 + 5 − 1 representam funções iguais, só os algoritmos são diferentes. Claro, Mestre, pelo do binômio de Newton temos = , ∀ ∈ ℝ.
  59. Há duas lições a aprender com este exemplo, Surfista. A

    1ª delas é que algoritmos distintos para resolver o mesmo problema podem conduzir a resultados computacionais diferentes.
  60. É, o algoritmo que gera o gráfico em vermelho não

    é estável. Ele envolve muitas operações elementares e alguma delas é mau condicionada.
  61. Como 2ª lição de hoje, Surfista: Não exija além das

    possibilidades do IEEE 754. Volte lá nos dois gráfico e atente para a escala vertical do 1º e a do 2º.
  62. “Forcei a barra” com d_t = 0.001. Veja o desastre!

    Confira na próxima transparência que escala vertical está no limite da precisão double.
  63. No estudo de algoritmos no computador, o 1º aspecto a

    considerar é o número de operações elementares utilizadas pelo algoritmo. O 2º envolve a propagação de erros.
  64. Perante a matemática finita do IEEE 754 o que distingue

    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º
  65. O 2º aspecto só aparece porque não vale o axioma

    de existência do supremo na representação de ponto flutuante do IEEE 754. É alguns algoritmos serão estáveis. Outros não.
  66. Sim, Loirinha, como vimos no exemplo gráfico da função ↦

    ( − 1)5 , compostas = ∘ ⋅⋅⋅ ∘ 2 ∘ 1 e = ∘ ⋅⋅⋅ ∘ 2 ∘ 1 podem responder de forma diferente face à propagação de erros do IEEE 754. Estabilidade?!
  67. A f pode ser ser bem ou mau condicionada. Idem

    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.
  68. f Y X Y 1 f 1 X 2 Uma

    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
  69. Podemos ter problemas no cálculo (algoritmo!) da hipotenusa. Algo tão

    simples como o teorema de Pitágoras. a b c = 2 + 2
  70. Como? Veja no código, no algoritmo novo: • Antes de

    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”.
  71. Quem quiser mais detalhes sobre este, e outros problemas, leia

    o artigo abaixo, que está no site do Mestre.
  72. Será instrutivo examinar alguns exemplos simples. De erros causados por

    assumir que algoritmos distintos, que resolvem o mesmo problema, conduzem à mesma solução computacional.
  73. Pois é Filósofo, algo simplérrimo. Mas são dois algoritmos distintos.

    A ordem das parcelas não altera a soma: + + = + ( + ).
  74. A lei do cancelamento, na adição, está escondida na sequência

    de propriedades: 1. Associatividade, 2. Definição de oposto, 3. Existência do neutro. Como diria o Sherlock: “Elementar meu caro Watson, elementar”: + − = + − = + 0 =
  75. Neste programa, eu sorteio valores para e y no intervalo

    (0, 1), testo a lei do cancelamento. No caso de falha, emito uma mensagem e mostro os resultados.
  76. Você conhece o dito popular: “De grão em grão, a

    galinha enche o papo” Veja o exemplo a seguir! Ah, Mestra! não acontece sempre. Quando aparecem são errinhos minúsculos, lá na última casa!
  77. Não é a mesma coisa, mas repeti seu programa para

    = 100 × 60 × 60 × 10 = 3.600.000
  78. A ordem dos fatores não altera o produto: ∗ ∗

    = ∗ ( ∗ ). Apesar da igualdade, como na adição, são dois algoritmos distintos, que podem conduzir a resultados diferentes!
  79. Mestra, é isso mesmo! Meu programa mostra que pode ocorrer

    erro na associatividade da multiplicação.
  80. O Sherlock está se referindo a subentendidos do tipo 235.0

    = 235 Meu caro Watson Surfista, você poderá ser gravemente punido ao fazer conversões ingênuas, do tipo ⟷
  81. Na próxima transparência, mostro um 3º exemplo de erro, que

    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.
  82. Os exemplos mostram de forma clara que alguns algoritmos podem

    produzir catástrofes. O termo matemático para descrever a situação é a estabilidade dos algoritmos. Alguns são estáveis e outros instáveis.
  83. Y X Vamos analisar um problema (direto) definido por uma

    função : → que, para um ∈ dado, associa um único = ∈ , via ↦ = ∈ . f
  84. Y X Como sempre, o cálculo de = é efetuado

    por um algoritmo. Em outras palavras, é uma composta de funções elementares: = ∘ ⋯ ∘ 1 ∘ 0 = ∘ ⋯ ∘ 1 ∘ 0
  85. É fundamental entender que usaremos um algoritmo para calcular a

    solução no computador. Por quê você grifou computador Sherlock?
  86. O grifo do Sherlock é de importância capital. No computador

    as operações elementares são ligeiramente diferentes: • 0 ≅ 0 ∗; • 1 ≅ 1 ∗; • ... • ≅ ∗.
  87. • 0 ≅ 0 ∗; • 1 ≅ 1 ∗;

    • ... • ≅ ∗. Y X ∗ ∗ = ∗ ∘ ⋯ ∘ 1 ∗ ∘ 0 ∗ Como resultado a composta produzirá outra função ∗: ∗ = ∗ ∘ ⋯ ∘ 1 ∗ ∘ 0 ∗. Então, quase com certeza, = ≠ ∗ = ∗().
  88. Entretanto, como as operações elementares ∗ da IEEE 754/2008 satisfazem

    o Teorema Fundamental da Representação de Ponto Flutuante temos a esperança que − ∗ < , com = ∗ () sendo ∈ ℝ um número pequeno. • 0 ≅ 0 ∗; • 1 ≅ 1 ∗; • ... • ≅ ∗.
  89. X X Usualmente a 1ª operação da composta, a 0

    ∗, é a operação de entrada de dados no computador, 0 ∗ = , isto é: ↦ ∗ = (). 0 = ∗ E, já vimos que ∗ = () com − ∗ < ().
  90. Y X f ∗ = ∘ ⋯ ∘ 1 ∗

    ∗ ∆ ∆ Assumir que ∗ é uma perturbação qualquer de com ∆ = − ∗ . Então ∗ = ∗(∗) será o valor calculado pelo algoritmo ∗ = ∘ ⋯ ∘ 1 em ∗ e queremos estimar ∆ = − ∗ . Antes de continuar, podemos pensar (como os matemáticos) num problema mais geral!
  91. Mas por que, Mestre? Por que, em muitas situações, o

    valor ∗ proveio de outros cálculos já realizados por algum outro algoritmo.
  92. ∆ ∗ ∗ = ∗() = () f Forward error

    Mas, voltando à situação inicial, o erro direto (forward error), é o erro ao calcular a solução para o dado (input) pelo algoritmo: ∆ = − ∗ = − ∗(∗) Solução do problema Solução calculada pelo algoritmo
  93. Para a aproximação ∗ = 1.41 obtida ao calcular =

    2, por um determinado algoritmo, o erro 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.
  94. Claro Mestre! E é para isto que usamos o computador,

    onde o algoritmo foi implementado. E fornece uma aproximação com ~7 casas decimais no caso de float32. Portanto, calcular o erro forward é algo apenas teórico. Como faremos na prática?
  95. Wilkinson, no final dos 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 exata do problema = () A solução calculada pelo algoritmo ∗ = ∗()
  96. 2 1.414 Como a inversa de ↦ é ↦ 2,

    calcule 1.4142 = 1.999396. Então o erro backward será ∆ = 2 − 1.999396 = 0.000604 1.999396 2 Mestre usei um algoritmo para calcular 2 e obtive 2 ≅ 1.414. Como calculo o erro backward?
  97. Sim, é o conhecimento de ෤ (solução do problema inverso)

    que permite calcular ∆ = − ෤ , o erro reverso (backward error) do algoritmo ∗ em . ∗ f A solução exata do problema ෤ Aproximação a descobrir −1 Solução exata na aproximação ෤ . A solução calculada pelo algoritmo ∆ Backward error
  98. E quando o erro reverso é pequeno, o algoritmo é

    backward estável. Quando o erro direto é pequeno, o algoritmo é forward estável.
  99. Um algoritmo ∗ para calcular a solução de um problema

    f num ponto ∈ é estável quando existe ෤ ∈ tal que os erros backward, ∆, e forward, ∆, são pequenos. ∆ f ∗ ෤ ∆ ∗() (෤ ) Backward error Forward error
  100. Em outras palavras quando, para cada ∈ a solução calculada

    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
  101. Y X ෤ ∆x (෤ ) f Se 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. Algoritmo estável ሚ () Resultado confiável () f ሚ Problema bem condicionado
  102. Mestres, se entendi bem, na prática são dois passos: 1.

    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. Veremos isto na prática ao longo do curso.