Índice

  1. Introdução
  2. Inferência Geométrica
  3. Programação
  4. Problemas Numéricos

Introdução

Esta publicação tem como objetivo o Exercício Adicional da Lista de Exercícios 1 (Lista Comum de Matemática e Estatística). O enunciado do exercício é o seguinte: como uma extensãoo do ex. 39, demonstre um limite superior para \(\pi\) usando círculos inscritos dentro de polígonos regulares, com 96 faces ou mais. Vamos ver quem consegue uma aproximação de \(\pi\) com mais casas decimais corretas usando esse procedimento. A derivação é mais difícil que a desenvolvida para a obtenção de limites inferiores. Apresente seu trabalho numa nota técnica elaborada utilizando o R Markdown (no R Studio) com todos os procedimentos computacionais desenvolvidos em R e mostrados na nota técnica. Carregue o arquivo no site RPubs (crie uma conta nesse site, que é grátis) e mostre o link na internet para a notatécnica na folha de almaço. Na aula daremos algumas dicas. O objetivo é construir uma nota técnica similar a que desenvolvi em http://rpubs.com/adriano/limites_pi mas mostrando um limite superior para \(\pi\).

Inferência geométrica

Começaremos essa demonstração com a utilização de dois hexágonos regulares. Um interno à uma circunferência de raio de tamanho \(1\) e outro externo, como na figura abaixo:

Figura 1: Aproximação de \(\pi\) por hexágonos

Como os hexágonos são regulares, teremos que a aresta do hexágono interno é igual a 1. Chamaremos a aresta do hexágono interno de \(S_i\), de modo que \(S_i = 1\). A aresta do hexágono externo será denominada \(S_e\).

Podemos observar que na figura há dois triângulos: \(ACE\) e \(ABD\), e por semelhança de triângulos, teremos:

\[\frac{\overline{BC}}{\overline{CE}} = \frac{\overline{AD}}{\overline{AE}}\]

Ainda pela observação da figura, inferimos que:

\[\frac{\frac{S_i}{2}}{\frac{S_e}{2}} = \frac{\overline{AD}}{1}\]

\[\frac{\frac{S_i}{2}}{\frac{S_e}{2}} = \overline{AD}\]

Pelo Teorema de Pitágoras, teremos:

\[1^2 = (\frac{S_i}{2})^2 + \overline{AD}^2\]

\[\overline{AD} = \sqrt{1-\frac{S_{i}^2}{4}}\]

Com isso, estamos aptos a obter uma expressão geral para calcular a aresta do hexágono externo (\(S_e\)):

\[S_e = \frac{S_i}{\sqrt{1 - \frac{S_{i}^2}{4}}} \]

O professor Adriano Azevedo-Filho mostrou uma expressão geral para \(S_i\):

\[S_{it+1} = \sqrt{2-\sqrt{4-S_{it}^2}}\]

O subescrito \(t\) designa a interação na qual está o cálculo em questão.

Dessa maneira, estamos aptos utilizar o computador para aplicar essas expressões e encontrarmos os limites superior e inferior para polígonos com muito mais lados.

Programação

Com a expressão geral que utilizamos, podemos utilizar o computador para aproximar o limite superior de \(\pi\) através de polígonos com mais lados, que são múltiplos de seis. O limite inferior, como foi dito na seção acima, foi calculado utilizando a expressão encontrada pelo professor Adriano Azevedo-Filho (clique aqui para mais detalhes). Para tanto, fizemos a função achar_limitsup. Ela tem como único argumento o número de interações. Seu output traz o número de interações, o número de lados do polígono, os valores dos limites inferior e superior e a diferença entre o limite superior e o valor real de \(\pi\).

achar_limisup<-function(n){
   s1 <- 1
   s2 <- s1/sqrt(1-(s1^2/4))
  for(i in 1:n){
    L  <- 3*2^i
    p1  <- L*s1
    p2  <- L*s2
    cat(sprintf("t= %2i Lados: %10.0f Lim inf: %0.17f Lim sup: %0.17f dif %0.17f \n",i,L,p1/2,p2/2,pi-p2/2))
    s1<-sqrt(2-sqrt(4-s1^2))
    s2<-s1/sqrt(1-(s1^2/4))
  }    
}

Feita a função, vamos rodá-la para 5 interações:

achar_limisup(5)
## t=  1 Lados:          6 Lim inf: 3.00000000000000000 Lim sup: 3.46410161513775527 dif -0.32250896154796216 
## t=  2 Lados:         12 Lim inf: 3.10582854123024976 Lim sup: 3.21539030917347279 dif -0.07379765558367968 
## t=  3 Lados:         24 Lim inf: 3.13262861328123687 Lim sup: 3.15965994209749912 dif -0.01806728850770600 
## t=  4 Lados:         48 Lim inf: 3.13935020304687207 Lim sup: 3.14608621513144016 dif -0.00449356154164704 
## t=  5 Lados:         96 Lim inf: 3.14103195089052978 Lim sup: 3.14271459964538824 dif -0.00112194605559512

Problemas numéricos

Como o professor Adriano Azevedo-Filho chama a atenção, se aumentarmos muito o número de interações, notamos que há problemas com os valores computados:

achar_limisup(30)
## t=  1 Lados:          6 Lim inf: 3.00000000000000000 Lim sup: 3.46410161513775527 dif -0.32250896154796216 
## t=  2 Lados:         12 Lim inf: 3.10582854123024976 Lim sup: 3.21539030917347279 dif -0.07379765558367968 
## t=  3 Lados:         24 Lim inf: 3.13262861328123687 Lim sup: 3.15965994209749912 dif -0.01806728850770600 
## t=  4 Lados:         48 Lim inf: 3.13935020304687207 Lim sup: 3.14608621513144016 dif -0.00449356154164704 
## t=  5 Lados:         96 Lim inf: 3.14103195089052978 Lim sup: 3.14271459964538824 dif -0.00112194605559512 
## t=  6 Lados:        192 Lim inf: 3.14145247228534430 Lim sup: 3.14187304997970607 dif -0.00028039638991295 
## t=  7 Lados:        384 Lim inf: 3.14155760791162209 Lim sup: 3.14166274705661319 dif -0.00007009346682008 
## t=  8 Lados:        768 Lim inf: 3.14158389214893585 Lim sup: 3.14161017660530728 dif -0.00001752301551416 
## t=  9 Lados:       1536 Lim inf: 3.14159046323676172 Lim sup: 3.14159703433023818 dif -0.00000438074044506 
## t= 10 Lados:       3072 Lim inf: 3.14159210604304828 Lim sup: 3.14159374881512843 dif -0.00000109522533531 
## t= 11 Lados:       6144 Lim inf: 3.14159251658815464 Lim sup: 3.14159292728109474 dif -0.00000027369130162 
## t= 12 Lados:      12288 Lim inf: 3.14159261864078942 Lim sup: 3.14159272131401934 dif -0.00000006772422623 
## t= 13 Lados:      24576 Lim inf: 3.14159264532121574 Lim sup: 3.14159267098952277 dif -0.00000001739972966 
## t= 14 Lados:      49152 Lim inf: 3.14159264532121574 Lim sup: 3.14159265173829283 dif 0.00000000185150029 
## t= 15 Lados:      98304 Lim inf: 3.14159264532121574 Lim sup: 3.14159264692548490 dif 0.00000000666430822 
## t= 16 Lados:     196608 Lim inf: 3.14159264532121574 Lim sup: 3.14159264572228292 dif 0.00000000786751020 
## t= 17 Lados:     393216 Lim inf: 3.14159230381173771 Lim sup: 3.14159230391200417 dif 0.00000034967778895 
## t= 18 Lados:     786432 Lim inf: 3.14159230381173771 Lim sup: 3.14159230383680432 dif 0.00000034975298879 
## t= 19 Lados:    1572864 Lim inf: 3.14158683965504126 Lim sup: 3.14158683966130781 dif 0.00000581392848531 
## t= 20 Lados:    3145728 Lim inf: 3.14158683965504126 Lim sup: 3.14158683965660801 dif 0.00000581393318511 
## t= 21 Lados:    6291456 Lim inf: 3.14167426502175751 Lim sup: 3.14167426502214919 dif -0.00008161143235608 
## t= 22 Lados:   12582912 Lim inf: 3.14167426502175751 Lim sup: 3.14167426502185521 dif -0.00008161143206209 
## t= 23 Lados:   25165824 Lim inf: 3.13747509950278314 Lim sup: 3.13747509950280801 dif 0.00411755408698511 
## t= 24 Lados:   50331648 Lim inf: 3.13747509950278314 Lim sup: 3.13747509950278936 dif 0.00411755408700376 
## t= 25 Lados:  100663296 Lim inf: 3.18198051533946380 Lim sup: 3.18198051533946469 dif -0.04038786174967157 
## t= 26 Lados:  201326592 Lim inf: 3.00000000000000000 Lim sup: 3.00000000000000089 dif 0.14159265358979223 
## t= 27 Lados:  402653184 Lim inf: 3.00000000000000000 Lim sup: 3.00000000000000000 dif 0.14159265358979312 
## t= 28 Lados:  805306368 Lim inf: 0.00000000000000000 Lim sup: 0.00000000000000000 dif 3.14159265358979312 
## t= 29 Lados: 1610612736 Lim inf: 0.00000000000000000 Lim sup: 0.00000000000000000 dif 3.14159265358979312 
## t= 30 Lados: 3221225472 Lim inf: 0.00000000000000000 Lim sup: 0.00000000000000000 dif 3.14159265358979312

Segundo Azevedo-Filho, “isso se deve à representação finita dos números pelos computadores, em geral limitada a 15 a 16 digitos significativos, em cálculos envolvendo a chamada precisão dupla, algo que pode trazer dificuldades aos cálculos realizados”. A sugestão dada pelo professor é utilizar o pacote Rmpfr para corrigir esse problema. Dessa maneira, nossa programação mudará um pouco:

acha_limnf2<-function(n,k){
  require(Rmpfr)
  bits<-k*log2(10) #convertendo digitos em bits
  s<-mpfr(1,bits) # s passa a ser um número com k digitos significativos
  p<-mpfr(0,bits)
  novopi<-Const("pi",bits)
  for(i in 1:n){
    L<-3*2^mpfr(i,bits)
    p<-L*s #operação propaga o número de digitos definido para p
    cat(sprintf("t= %2i Lados: %12.0f Lim sup: %s dif: %s \n",i,L,format(p/2,24),format(novopi-p/2,10)))
    s<-sqrt(2-sqrt(4-s^2))
  }  
}

Agora, basta chamarmos a função

acha_limnf2(35,100)
## t=  1 Lados:            6 Lim sup: 3.00000000000000000000000 dif: 0.1415926536 
## t=  2 Lados:           12 Lim sup: 3.10582854123024914818679 dif: 0.03576411236 
## t=  3 Lados:           24 Lim sup: 3.13262861328123819716175 dif: 0.008964040309 
## t=  4 Lados:           48 Lim sup: 3.13935020304686720713515 dif: 0.002242450543 
## t=  5 Lados:           96 Lim sup: 3.14103195089050963811135 dif: 0.0005607026993 
## t=  6 Lados:          192 Lim sup: 3.14145247228546207545061 dif: 0.0001401813043 
## t=  7 Lados:          384 Lim sup: 3.14155760791185764551646 dif: 3.504567794e-5 
## t=  8 Lados:          768 Lim sup: 3.14158389214831840866897 dif: 8.761441475e-6 
## t=  9 Lados:         1536 Lim sup: 3.14159046322805009573846 dif: 2.190361743e-6 
## t= 10 Lados:         3072 Lim sup: 3.14159210599927155054478 dif: 5.475905217e-7 
## t= 11 Lados:         6144 Lim sup: 3.14159251669215744759287 dif: 1.368976358e-7 
## t= 12 Lados:        12288 Lim sup: 3.14159261936538395518955 dif: 3.422440928e-8 
## t= 13 Lados:        24576 Lim sup: 3.14159264503369089667214 dif: 8.556102342e-9 
## t= 14 Lados:        49152 Lim sup: 3.14159265145076765170425 dif: 2.139025587e-9 
## t= 15 Lados:        98304 Lim sup: 3.14159265305503684169112 dif: 5.347563968e-10 
## t= 16 Lados:       196608 Lim sup: 3.14159265345610413926464 dif: 1.336890992e-10 
## t= 17 Lados:       393216 Lim sup: 3.14159265355637096366282 dif: 3.342227480e-11 
## t= 18 Lados:       786432 Lim sup: 3.14159265358143766976267 dif: 8.355568700e-12 
## t= 19 Lados:      1572864 Lim sup: 3.14159265358770434628765 dif: 2.088892175e-12 
## t= 20 Lados:      3145728 Lim sup: 3.14159265358927101541889 dif: 5.222230437e-13 
## t= 21 Lados:      6291456 Lim sup: 3.14159265358966268270171 dif: 1.305557609e-13 
## t= 22 Lados:     12582912 Lim sup: 3.14159265358976059952241 dif: 3.263894023e-14 
## t= 23 Lados:     25165824 Lim sup: 3.14159265358978507872758 dif: 8.159735059e-15 
## t= 24 Lados:     50331648 Lim sup: 3.14159265358979119852888 dif: 2.039933765e-15 
## t= 25 Lados:    100663296 Lim sup: 3.14159265358979272847920 dif: 5.099834412e-16 
## t= 26 Lados:    201326592 Lim sup: 3.14159265358979311096678 dif: 1.274958603e-16 
## t= 27 Lados:    402653184 Lim sup: 3.14159265358979320658868 dif: 3.187396507e-17 
## t= 28 Lados:    805306368 Lim sup: 3.14159265358979323049415 dif: 7.968491268e-18 
## t= 29 Lados:   1610612736 Lim sup: 3.14159265358979323647052 dif: 1.992122817e-18 
## t= 30 Lados:   3221225472 Lim sup: 3.14159265358979323796461 dif: 4.980307043e-19 
## t= 31 Lados:   6442450944 Lim sup: 3.14159265358979323833814 dif: 1.245076761e-19 
## t= 32 Lados:  12884901888 Lim sup: 3.14159265358979323843152 dif: 3.112691902e-20 
## t= 33 Lados:  25769803776 Lim sup: 3.14159265358979323845486 dif: 7.781729754e-21 
## t= 34 Lados:  51539607552 Lim sup: 3.14159265358979323846070 dif: 1.945432439e-21 
## t= 35 Lados: 103079215104 Lim sup: 3.14159265358979323846216 dif: 4.863581096e-22