Anar al contingut

Fòrmula de Bailey-Borwein-Plouffe

De L'Enciclopèdia, la wikipedia en valencià

La fòrmula de Bailey-Borwein-Plouffe (o fòrmula BBP) permet calcular l'enèsim dígit de π en base 2 (o 16) sense necessitat de trobar els precedents, d'una manera ràpida i utilisant molt poc espai de memòria en la computadora. Simon Plouffe junt en David Bailey i Peter Borwein varen trobar esta fòrmula el 19 de setembre de 1995 usant un programa informàtic cridat PSLQ que busca relacions entre número entero.[1]

La fòrmula BBP

[editar | editar còdic]

π=k=0116k(48k+128k+418k+518k+6)

La demostració d'esta fòrmula es troba més avall.

Us de la fòrmula per a calcular els decimals del número π

[editar | editar còdic]

A continuació es mostra el càlcul de l'enèsim dígit hexadecimal de π.

Primer es deu observar que el dígit ubicat en la posició N+1 de π en base 16 és el mateix que el primer dígit hexadecimal de 16Nπ. En efecte, com en la base 10, multiplicar un número en base 16 per 16 equival a desplaçar la menge decimal un lloc cap a la dreta. D'esta manera, multiplicant per 16N, la menge es desplaça N llocs cap a la dreta. El problema original es reduïx al càlcul del primer dígit de 16Nπ. Usant la fòrmula BBP:

16Nπ=k=016Nk(48k+128k+418k+518k+6)

El càlcul dels primers dígits hexadecimals a la dreta de la menge d'este número no és senzill per dos raons: el número és molt gran i la suma és infinita.

Supongam que SN(a)=k=016Nk8k+a. El càlcul dels primers dígits hexadecimals de SN(a) permetrà obtindre els de 16Nπ, a través de la relació:

16Nπ=4 SN(1)2SN(4)SN(5)SN(6)

Descomponent la suma SN(a) en dos:

SN(a)=k=016Nk8k+a=k=0N116Nk8k+a+k=N16Nk8k+a=AN(a)+BN(a)

es poden calcular AN(a) i BN(a) en forma independent.

Càlcul de BN(a)

[editar | editar còdic]

BN(a)=k=N16Nk8k+a

Encara que es tracta d'una suma infinita, és molt fàcil de calcular, perque els seus térmens són menuts i decreixen ràpidament.

  • En efecte, el primer terme de la suma és: bN=18N+a. Si es busca l'enèsim dígit hexadecimal de π (N = 1 000 000 000 per eixemple), el primer terme és molt menor que 1.
  • Ademés, cada terme té un zero més a la dreta de la menge que el precedent, perque per a k ≥ N, bk > 16 bk+1:
bkbk+1=16Nk16N(k+1)8(k+1)+a8k+a=16(1+88k+a)16+.

Finalment, la suma BN(a) és de la forma (en el pijor cas):

BN =  0,**********. . . . 

+ 0,0*********. . . 
+ 0,00********. . . 
+ 0,000********. . . 

Per lo tant, per a obtindre BN(a) en una precisió de P sifres darrere de la menge, és suficient calcular els P primers térmens de la suma, agregant-se alguns térmens més per a evitar errors que apareixen en realisar càlculs en valors aproximats.

Aixina, es calcula: BN(a)=k=NN+P+1016Nk8k+a

Com esta suma solament posseïx una chicoteta cantitat de térmens, el temps que insume esta operació és insignificant per a una computadora.

Càlcul de AN(a)

[editar | editar còdic]

AN(a)=k=0N116Nk8k+a

El problema per al càlcul de AN(a) és que els primers térmens són molt grans (N sifres de base 16 abans de la menge). No obstant, de la mateixa manera que les primeres sifres darrere de la menge, no importa la part sancera, que també és gran. Per lo tant, pugues "eliminar-se" usant aritmètica modular.

Tota la dificultat es reduïx a trobar la part fraccionaria de 16Nk8k+a. Per a això realisem la divisió sancera de 16N-k per 8k+a:

q,r<8k+a, 16Nk=q(8k+a)+r

Aixina 16Nk8k+a=q+r8k+a

r8k+a és menor que 1, per lo tant, és la part fraccional de 16Nk8k+a.

I r8k+a=16Nk(mod8k+a)8k+a

Aixina, es calcula: AN(a)=k=0N116Nk(mod8k+a)8k+a.

Utilisant el método de l'exponenciación binaria, 16Nk(mod8k+a) es calcula ràpidament (en un temps d'eixecució d'O(log2(N-k)).

Conclusió

[editar | editar còdic]

Al cap i a la fi, per a obtindre els primers dígits de π base 16 (o 2), es deuen calcular els primers dígits de:

πN=4 SN(1)2 SN(4)SN(5)SN(6)

en SN(a)=k=0N116Nk(mod8k+a)8k+a+k=NN+P+1016Nk8k+a.

Vore també

[editar | editar còdic]

Referències

[editar | editar còdic]
  1. The Quest for Pi


Referències

[editar | editar còdic]