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

A continuidade e as operações elementares no co...

A continuidade e as operações elementares no computador

...

Paulo Bordoni

April 10, 2017
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Flores lindas! Veremos, ao estudar as operações elementares no computador,

    que os jardins da Análise Numérica possuem ervas daninhas.
  2. A operação elementar mais simples é a entrada de dados

    (input) no computador. Ela é uma fonte de problemas numéricos!
  3. O algoritmo para obtenção da representação na base 2 de

    um número entre 0 e 1, escrito na base 10, pode ser descrito por: Multiplique o número dado sucessivamente por 2 e vá coletando os “vai 0” ou “vai 1”.
  4. Nesse exemplo eu mostro como converter 0.3 para a base

    2. 0.3 = 0. 0.3 ∗ 2 0.6 0 0.6 ∗ 2 1.2 1 0.2 ∗ 2 0.4 0 0.4 ∗ 2 0.8 0 0.8 ∗ 2 1.6 1 0.6 ∗ 2 1.2 1 1 0 0 . . .
  5. Para números racionais, o algoritmo de conversão só termina em

    um número finito de passos quando o número é uma potência negativa de 2 ou uma soma de potências negativas de 2. Em todos os outros casos, a representação do número racional, na base 2, é uma seqüência periódica – uma “bí”zima periódica
  6. Como as representações IEEE 754 possuem apenas uma quantidade finita

    de bits na fração, precisaremos truncá-los. O que introduzirá um erro na representação IEEE 754 do número!.
  7. Se as bízimas forem poucas não haverá muito problema, Mestres!

    Vou mostrar a você que, infelizmente, serão muitas bízimas. Na verdade a grande maioria!
  8. 80% dos números decimais com apenas 1 dígito após a

    vírgula geram bízimas periódicas na base 2: Surfista! Construa um programa Python que recebe um número entre zero e um, escrito na base 10, com apenas uma casa decimal após a vírgula, e o converta para a base dois. 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
  9. 0.00 0.01 ... 0.24 0.25 0.26 ... 0.49 0.50 0.51

    ... 0.74 0.75 0.76 ... 0.99 Confira que 96% dos números decimais com apenas 2 dígitos após a vírgula geram dízimas periódicas na base 2:
  10. Repita isso para números com 3, 4, 5, 6, 7

    casas decimais após a vírgula ... Depois dê uma olhada na próxima transparência!
  11. 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

    80% 0.00 0.01 ... 0.24 0.25 0.26 ... 0.49 0.50 0.51 ... 0.74 0.75 0.76 ... 0.99 96% 0.000 0.001 ... 0.124 0.125 0.126 ... 0.499 0.500 0.501 ... 0.874 0.875 0.876 ... 0.999 99.2% 0.0000000 0.0000001 ... 0.xxxxxxx 0.xxxxxxx 0.xxxxxxx ... 0.4999999 0.5000000 0.5000001 ... 0.xxxxxxx 0.xxxxxxx 0.xxxxxxx ... 0.9999999 99.9936% A grande maioria é bízima periódica. No padrão Single: 99,99 %.
  12. A consequência poderá ser funesta ao calcularmos valores de funções

    ... São apenas 274.877, de números corretos do total de 4.294.967.296, no caso dos Single. Não chega a 6 milésimos %.
  13. Não minha Loirinha querida! É que no padrão Single, temos

    24 = 23 + 1 bits de precisão. O Mestre parou em sete dígitos após a vírgula. Por quê? Sete é algum número mágico Mestra?!
  14. É só responder à pergunta: “24 casas binárias correspondem a

    quantas casas decimais?” Em matemática: qual o valor de k para o qual 10 = 224 ? Resolvendo a equação acima encontramos = 24 ∗ 10 (2) = 24 ∗ 0.301030 = 7.224719 ≅ 7 Continuo não entendendo!
  15. Mestra, como eu faço para buscar informações desse tipo na

    Numpy? Pela “Search page”. Marquei o endereço ali em cima.
  16. Qual é a informação que você quer buscar Loirinha? Precisa

    especificar com clareza! Ora Mestra, sobre ponto flutuante!
  17. Pois é, como na Internet, vocês precisarão separar “o joio

    do trigo”. Eliminei algumas que não tem nada a ver!
  18. Não risquei as “Data type ...” porque float é um

    tipo de dado. Explique porque você deixou as outras, Surfista. Acho importante esclarecer seu critério de busca!
  19. O Surfista tem razão, Mestre. Dê uma mãozinha, pois o

    “help” não está muito claro! É só instanciar o parâmetro dtype com o tipo que desejamos obter as informações. Por exemplo: dtype = numpy.float32.
  20. Façam um programa que calcula a ULP(x) para x dado.

    Como exercício, procurem as informações nos “links” indicados como importantes pelo Surfista: MachAr e iinfo.
  21. O Eps já sabemos onde obter. Só falta descobrir como

    calcular exp(). Essa é fácil, = ∗ 2exp().
  22. Dei uma busca em “Floating point routines”. Como o resultado

    é quase igual à nossa busca anterior, já eliminei as 3 primeiras.
  23. A “Data type routines” também risco – foi a anterior.

    As duas seguintes não tem nada a ver. Vamos tentar “Mathematical functions”.
  24. Isso mesmo Loirinha, ela recebe e retorna a () e

    () na base 2, que usaremos para calcular (). Vou lá ver!
  25. Será sempre assim, Surfista? O valor recuperado de x será

    sempre o mesmo? Boa pergunta, coleguinha! Experimentem, com valores extremos. Tanto grandes como pequenos!
  26. ATENÇÃO: os sistemas IEEE 754 de ponto flutuante NÃO foram

    criados para aproximar números reais no computador.
  27. Nossa análise até agora mostrou que: Mais de 99,99% dos

    números ∗ = () do padrão IEEE, Single ou Double apresentam: • Erro absoluto limitado pela (). • Erro relativo limitado pelo “épsilon da máquina”, Eps.
  28. = − ∗ < = − ∗ < Insistindo no

    aspecto fundamental: ∈ ℝ mas ∗ = ∈ ℚ, com: Mas você está focando apenas no aspecto estático das coisas. E a dinâmica dos processos?
  29. De fato Professora, a principal razão de existência dos números

    reside na possibilidade de computar com eles. “C’est la raison d’être” dos computadores. Como se comportarão as operações algébricas perante tais erros?
  30. Mestres, Existem conhecimentos subjacentes ao entrelaçamento operações algébricas ↔ IEEE

    754 que precisam ser aprofundados. Sim Filósofo, precisaremos entender o comportamento das operações algébricas no seio da IEEE 754.
  31. As operações algébricas são funções definidas para números reais. A

    adição recebe um par de números reais e devolve um número real. Isto também vale para os racionais e os complexos. + Adição z = x + y ℝ (x,y) y x ℝ ℝ
  32. ∗ Multiplicação (x,y) y x ℝ ℝ z = x

    ∗ y ℝ O mesmo vale para a multiplicação em ℚ, ℝ e ℂ.
  33. Vocês já devem ter ouvido falar que ℚ, ℝ e

    ℂ com as operações de adição + e multiplicação ∙ constituem estruturas algébricas com propriedades os tornam um corpo. Em outras palavras, são grupos abelianos para a adição e a multiplicação (tirando o 0) e que satisfazem também a distributividade da multiplicação sobre a adição.
  34. Só para recordar, um grupo abeliano é um conjunto com

    uma operação ∘∶ × → satisfazendo as propriedades básicas: 1. Comutativa: ∘ = ∘ , , ∈ . 2. Associativa: ( ∘ ) ∘ = ∘ ( ∘ ), , , ∈ . 3. Existe um elemento, ∈ , nominado identidade, para o qual ∘ = 4. Cada ∈ possui seu inverso −1, solução de ∘ −1 = .
  35. Quando a operação é a adição, a identidade é o

    zero, 0. Quando é a multiplicação a identidade é o 1. Na multiplicação de matrizes é a matriz identidade I. Na composição de funções, é a função identidade, : → .
  36. Além disso ℚ e ℝ são corpos ordenados. Isto é,

    para quaisquer , , ∈ ℚ, ℝ valem as afirmações: • > ⟹ + > + • > 0 > 0 ⟹ > 0 Aliás, não existe uma relação de ordem natural em ℂ. Não há como dizer que um número complexo é maior que outro.
  37. Observem que para obter o oposto, −, e o inverso,

    1/, de ∈ ℝ temos que resolver os problemas inversos: • Qual ∈ ℝ satisfaz a equação + = 0. • Qual ∈ ℝ satisfaz a equação ∗ = 1 São as operações de subtração e divisão (− e /) que fornecem a solução para esses problemas.
  38. Assim, operacionalmente, não basta falar em adição e multiplicação. Precisaremos

    das quatro operações elementares +, −, ∗ e /. E, também da igualdade =, ≠ , das operações lógicas ( ∧,∨, →, ↔ ) e da relação de ordem >, ≥ .
  39. É por esse motivo operacional que os computadores possuem uma

    unidade de aritmética e lógica na qual essas operações foram implementadas de acordo com os padrões do IEEE 754. Eu nunca tinha me detido em pensar nessas questões, Filósofo!
  40. As linguagens C e Fortran padrão usam a unidade de

    aritmética e lógica. Linguagens como Python, Java e as .net trabalham com máquinas virtuais que obedecem o padrão IEEE 754 em suas implementações. Assim, todas as operações lógicas, comparações e as operações elementares +, −, ∗ , / e já satisfazem o padrão IEEE 754.
  41. Mas será que, operacionalmente, a aritmética do IEEE 754 manterá

    as propriedades de corpo? Não será possível! Mas essa tua pergunta, desencadeará uma série de outras perguntas.
  42. Este exemplo simples, com o Toy System, que obedece o

    IEEE 754, confirma que a adição não é fechada. Vejam, a soma de = 0.125 e = 1.0, ambos números do Toy, é + = 1.125, que não está no Toy System. +
  43. Bem Loirinha, o passo seguinte é obrigar “a ovelha desgarrada”

    retornar ao lar. Mas e aí, o que eu faço com o resultado? +
  44. Em outras palavras, precisamos transformar o resultado num número do

    tipo IEEE 754. Sim, e esse “modus operandi” se aplica a todos os tipos float do IEEE 754.
  45. Não Loirinha, quando somamos dois números, o computador (o IEEE

    754) já dá o resultado diretamente! Mas, depois de calcular + , eu sempre vou ter que aproximar o resultado, isto é calcular ( + ) ?
  46. IEEE 754 Operações com IEEE 754 ℚ IEEE 754 IEEE

    754 A imagem a gravar é esta, para todas as operações elementares e a . ∘ = +,∗, −,/, ∗ = ( ∘ ) = ∘ ∘ (, ) ° *
  47. Notem que essa é uma forma de preservar “minimamente“ a

    propriedade do fechamento: Forçar que a soma (ou −, ∗, ÷, ) de dois floats seja um float. “Minimamente” porque o resultado é aproximado!
  48. A forma encontrada para preservar “minimamente” a propriedade do fechamento

    é garantir que o resultado satisfaça o Teorema fundamental da representação de ponto flutuante IEEE 754/2008.
  49. Se , ∈ ℝ e , e ∘ estão na

    faixa normal de um dos sistemas IEEE 754, então ∘ = ( ∘ )(1 + ) para algum satisfazendo < . Substitua ∘ por +, −, ∗, / ou .
  50. • Erro relativo: Τ ∘ − ∘ | ∘ |

    < , ∘ ≠ 0 • Erro absoluto: ∘ − ∘ < ( ∘ ) Em outras palavras, são observadas as limitações para o erro:
  51. Ainda assim, perdemos a propriedade do fechamento. Claro, pois como

    os números do IEEE 754 estão limitados à faixa −, + , basta somar dois números grandes para cair fora dessa faixa.
  52. Esta outra perda não será tão problemática pois os sistemas

    IEEE 754 nos informarão com mensagens do tipo NaN (Not A Number). Portanto, para nossos programas não travarem, temos que incluir rotinas para tratamento desses tipos de exceção.
  53. Vamos mergulhar fundo na continuidade dos números reais e das

    funções para entender o que perderemos. Algo tão importante que os Mestres vestirão roupas de gala!
  54. O axioma da existência do supremo: “Todo subconjunto (≠ ∅)

    limitado superiormente de ℝ possui um supremo”. É ele quer possibilita falarmos em continuidade, derivadas, integrais, ... Todo o Cálculo Diferencial e Integral.
  55. Toda a “matemática do contínuo”, caros aluninhos. Os processos limite

    e as infinitas casa decimais em números como , 2, etc.
  56. Um subconjunto ⊂ ℝ é limitado superiormente quando: ∃ ∈

    ℝ tal que ≥ , ∀ ∈ . Mestre, você está um gatão! Mas, o que significa “conjunto limitado superiormente”?
  57. O supremo s de um conjunto limitado superiormente X ⊂

    ℝ, anotado (), é o menor de seus limitantes superiores. Em símbolos: = () ⟺ ቐ 1) ∀ ∈ , ≤ 2) ∀ > 0, ∃ ∈ tal que − < ≤
  58. • 2 = ∈ ℚ . 2< 2 • 1

    = ∈ ℝ . < 1 • 1 = ∈ ℝ . ≤ 1 • 2 = Τ 1 + 1 2 , Τ 1 + Τ 1 2 + 1 4 , Τ 1 + Τ 1 2 + 1 4 + 1/8, ⋯ • 9 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 • 2 = , é í í ê 1 Cruz-credo, Mestra! Dê um exemplo, pelo amor de Deus Veja alguns:
  59. Limitantes superiores s A 1ª parte da definição, ∀ ∈

    , ≤ , garante que s é um limitante superior de X.
  60. − ∈ s A 2ª parte da definição, ∀ >

    0, ∃ ∈ tal que − < ≤ , garante que s é o menor de todos os limitantes superiores.
  61. Nessa 2ª figura vocês não mostraram os elementos do conjunto

    X. Por quê? Só para descobrir se você estava atento! Imagine, p/ex., X como as aproximações decimais por falta para 2: = { 1.4, 1.41, 1.414, 1.4142, … }
  62. Um ponto a ser destacado a respeito do supremo s

    de X é que ele pode ser um elemento de X, mas isto não é uma exigência. Quando ∈ , ele é o máximo de X, anotado max()
  63. Surfistas e Loirinhas, neste exato momento, interrompam a leitura deste

    conjunto de transparências e dirijam-se à aba “Leituras adicionais” do site do Mestre para ler os textos indicados a seguir.
  64. Mestres, os sistemas IEEE de ponto flutuante são constituídos apenas

    por números racionais. Para eles não vale a propriedade de existência do supremo! Exatamente, Surfista. Esta é a maior perda. Ela é terrível!
  65. Mas, então como faremos as coisas de Cálculo no computador?

    A palavra chave é engenhosidade Loirinha, criatividade e conhecimento.
  66. Loirinha, o Mestre repete toda hora “matemática do contínuo”, “matemát...”

    Estou perdendo a paciência! Pois é! Ele repete tanto que meu maior problema já passou a ser: O que é continuidade?
  67. Continuidade tem a ver com proximidade, que tem a ver

    com medir distância. Com trenas, réguas, paquímetros, microscópios, ...
  68. Sim Filósofo. E com desigualdades do tipo − < ,

    que garantem a proximidade entre e y. Basta escolher épsilon pequeno, por exemplo: = 10−3 = 0.001
  69. Bem Loirinha, vou começar explicando o que é uma função

    contínua. Funções contínuas são bem comportadas!
  70. 0 (0 ) f Uma função ↦ () é contínua

    em 0 quando ∀ > 0, ∃ > 0 tal que: − 0 < ⟹ − 0 < f 0 (0 )
  71. 0 (0 ) f f 0 (0 ) Repetindo: uma

    função ↦ () é contínua quando o problema inverso tem solução. Dado > 0, obter > 0 tal que: − 0 < ⟹ − 0 < .
  72. y Surfista, imagine que você está, de olhos vendados, num

    tobogã como o gráfico da função ↦ = (), da figura. f
  73. 0 f Que malvadeza Mestra! Ele poderia ter se machucado.

    Aí, surpresa!!! A função tinha uma descontinuidade.
  74. 0 f t (0 ) () Observe Loirinha que à

    direita de 0 : Não importa quão próximo t estiver de 0 , o valor de () nunca chegará perto do valor de (0 ).
  75. 0 f t (0 ) () salto Repetindo: pela direita

    de 0 : Não importa quão próximo t estiver de 0 , o valor de () nunca chegará perto do valor de (0 ). É verdade Mestre. Devido ao salto em 0 .
  76. Mas o que continuidade tem a ver com um paquímetro?

    Paquímetros servem para medir tamanho, mas são instrumentos limitados à uma determinada precisão.
  77. Ele não funciona para qualquer precisão: este paquímetro é limitado

    à vigésimos de centímetro. Vejam o 1/20 na escala.
  78. Na definição de continuidade temos: ∀ > 0 e não

    ∀ ≥ 1/20. O controle não funciona para 0 < < 1/20. Em outras palavras ∄ > 0 tal que − 0 < ⟹ − 0 < para 0 < < 1/20. Seja mais claro, Cabelos de Fogo! controle
  79. O mesmo acontece com microscópios, lunetas e telescópios! São instrumentos

    analógicos limitados por sua precisão, são “quase contínuos”. Eu diria: Esse paquímetro funciona de forma contínua para medir coisas maiores que sua precisão de 1/20 centímetro.
  80. 0.05 0. cm Sim, este paquímetro é cego a partir

    0.05 cm. Não consegue distinguir a espessura de dois fios de cabelo! Fios de cabelo Zona de cegueira
  81. O axioma da existência do supremo é a tradução de

    continuidade para o conjunto ℝ dos números reais: “Todo subconjunto (≠ ∅) limitado superiormente de ℝ possui um supremo” Pense nisso comparando a definição de continuidade e a 2ª propriedade da definição de supremo.
  82. − ∈ s Se um conjunto ⊂ ℝ é limitado

    ele tem um supremo ∈ ℝ − um número real que “cola” no conjunto : Não importa quão pequena seja a precisão > 0 sempre existirá um número real ∈ satisfazendo − < ≤ . Em outras palavras: não há espaço vazio entre o conjunto e .
  83. É verdade Mestres, subconjuntos limitados de ℚ não desfrutam dessa

    propriedade de continuidade. É só pensar no exemplo das aproximações decimais 1, 1.4, 1.41, 1.414, 1.4142, … para 2. Todos são racionais menores que 2, mas 2 ∉ ℚ.
  84. Nesse instante do curso, torne a examinar o conjunto de

    transparências “Números”, passado como leitura. Vou mostrar duas transparências dele, para “arredondar as ideias”
  85. Pois é, Surfista, por trás de sua fala está a

    ideia que os reais são enumeráveis. Você acertou num ponto - os reais constituem um conjunto infinito, já que todo racional também é real. Entretanto, mesmo com microscópios eletrônicos, NÃO conseguimos ver um número real separado de outro.
  86. Como o mel preenche os buracos no pão! Os irracionais

    completam os buracos deixados na reta pelos racionais.
  87. Pois é, “o apressado come cru”. Sinto vergonha ao perceber

    que eu já estava perdendo a paciência com o poderosíssimo conceito de continuidade! Na reta real (≡ ℝ) não há espaços vazios, buracos, a preencher. É a continuidade dos números reais.
  88. Para fechar as ideias, vou dar dois exemplos de funções

    com uma infinidade de pontos de descontinuidade. Numa delas não dá para construir o gráfico!
  89. Em matemática e na computação anotamos o maior inteiro menor

    que por . é maior inteiro “aos pés de” Confira comigo, Loirinha: 2.31 = 2, = 3, 7 = 6, −2.7 = −3
  90. f 1 2 4 3 0 -1 -3 -2 -1

    -2 -3 1 2 3 O gráfico da função : ℝ → ℝ definida por ↦ = possui uma quantidade enumerável de pontos de descontinuidade: todos os inteiros. Sua imagem é ℤ. Uma escada bem maior que escadaria da Igreja da Penha!
  91. Eis uma função : ℝ → ℝ descontínua em todos

    os pontos do seu domínio: = ቊ 0 ∈ ℚ 1 ∈ ℝ\ℚ É uma peneira matemática. Só caem no chão os racionais. Não dá pra desenhá-la.
  92. Vocês vão gostar! Vá à aba “Leituras adicionais” no site

    do Mestre e leia “Who give you the Epsilon, J. V. Grabiner”
  93. Na próxima aula, vamos assistir a uma das brigas mais

    famosas da história do conhecimento!
  94. • Algo apavorante: 99,99% dos números reais no computador estão

    errados! • Parênteses: como buscar informações na NumPy. • Obtendo informações sobre floats IEEE 754/2008 na NumPy. • O conjunto ℝ dos números reais constitui um corpo ordenado. • A Unidade de Aritmética e Lógica, ALU. • As operações elementares NÃO são fechadas no computador. • O remendo criado pelo IEEE 754/2008. • O axioma de existência do supremo e a continuidade do conjunto dos ℝ dos números reais. • Continuidade de funções reais, a valores reais. • Paquímetros são instrumentos descontínuos (“quase contínuos”). • O axioma de existência do supremo e a continuidade. • Dois exemplos de funções descontínuas. • Uma boa leitura. Este conjunto de transparências foi dedicado ao estudo das operações elementares no computador e da continuidade. Eis um resumo do que vimos: