Python’ın etkileşimli modda harika bir hesap makinesi olduğu sıkça söylenenler arasında. Yerleşik “math” modülü, el tipi bilimsel veya grafik hesap makinelerinde bulabileceğiniz birçok matematiksel fonksiyonu doğrudan kullanmanıza imkân tanıyor ve karmaşık hesaplamaları çok daha kolay hâle getiriyor.
Python’da Yapabileceğiniz 6 Farklı Hesaplama
Sabitler

math modülünün kullanışlı özelliklerinden biri, matematiksel sabitlere hızlı erişim sağlıyor olması. Aynı fonksiyonları sayısal yaklaşımlarla kullanarak Python’ı bilimsel bir hesap makinesi olarak daha etkili hâle getirebilirsiniz. En bilineni pi (3.14159 vb.) sayısı olabilir. Tüm rakamları hatırlamanıza gerek yok; Python bunu sizin için yapacak.
Bir dairenin alanını hesaplamak için pi sayısını kullanalım. 12 inçlik bir pizza olduğunu ve alan olarak ne kadar pizza aldığımızı bilmek istediğimizi varsayalım.
İlk olarak math kütüphanesini içe aktaracağız:
import math
Yarıçapı bir değişkende saklayacağız. Yarıçap, dairenin çapının yarısı. Yani 12 inçlik bir pizzanın yarıçapı 6 inç.
radius = 6
Bir dairenin alanının formülü, pi sayısının yarıçapın karesiyle çarpımı olarak hesaplanır. Python’da bu şöyle yazılır:
area_circ = math.pi * radius**2
Çift yıldız işareti, Python’da üsleri nasıl temsil edeceğinizi gösterir.
Sonuç olarak, 12 inçlik yuvarlak bir pizzanın yaklaşık 113 inçlik gerçek pizza alanı var. NPR’ye göre bu nedenle daha büyük bir pizza sipariş etmelisiniz.
Python ile kullanabileceğiniz bir diğer yaygın sabit ise e veya 2.718281828459045. Bu, doğal logaritmanın tabanı ve bileşik faiz gibi üstel büyüme için yaygın olarak kullanılır.
Diyelim ki 5.000 doları 5 yıl boyunca yüzde iki faiz oranıyla sürekli olarak bileşik faizle yatırmak istiyorsunuz. Formül, anaparanın e ile çarpılması ve faiz oranının zamana çarpılmasıyla bulunur.
İşte Python’da yazılmış hâli:
principal = 5000
rate = .02
time = 5
compound_interest = principal * math.e**(rate * time)
compound_interest
Beş yılın sonunda yaklaşık 5.525 dolarınız olmuş olur. İlgili matematik fonksiyonları etkileşimli modlarda öne çıkar ve bu da Python’ın, hesap makinesi uygulamanızın yerini alabilmesinin nedenlerinden biri. Bu fonksiyonları bir komut dosyasında kullanıyorsanız, aşağıdaki gibi bir yazdırma ifadesine ihtiyacınız olacak:
print(math.pi)
Bunu etkileşimli modda yapmanıza gerek yok çünkü değerini almak için komut istemine bir ifade yazmanız yeterli. Bu makalenin geri kalanında, basitlik açısından bunu yaptığınız varsayılacak.
Trigonometrik Fonksiyonlar

Trigonometrik fonksiyonlar, bilimsel hesap makineleri için önemli bir kullanım alanı olarak öne çıkıyor; math kütüphanesi ile de kolayca hesaplanabilirler. Trigonometrik fonksiyonlar, derece yerine radyan birimini kullanır; bu da sizin daha aşina olabileceğiniz bir kavram. Ancak radyan ve derece arasında kolayca dönüştürme yapabilirsiniz.
45 dereceyi radyana dönüştürelim:
math.radians(45)
Sonuç 0.7853981633974483.
Etkileşimli bir oturumda, son doğru değerlendirilen sonucun değerini tutan “_” (alt çizgi) karakterini kullanarak bunu tekrar dereceye dönüştürebiliriz.
math.degrees(_)
Bu, bize 45 sonucunu geri verecek.
Radyan ölçümüzü, açı ölçülerini radyan cinsinden göstermek için yaygın olarak kullanılan Yunanca değişken olan “theta” adlı bir değişkende saklayalım.
theta = math.radians(45)
Sinüsü alalım:
math.sin(theta)
Kosinüsü de alabiliriz.
math.cos(theta)
Ve tanjant:
math.tan(theta)
Orijinal değerleri ters değerler veya ark değerleriyle geri alabilirsiniz. Örneğin; arksinüsü hesaplamak için:
sine = math.sine(theta)
math.asin(sine)
Arksinüsü, açının orijinal değeriyle karşılaştırın. Aynısını diğer trigonometrik oranlar ve bunların ters fonksiyonları için de yapabiliriz.
cosine = math.cos(theta)
math.acos(cosine)
tangent = math.tan(theta)
math.atan(tangent)
Logaritmik ve Üstel Fonksiyonlar

Üslü sayılar ve logaritmalarla ilgili işlemler de matematiğin bir diğer önemli alanı.
Daha önce gördüğümüz gibi çift yıldız işareti (**), bir sayıyı bir kuvvete yükseltme işlevi görmekte.
2**2
9**2
Bir sayıyı bir kuvvete yükseltmek için “pow” fonksiyonunu da kullanabilirsiniz. Örneğin 9 sayısının karesini almak için:
math.pow(9,2)
Bu, bize 81 sonucunu verecek.
Tersini elde etmek için logaritma kullanabilirsiniz. Log fonksiyonu, varsayılan olarak daha önce gördüğümüz sabit e’yi taban olarak kullanır. Logaritmayı keşfeden John Napier’in adından dolayı “Napier logaritması” olarak da bilinir.
e’nin 5. kuvvetini alalım.
math.e**5
Bu, bize 148.41315910257657 değerini verecek.
Bunu log fonksiyonuyla tersine çevirebiliriz:
math.log(148.41315910257657)
Bu, bizi 5’e geri götürecek.
Ve bu, başka taban ve üslerle de çalışacak.
9**2
math.log(81,9)
Bir sayıyı depolamak için kaç bit gerektiğini bulmanın iyi bir yolu, 2 tabanında bir logaritma kullanmak olacak:
math.log(2048,2)
Bu, bize 11 sonucunu verecek. Ayrıca kısayol olarak log2 fonksiyonu da var:
math.log2(2048)
10 tabanında logaritmayı popüler hâle getiren Henry Briggs’in adını taşıyan ortak logaritma veya Briggs logaritması için de bir kısayol mevcut. Hesap makineleri yaygınlaşmadan önce bu logaritmaların tabloları çarpma ve bölme işlemlerini hızlandırmak için kitaplarda yayınlanıyordu. Hem doğal hem de ortak logaritmaların tabloları, eski matematik ders kitaplarının arkasında ve bağımsız ciltler hâlinde bulunabiliyordu. Bu tablolar, logaritmaların bir özelliğinden yararlanıyorlardı: Logaritmaların toplanması ve çıkarılması işlemleri, bu sayıların çarpımı ve bölünmesi işlemleriyle aynı şeydi (sürgülü cetveller de bu prensiple çalışıyordu).
23 ve 42’yi logaritma kullanarak çarpalım.
math.log10(23) + math.log10(42)
Çarpımı bulmak için iki logaritmanın toplamının 10. kuvvetini alın.
10**_
Bu aynı zamanda doğal logaritmalar için de geçerli:
math.log(23) + math.log(42)
math.e**_
Bu özellik, çıkarma işlemi için de geçerli:
math.log10(966) - math.log10(42)
Bu, bize 23 sonucunu verecek. Logaritmalar, çarpma ve bölme işlemlerini büyük ölçüde basitleştirmiş olsa da hesap makinelerinin ortaya çıkışı bu işlemleri daha da basitleştirerek bunları bilim insanları dışındaki çoğu kişi için büyük ölçüde gereksiz hâle getirdi. Logaritmalar, üstel fonksiyonlarla başa çıkmak ve doğrusal regresyon uygulanabilmesini sağlamak için onları doğrusal göstermek gibi bazı alanlarda hâlâ faydalı.
Sayısal Hesaplamalar

Python math modülü ile gerçekleştirebileceğiniz başka çeşitli sayısal hesaplamalar da mevcut.
Bir sayının karekökünü “sqrt” fonksiyonu ile alabilirsiniz:
math.sqrt(81)
Bu, elbette bize 9 sonucunu verecek. Ayrıca bir sayının küp kökünü de “cbrt” fonksiyonu ile alabilirsiniz:
math.cbrt(81)
Bu, bize 4.326748710922225’lik bir ondalık yaklaşım verecek.
“pow” fonksiyonu, “**” operatörüne benzer şekilde bir sayıyı bir kuvvete yükseltmekte.
math.pow(3,2)
Bu, bize 3’ün karesini alarak 9 sonucunu verecek. Ayrıca bir üssü kesirli bir sayıya yükselterek n’inci kökleri de alabilirsiniz.
math.pow(3,1/2)
Bu aynı zamanda 3’ün karesini alma etkisine de sahip olacak. Bu özellik, 3’ten büyük kökleri almak için kullanışlı. 1024 sayısının 8. kökünü almak için:
math.pow(1024,1/8)
Bu, başka bir ondalık yaklaşım sağlar. Kesin bir cevap istiyorsanız SymPy kütüphanesi gibi bir bilgisayar cebir sistemine ihtiyacınız olacak.
Diğer bazı kullanışlı işlevler arasında tavan ve taban işlevleri bulunur. Tavan işlevi bir sayıyı en yakın tam sayıya yuvarlarken, taban işlevi ise en düşük tam sayıya yuvarlar.
math.ceiling(42.5)
Bu, bize 43 sonucunu döndürecek. Bunu tabanda deneyelim:
math.floor(42.5)
Bu, bize 42 sonucunu döndürecek.
Bu, Python’a yerleşik olan ve kalan olmadan tam bölme işlemini gerçekleştiren “//” (çift eğik çizgi) operatörüne benzer (ve bu aynı zamanda Python’da varsayılan bölme davranışı olarak kullanılırdı).
Kalan fonksiyonu, aynı zamanda argümanlarının kalanını da döndürecek.
Örneğin 5’in 4’e bölümünden kalanı döndürmek için:
math.remainder(5,4)
Ondalık kısmı tamamen kaldırmak için “trunc” fonksiyonunu kullanın.
math.trunc(42.5)
Bu, bize 42 sonucunu döndürecek.
Toplamlar ve Çarpımlar

Bir dizi veya veri grubu (tuple) içindeki elemanların toplamını döndürmek için “fsum” fonksiyonunu kullanın:
math.fsum([2.5,4,5])
Bu da 11.5 sonucunu verir.
Bir tuple veya dizideki sayıların çarpımını almak için “prod” fonksiyonunu kullanın:
math.prod([2.5,4,5]
Bu, bize 50 sonucunu döndürecek.
Tümleşik (Combinatorial) Fonksiyonlar

Tümleşik fonksiyonlar, nesneleri hızlı bir şekilde saymak için kullanışlı ve olasılık teorisi ile ayrık matematikte yaygın olarak kullanılır.
Faktöriyel, “!” sembolü ile gösterilir ve bir sayıdan başlayarak 1’e kadar olan tüm pozitif tam sayıların çarpımıyla hesaplanır. Ayrıca 0’ın faktöriyeli 1 olarak kabul edilir.
Örneğin 5 faktöriyel veya 5! ifadesinin karşılığı bu şekilde: 5 * 4 * 3 * 2 * 1.
5!’i hesaplamak için “factorial” fonksiyonunu kullanın:
math.factorial(5)
Permütasyonlar, belirli bir sıra gerektiğinde kombinasyonları saymanın bir yolu. Diyelim ki; sekiz kitabı bir rafa üç kitaplık belirli bir sıraya göre yerleştirmek istiyorsunuz. Bunun için “perm” fonksiyonunu kullanabilirsiniz:
math.perm(8,3)
Bu, bize 336 sonucunu verecek.
Kombinasyonlar benzerlik taşısa da sıranın önemli olmadığı durumlarda kullanılıyor. İyi karıştırılmış 52 kartlık bir desteden 5 kartı kaç farklı şekilde çekebileceğinizi saymak için “comb” işlevini kullanabilirsiniz.
math.comb(52,5)
Bu, 2 milyondan fazla olası kart kombinasyonu anlamına gelir; ki bu da pokerde kaybetmenin birçok yolu olduğu anlamına gelmekte.
Özetle Python’daki “math” kütüphanesi, hesaplamalarınızı daha kolay ve eğlenceli hâle getirecek birçok fonksiyon içeriyor. Gelişmiş bir hesap makinesi olarak bile olsa dilin bu denli popüler olması şaşırtıcı değil.
Kaynak: www.howtogeek.com