Pi, iliti Ludolfov broj.
Evo primera izracunavanja brojeva Pi i e, primenom Excel-a.
Radi se o Excel 2000 WorkBook-u, spakovanom u ZIP file, u attachment-u.
Isti sam napisao 2002. dok sam pohadjao "Obuku za sticanje diplome
o poznavanju osnovnog rada na racunaru", koji samo morao da zavrsim
zbog posla. Dok je profesor davio ostale, ja sam vezbao slepo kucanje
i pravio slicne stvarcice.
Jedan kolega je pre 10 dana u forumu Art of Programming trazio
pomoc oko seminarskog zadakta slicne tematike.
Uz malo truda i pregleda inicijalizacionih vrednosti i formula iz WorkSheet-ova
lako se sve ovo moze pretociti u C++.
Citat:
NAPOMENA:
Opcija Iteration u Tools/Options/Calculation
treba biti ukljucena, dok u boksove
Maximum Iterations i Maximum Change treba
upisati vrednosti 2000, i 1e-20, respektivno
Za inicijalizaciju izracunavanja treba napisati start u naznacemin poljima,
te pritisnuti ENTER.
Postupak koji se koristi je dosta spor, tj. za n cifara je potrebno k*n*n vremena. Stoga je
neupotrebljiv za izracunavanje velikog broja decimala.
Ja sam ranije citao o izracunavanju broja Pi, i koliko mi je poznato, postupak koji najbrze
konvergira ka Pi UPETOSTRUCUJE broj tacnih cifara sa svakom iteracijom, dok se za
postavljanje rekorda koristi najefikasniji postupak, koja ucetvorostrucuje broj
tacnih cifara sa svakom iteracijom.
Oba ova postupka su ukljucena u ZIP attachment.
Kako namestiti program koji racuna veliki broj tacnih deicmala broja Pi?
Potrebno je implementirati date formule. Pored toga, potrebno je realizovati
multiprecision izracunavanje.
Sabiranje i oduzimanje se lako realizuju.
Mnozenje se ostvaruje primenom DFT(FFT), IDFT i konvolucije.
Delenje se ostvaruje primenom iterativnih formula, koje konvergiraju kvadratno:
Code:
x=1/y , y< sqrt(2)
x(0)=? neka vrednost, ne znam koja je najbolja
x(k+1)= 2*x(k)-x(k)*x(k)*y
Korenovanje se ostvaruje primenom iterativnih formula, koje konvergiraju kvadratno:
Code:
x=sqrt(y), y>=0)
x(0)=y/2
x(k+1)=1/2*(x(k)+y/x(k))
ili
x=1/sqrt(y), y<sqrt(2)
x(0)=? neka vrednost, ne znam koja je najbolja
x(k+1)=x(k)*(3-y*x(k)*x(k))/2
I, koliko znam, 2002. je bilo poznato najmanje 100 milijardi tacnih decimala broja Pi,
a danas ne znam.
Za prakticna izracunavanja je najzgodnija formula Pi~=355/113=3,141592920...
O_o