Considere a figura a seguir, contendo um polígono regular com 6 faces (hexágono) circunscrito num círculo com raio (representado por “r”), onde r = 1, ou seja, um circulo trigonométrico.
Fig 1: Hexágono circunscrito em círculo. Construido utilizando o GeoGebra.
Pela geometria da Fig 1, podemos concluir que o perímetro do círculo \(P_c\) será dado por:
Se \(P_6\) representa o perímetro do hexágono, pode-se concluir facilmente que \(P_6>P_c\). Devemos descobrir \(P_6\).
Fig 2: Hexágono circunscrito em círculo. Construído utilizando o Geogebra.
P6<-4*sqrt(3)
limsup<-2*sqrt(3)
cat(sprintf("P6 = %0.17f limsup = %0.17f ",P6,limsup))
## P6 = 6.92820323027550877 limsup = 3.46410161513775439
Mas esse limite superior pode ser melhorado, usando em lugar do hexágono, um polígono regular circunscrito de 12 lados (dodecágono).
Considere a Fig 3 a seguir, construida a partir da anterior, em que se observa 2 lados (observe que temos um lado inteiro à frente, e duas metades de lados nos extremos, totalizando 2 lados) de um polígono regular de 12 faces (dodecágono), obtidos a partir da biseção do ângulo de 60 graus do segmento do hexágono.Na figura, l/2 é metade de um lado do hexágono. Esse resultado sera utilizado como referência para encontrar o lado do dodecacono. A partir de agora vamos nos referir ao lado do hexágono como \(l_1\) e o lado do dodecágono como \(l_2\).
Fig 3: Construindo o dodecágono circunsinscrito. Construído utiliznado o GeoGebra.
Para obter \(l_2\), o comprimento do lado do dodecágono, podemos inicialmente vamos aproveitar que estamos lidando com um circulo trigonometrico (círculo com r=1) e a partir das propriedades trigonométricas. Sabemos que:
\(tg30 = l_1/2\) e \(tg(30/2) = l_2/2\).
\(tg(2\theta) = 2tg(\theta)/(1-tg^2\theta)\)
Assumimos que \(tg(2\theta) = l_1/2\) como vimos anteriormente, e \(tg(\theta) = l_2/2\). Aplicando as iguanldades na formúla da \(tg(2\theta)\) temos que:
\((l_1/2) = 2(l_2/2)/1-(l_2/2)^2\)
\((l_1/2) - (l_1/2)(l_2/2)^2 - 2*(l_2/2) = 0\)
\(a = -(l_1/2)\)
\(b = -2\)
\(c = (l_1/2)\)
\(l_2(1) = -4(1+sqrt(1+(l_1)^2/4)/l_1\)
ou
\(l_2(2) = -4(1-sqrt(1+(l_1)^2/4)/l_1\)
Temos que o lado do dodecágono:
O perímetro do dodecágono será então definido por:
Ou, utilizando o R para os cálculos, lembrando que \(l_1=2sqtr(3)/3\), obtemos
l1<-2*(sqrt(3)/3)
l2<-(-4)*(1-sqrt(1+l1^2/4))/l1
Pd<-12*l2
cat("Pd/2 = ",Pd/2)
## Pd/2 = 3.21539
Concluindo-se então um novo (e melhor) limite superior para \(\pi\):
Formaremos sucessivos polígnonos regulares, de maneira analoga a que fizemos na Fig 2 . Recursivamente, utilizaremos o valor de \(l_n\) para descobri o valor de \(ln_n+1\). A cada iteração obteremos um novo polígono circunscrito com o dobro de lados se comparado ao primeiro.
A partir do hexágono, representaremos cada novo poligono com o um índice \(t=1,2,\ldots,\) , fazendo uma referência ao número de lados desse novo poligono. O número de lados do poligono \(L_t\) é dado por * \(L_t=3\times 2^t\) Temos que \(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 usado no ultimo tópico, recursivamente, podemos concluir que
com \(l_1=1\) correspondendo ao lado do hexágono.
Se \(l_t\) e \(P_t\) representam, respectivamente, o comprimento do lado do polígono \(t\), tem-se
Usando a equação em diferença acima, partindo de \(t=1\) podemos obter limites inferiores para \(\pi\) que sejam arbitrariamente melhores. A função do R definida a seguir possibilita a obtenção do limite inferior para \(\pi\) para \(t=n\), com fundamento nos argumentos desenvolvidos:
acha_liminf<-function(n){
l<-(2*(sqrt(3)))/3
for(i in 1:n){
L<-3*2^i
p<-L*l
cat(sprintf("t= %2i Lados: %10.0f Lim sup: %0.17f dif %0.17f \n",i,L,p/2,pi-p/2))
l<-(-4)*(1-sqrt(1+l^2/4))/l
}
}
Testando a função definida acima com \(t=5\), correspondente ao polígono de 96 faces, computamos o limite inferior obtido por Arquimedes por
acha_liminf(5)
## t= 1 Lados: 6 Lim sup: 3.46410161513775439 dif -0.32250896154796127
## t= 2 Lados: 12 Lim sup: 3.21539030917347102 dif -0.07379765558367790
## t= 3 Lados: 24 Lim sup: 3.15965994209749379 dif -0.01806728850770067
## t= 4 Lados: 48 Lim sup: 3.14608621513140108 dif -0.00449356154160796
## t= 5 Lados: 96 Lim sup: 3.14271459964531363 dif -0.00112194605552052
A função mostra, além do valor computado para o limite inferior, a cada passo, a diferença entre esse valor e o valor de \(pi\) definido internamente pelo R, através da constante \(pi\).
Como mostra Azedvedo Filho (2015) “Se usarmos aumentarmos arbitrariamente \(t\) no procedimento apresentado no ultimo 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”.
acha_liminf(25)
## t= 1 Lados: 6 Lim sup: 3.46410161513775439 dif -0.32250896154796127
## t= 2 Lados: 12 Lim sup: 3.21539030917347102 dif -0.07379765558367790
## t= 3 Lados: 24 Lim sup: 3.15965994209749379 dif -0.01806728850770067
## t= 4 Lados: 48 Lim sup: 3.14608621513140108 dif -0.00449356154160796
## t= 5 Lados: 96 Lim sup: 3.14271459964531363 dif -0.00112194605552052
## t= 6 Lados: 192 Lim sup: 3.14187304998012618 dif -0.00028039639033306
## t= 7 Lados: 384 Lim sup: 3.14166274705480841 dif -0.00007009346501530
## t= 8 Lados: 768 Lim sup: 3.14161017659978059 dif -0.00001752300998747
## t= 9 Lados: 1536 Lim sup: 3.14159703432307769 dif -0.00000438073328457
## t= 10 Lados: 3072 Lim sup: 3.14159374881711528 dif -0.00000109522732217
## t= 11 Lados: 6144 Lim sup: 3.14159292787337385 dif -0.00000027428358074
## t= 12 Lados: 12288 Lim sup: 3.14159272562285041 dif -0.00000007203305730
## t= 13 Lados: 24576 Lim sup: 3.14159267174128587 dif -0.00000001815149275
## t= 14 Lados: 49152 Lim sup: 3.14159261890114561 dif 0.00000003468864751
## t= 15 Lados: 98304 Lim sup: 3.14159267174128587 dif -0.00000001815149275
## t= 16 Lados: 196608 Lim sup: 3.14159193588223218 dif 0.00000071770756094
## t= 17 Lados: 393216 Lim sup: 3.14159267174128587 dif -0.00000001815149275
## t= 18 Lados: 786432 Lim sup: 3.14158100757962355 dif 0.00001164601016956
## t= 19 Lados: 1572864 Lim sup: 3.14159267174128587 dif -0.00000001815149275
## t= 20 Lados: 3145728 Lim sup: 3.14175586042136556 dif -0.00016320683157245
## t= 21 Lados: 6291456 Lim sup: 3.14159267174128587 dif -0.00000001815149275
## t= 22 Lados: 12582912 Lim sup: 3.14455350588923865 dif -0.00296085229944554
## t= 23 Lados: 25165824 Lim sup: 3.13041262664612097 dif 0.01118002694367215
## t= 24 Lados: 50331648 Lim sup: 3.14455350588923865 dif -0.00296085229944554
## t= 25 Lados: 100663296 Lim sup: 3.21985298740743886 dif -0.07826033381764574
Azevedo Filho (2015) explica o porque calculos envolvendo números flutuantes pode ser problemático e apresenta uma solução.
Adriano, sugere a utilização o pacote Rmpfr como possivel solução.
A função abaixo é uma adaptação daquela elaborada por Azevedo Filho (2015),que além de aumentar o número de dígitos significativos utilizando o package Rmpfr, além de trazer uma comparação com o número \(\pi\), definido pelo mesmo package.
acha_liminf2<-function(n,k){
require(Rmpfr)
bits<-k*log2(10) #convertendo digitos em bits
l<-mpfr((2*(sqrt(3)))/3,bits) # l 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*l #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,24)))
l<-(-4)*(1-sqrt(1+l^2/4))/l
}
}
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 circunscrito com 103079215104 lados, o qual apresentou decimais de \(\pi\) corretos nas primeiras 16 casas decimais.
acha_liminf2(35,100)
## t= 1 Lados: 6 Lim sup: 3.46410161513775438635321 dif: -0.322508961547961147890565
## t= 2 Lados: 12 Lim sup: 3.21539030917347231633708 dif: -0.0737976555836790778744377
## t= 3 Lados: 24 Lim sup: 3.15965994209750033018139 dif: -0.0180672885077070917187499
## t= 4 Lados: 48 Lim sup: 3.14608621513143481992518 dif: -0.00449356154164158146253946
## t= 5 Lados: 96 Lim sup: 3.14271459964536814748128 dif: -0.00112194605557490901863555
## t= 6 Lados: 192 Lim sup: 3.14187304997982372117892 dif: -0.000280396390030482716272769
## t= 7 Lados: 384 Lim sup: 3.14166274705684837568815 dif: -7.00934670551372255085490e-5
## t= 8 Lados: 768 Lim sup: 3.14161017660468938823469 dif: -1.75230148961497720448459e-5
## t= 9 Lados: 1536 Lim sup: 3.14159703432152600146633 dif: -4.38073173276300368248862e-6
## t= 10 Lados: 3072 Lim sup: 3.14159374877135187744956 dif: -1.09518155863898691700162e-6
## t= 11 Lados: 6144 Lim sup: 3.14159292738509688302171 dif: -2.73795303644559062232784e-7
## t= 12 Lados: 12288 Lim sup: 3.14159272203861366781653 dif: -6.84488204293538881221467e-8
## t= 13 Lados: 24576 Lim sup: 3.14159267070199789735075 dif: -1.71122046588881090803754e-8
## t= 14 Lados: 49152 Lim sup: 3.14159265786784426931774 dif: -4.27805103085510120401811e-9
## t= 15 Lados: 98304 Lim sup: 3.14159265465930588197096 dif: -1.06951264350831352813291e-9
## t= 16 Lados: 196608 Lim sup: 3.14159265385717128636310 dif: -2.67378047900458119486071e-10
## t= 17 Lados: 393216 Lim sup: 3.14159265365663763753794 dif: -6.68443990752968615946269e-11
## t= 18 Lados: 786432 Lim sup: 3.14159265360650422533645 dif: -1.67109868738067092617041e-11
## t= 19 Lados: 1572864 Lim sup: 3.14159265359397087228638 dif: -4.17763382373418131218902e-12
## t= 20 Lados: 3145728 Lim sup: 3.14159265359083753402388 dif: -1.04429556123479995816700e-12
## t= 21 Lados: 6291456 Lim sup: 3.14159265359005419945825 dif: -2.60960995611126534246285e-13
## t= 22 Lados: 12582912 Lim sup: 3.14159265358985836581685 dif: -6.51273542052814229276556e-14
## t= 23 Lados: 25165824 Lim sup: 3.14159265358980940740650 dif: -1.61689438538247228893450e-14
## t= 24 Lados: 50331648 Lim sup: 3.14159265358979716780391 dif: -3.92934126596083399172652e-15
## t= 25 Lados: 100663296 Lim sup: 3.14159265358979410790326 dif: -8.69440618994879649319345e-16
## t= 26 Lados: 201326592 Lim sup: 3.14159265358979334292810 dif: -1.04465457253392181342393e-16
## t= 27 Lados: 402653184 Lim sup: 3.14159265358979315168431 dif: 8.67783331819796158002926e-17
## t= 28 Lados: 805306368 Lim sup: 3.14159265358979310387336 dif: 1.34589280790822560720242e-16
## t= 29 Lados: 1610612736 Lim sup: 3.14159265358979309192063 dif: 1.46542017693033296677372e-16
## t= 30 Lados: 3221225472 Lim sup: 3.14159265358979308893244 dif: 1.49530201918585980649600e-16
## t= 31 Lados: 6442450944 Lim sup: 3.14159265358979308818540 dif: 1.50277247974974151641592e-16
## t= 32 Lados: 12884901888 Lim sup: 3.14159265358979308799863 dif: 1.50464009489071194389523e-16
## t= 33 Lados: 25769803776 Lim sup: 3.14159265358979308795194 dif: 1.50510699867595455076502e-16
## t= 34 Lados: 51539607552 Lim sup: 3.14159265358979308794027 dif: 1.50522372462226520248246e-16
## t= 35 Lados: 103079215104 Lim sup: 3.14159265358979308793735 dif: 1.50525290610884286541182e-16