top of page
Vintage_background.jpg

CONTAGEM DE DECIMAIS EM RAÍZES QUADRADAS

O código abaixo serve para explorar o mundo dos irracionais: ele calcula raízes quadradas não-exatas com quantas casas decimais quisermos e depois exibe quantas vezes cada algarismo (0, 1, 2, 3, 4, 5, 6, 7, 8 e 9) apareceu.

from decimal import Decimal, getcontext
raiz = int(input('Raiz de: '))
digitos = int(input('Dígitos: '))
exibir = str(input('Exibir número (s/n)? '))
getcontext().prec = digitos
numero = str(Decimal(raiz).sqrt())
if (exibir == "s"):
     print('\n%s\n' %(numero))
else:
     print('')
for i in range (0, 10):
     print('%i: %i (%.2f%%)' %(i, numero.count(str(i)), numero.count(str(i))*100/digitos))
while True:
     sequencia = str(input('\nSequência: '))
     print(numero.count(sequencia))
if (sequencia == "sair"):
     break

Exemplos de funcionamento:

Raiz quadrada de 2 com 500 dígitos. Observe que apareceram 54 zeros, 45 uns, 49 dois e assim por diante.

Também coloquei uma opção para identificar sequências numéricas dentro da raiz. Veja:

Contar_dec_raiz_02.jpg

A sequência "1234" apareceu 4 vezes dentro da raiz quadrada de 5 com 25 mil casas decimais

Além disso, criei outro código para exibir no formato de gráfico algumas dessas informações. O código é o seguinte:

from decimal import Decimal, getcontext
import matplotlib.pyplot as plt
eixo_x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
eixo_y = []
raiz = 2
getcontext().prec = 250
numero = str(Decimal(raiz).sqrt())
for i in range (0, 10):
     eixo_y.append(numero.count(str(i)))
plt.rcParams['font.size'] = '16'
plt.title('Distribuição de Decimais em Raízes')
plt.xlabel('Algarismos')
plt.ylabel('N° de vezes que aparecem')
plt.bar(eixo_x, eixo_y)
for i in range (0, 10):
     plt.text(i, eixo_y[i], eixo_y[i], ha = 'center')
plt.show()

Contar_dec_raiz_03.jpg

O código acima sendo executado gera esse gráfico, isto é, a distribuição de algarismos dentro da raiz quadrada de 2 com 250 casas decimais

Gráficos desse tipo, em situações como essa, são úteis para verificar tendências. Observe que, acima, a altura das barras não estão muito niveladas. Não obstante, observe o que ocorre quando colocamos 50 mil casas decimais:

Com 50 mil casas decimais, as barras estão quase da mesma altura. Pela Lei dos Grandes Números, isso nos mostra que a distribuição de algarismos em raízes quadradas é aleatória. Com os códigos dessa página, é possível realizar mais experiências dessas em Python

bottom of page