Esta nota técnica apresenta uma derivação de limites superior para \(\pi\) a partir de polígonos regulares circunscrito e inscrito em um círculo de raio \(1\). Arquimedes (287-212 AC) foi um dos pioneiros no uso desse método, considerando polígonos regulares de 96 faces.
É apresentada uma solução para o problema de precisão com a utilização de variáveis com cerca de 100 digitos significativos, viabilizada pelo package Rmpfr do R. Esse procedimento possibilitou a obtenção de uma estimativa para \(\pi\) correta nas primeiras 20 decimais.
Considere a figura a seguir, contendo um polígono regular com 6 faces (hexágono) circunscrito e inscrito num círculo com raio com dimensão \(1\).
Fig 1: Hexágono circunscrito e inscrito no círculo
Pela geometria da Fig 1, podemos considerar que \(Phi\) é o perímetro do hexágono inscrito na circunferência e \(Phe\) o perímetro do hexágono circunscrito, com isso pode-se concluir que o perimetro da circunferência será:
Logo:
Como \(r=1\), e dividindo todos os termos por \(2\), tem-se que \(\pi\) está entre:
Para determinar \(Phe\), para o cálculo do limite superior de \(\pi\), usa-se a semelhança de triângulos, mostrado na Fig 2.
Fig 2: Triângulos semelhantes representados nos hexágonos circunscrito e inscrito no círculo.
Através da Fig 2, pode-se afirmar que o triângulo retângulo \(ABF\) é semelhante ao triângulo retângulo \(ADG\). Com isso, pode-se determinar o lado hexágono circunscrito Se, como sendo a relação:
Pela Fig2 tem-se que \(AG=r=1\), \(BF=Si/2\) e \(DG=Se/2\), assim:
Para determinar o \(AF\) usa-se o Teorema de Pitagoras para o triangûlo ADF:
Logo:
Substituindo Si=1, tem-se:
Determinando Phe:
Concluindo-se que:
O mesmo argumento utilizado na Fig 2 para a construção do dodecágono a partir do hexágono pode ser repetido para construção de um polígono regular inscrito de 24 faces a partir do dodecágono, e assim sucessivamente, dobrando-se a cada passo o número de faces (48, 96, 192 … ).
Para facilitar a construção, considere a sequência de polígonos regulares internos caracterizados pelo índice \(t=1,2,\ldots,\) em que o número de lados \(L_t\) é definido por * \(L_t=3\times 2^t\) Com essa definição \(t=1\) corresponde ao hexágono, \(t=2\) ao dodecágono e assim sucessivamente, dobrando-se o número de lados, na medida que \(t\) cresce uma unidade. E utilizando o mesmo argumento de:
Em que Si pode ser determinado como demostrado na nota técnica do prof. Adriano Azevedo Filho, disponivel em: http://rpubs.com/adriano/limites_pi. Como sendo:
E assim determinar Phe, representado por \(Phe=3\times 2^tSe_t\)
Com isso encontrar o limite superior de \(\pi\).
acha_limsup<-function(n){
si<-1
se<-((2*sqrt(3))/3)
for(i in 1:n){
L<-3*2^i
p<-L*se
cat(sprintf("t= %2i Lados: %10.0f Lim inf: %0.17f dif %0.17f \n",i,L,p/2,p/2-pi))
si<-sqrt(2-sqrt(4-si^2))
se<-si/(sqrt(1-((si^2)/4)))
}
}
Testando a função definida acima com \(t=5\), correspondente ao polígono de 96 faces, computamos o limite superior obtido por Arquimedes por
acha_limsup(5)
## t= 1 Lados: 6 Lim inf: 3.46410161513775439 dif 0.32250896154796127
## t= 2 Lados: 12 Lim inf: 3.21539030917347279 dif 0.07379765558367968
## t= 3 Lados: 24 Lim inf: 3.15965994209749912 dif 0.01806728850770600
## t= 4 Lados: 48 Lim inf: 3.14608621513144016 dif 0.00449356154164704
## t= 5 Lados: 96 Lim inf: 3.14271459964538824 dif 0.00112194605559512
A função mostra, além do valor computado para o limite superior, a cada passo, a diferença entre esse valor e o valor de \(pi\) definido internamente pelo R, através da constante \(pi\).
Caso aumentar arbitrariamente \(t\) no procedimento apresentado no último parágrafo, observa-se, a partir de um certo ponto (\(t=16\)), que os valores obtidos para o limite indicam alguma anomalia no processo computacional.
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.
Uma solução possível para o problema pode envolver o uso de recursos do R para cálculos utilizando um número arbitrário de digitos significativos nos cálculos.
A seguir apresenta-se uma nova versão da função definida anteriormente, que considera cálculos com \(k\) digitos significativos, onde \(k\) é um argumento da função. Usamos na função a constante \(\pi\) definida no package Rmpfr que também pode ser definida com um número arbitrário de digitos significativos, para fazer as comparações. A função mpfr do package define um número com um número de bits de interesse e esse número de bits é propagado para todos números e operações que dependem desse número. Na função o número de bits é calculado a partir de um número de digitos de interesse \(k\), a partir de recomendações na documentação do package.
acha_limsup2<-function(n,k){
require(Rmpfr)
bits<-k*log2(10)
si<-mpfr(1,bits)
se<-mpfr(((2*sqrt(3))/3),bits)
p<-mpfr(0,bits)
novopi<-Const("pi",bits)
for(i in 1:n){
L<-3*2^mpfr(i,bits)
p<-L*se
cat(sprintf("t= %2i Lados: %12.0f Lim inf: %s dif %s \n",i,L,format(p/2,24),format(p/2-novopi,10)))
si<-sqrt(2-sqrt(4-si^2))
se<-si/(sqrt(1-((si^2)/4)))
}
}
Testando a seguir a nova função considerando 100 digitos significativos nos cálculos, para obtenção de um limite superior para \(\pi\) considerando \(t=35\), um polígono regular com 103079215104 lados. Nesse caso, as decimais de \(\pi\) estão corretas nas primeiras 21 casas decimais.
acha_limsup2(35,100)
## t= 1 Lados: 6 Lim inf: 3.46410161513775438635321 dif 0.3225089615
## t= 2 Lados: 12 Lim inf: 3.21539030917347247767064 dif 0.07379765558
## t= 3 Lados: 24 Lim inf: 3.15965994209750048331663 dif 0.01806728851
## t= 4 Lados: 48 Lim inf: 3.14608621513143497109810 dif 0.004493561542
## t= 5 Lados: 96 Lim inf: 3.14271459964536829816886 dif 0.001121946056
## t= 6 Lados: 192 Lim inf: 3.14187304997982387174549 dif 0.0002803963900
## t= 7 Lados: 384 Lim inf: 3.14166274705684852622449 dif 7.009346706e-5
## t= 8 Lados: 768 Lim inf: 3.14161017660468953876347 dif 1.752301490e-5
## t= 9 Lados: 1536 Lim inf: 3.14159703432152615199322 dif 4.380731733e-6
## t= 10 Lados: 3072 Lim inf: 3.14159374877135202797598 dif 1.095181559e-6
## t= 11 Lados: 6144 Lim inf: 3.14159292738509703354801 dif 2.737953038e-7
## t= 12 Lados: 12288 Lim inf: 3.14159272203861381834280 dif 6.844882058e-8
## t= 13 Lados: 24576 Lim inf: 3.14159267070199804787702 dif 1.711220481e-8
## t= 14 Lados: 49152 Lim inf: 3.14159265786784441984401 dif 4.278051181e-9
## t= 15 Lados: 98304 Lim inf: 3.14159265465930603249722 dif 1.069512794e-9
## t= 16 Lados: 196608 Lim inf: 3.14159265385717143688936 dif 2.673781984e-10
## t= 17 Lados: 393216 Lim inf: 3.14159265365663778806420 dif 6.684454960e-11
## t= 18 Lados: 786432 Lim inf: 3.14159265360650437586271 dif 1.671113740e-11
## t= 19 Lados: 1572864 Lim inf: 3.14159265359397102281264 dif 4.177784350e-12
## t= 20 Lados: 3145728 Lim inf: 3.14159265359083768455014 dif 1.044446087e-12
## t= 21 Lados: 6291456 Lim inf: 3.14159265359005434998452 dif 2.611115219e-13
## t= 22 Lados: 12582912 Lim inf: 3.14159265358985851634311 dif 6.527788047e-14
## t= 23 Lados: 25165824 Lim inf: 3.14159265358980955793276 dif 1.631947012e-14
## t= 24 Lados: 50331648 Lim inf: 3.14159265358979731833017 dif 4.079867529e-15
## t= 25 Lados: 100663296 Lim inf: 3.14159265358979425842953 dif 1.019966882e-15
## t= 26 Lados: 201326592 Lim inf: 3.14159265358979349345436 dif 2.549917206e-16
## t= 27 Lados: 402653184 Lim inf: 3.14159265358979330221057 dif 6.374793015e-17
## t= 28 Lados: 805306368 Lim inf: 3.14159265358979325439963 dif 1.593698254e-17
## t= 29 Lados: 1610612736 Lim inf: 3.14159265358979324244689 dif 3.984245634e-18
## t= 30 Lados: 3221225472 Lim inf: 3.14159265358979323945870 dif 9.960614085e-19
## t= 31 Lados: 6442450944 Lim inf: 3.14159265358979323871166 dif 2.490153521e-19
## t= 32 Lados: 12884901888 Lim inf: 3.14159265358979323852490 dif 6.225383803e-20
## t= 33 Lados: 25769803776 Lim inf: 3.14159265358979323847821 dif 1.556345951e-20
## t= 34 Lados: 51539607552 Lim inf: 3.14159265358979323846653 dif 3.890864877e-21
## t= 35 Lados: 103079215104 Lim inf: 3.14159265358979323846362 dif 9.727162193e-22