PI sayısı kaçtır desem hemen 3.14 diyenler çıkacaktır, işin gırgırında olanlar ise pi'yi 3 alsak olur mu da diyebilir. Biraz daha bilgili olanlar ise 3.1415926... gibi daha çok basamak sayabilir. Biraz Java bilenler ya da yazılarımı takip edenler, Java'da Math sınıfı içinde pi sayısı zaten tanımlı da diyebilirler. hepsi de haklıdır. Peki pi sayısı ile ilgili daha fazla detaya ya da küsürata ihtiyacımız var mı? Aslında yok...
Pi sayısı, özellikle programcılar için büyük bir araştırma konusudur çünkü son basamağına kadar PI sayısını hesaplayabilecek güçte bir bilgisayar ya da algoritma bugüne kadar geliştirilemedi. Sırf Pi sayısının daha fazla küsüratını hesaplayabilmek için kurulmuş ekipler ve fonlar var. Bildiğim kadarıyla bugüne kadar Pi sayısına dair hesaplanabilmiş maksimum küsürat (digit) sayısı (ya da tahmini) 2019 yılında App Developer Magazine'in paylaştığı bilgiye göre 31.4 trilyon.
Pi Sayısını Hesaplama Formülü
Yani kısaca:
pi/4 = 1 - 1/3 + 1/5 - 1/7 + ...?
Hadi şimdi bu algoritmayı biraz kodlayalım...
Her 1-10-100-1000-10.000-100.000-1.000.000 ve 10.000.000. denemede de mevcut pi sayısının kaça yakınsadığını kontrol edelim.
Kodları en kısa ya da en performanslı şekilde yazmak yerine en açık ve anlaşılır şekilde yazmaya çalışacağım çünkü performans kaygısı güdecek düzeyde bir hesaplama yapmayacağız. İnternette çok daha kısa yazılmış kodlar da bulabilirsiniz, kendi yazdığım kodlara benzer bir çalışma en azından ben göremedim.
Kodlar:
double toplam=0;
int sayac=1;
for(double i=1; i<20000001; i=i+2)
{
if(sayac%2 == 1)
toplam += (double)1/i;
else
toplam -= (double)1/i;
sayac++;
if (sayac==1 || sayac==10 || sayac==100 || sayac==1000 || sayac==10000 || sayac==100000 || sayac==1000000 || sayac==10000000)
System.out.println(sayac+". Deneme --> PI Sayısı=" + toplam*4);
}
Çıktı:
10. Deneme --> PI Sayısı=3.2523659347188767
100. Deneme --> PI Sayısı=3.1516934060711166
1000. Deneme --> PI Sayısı=3.142593654340044
10000. Deneme --> PI Sayısı=3.1416926635905345
100000. Deneme --> PI Sayısı=3.1416026536897204
1000000. Deneme --> PI Sayısı=3.1415936535907742
10000000. Deneme --> PI Sayısı=3.1415927535898014