Kodlama yaparken sık sık matematiksel işlemlerden(en azından ben, genellikle hesap-kitap otomasyonları hazırlıyorum da) faydalanırız. Diğer programlama dilleri gibi Python’da da basit hesaplama operatörleri vardır. Çarpma için * , modül alma için ve yuvarlama için kullanılır.
Periyodik hareket çalışması veya elektrik devrelerini taklit etmek gibi belirli görevleri yerine getirmek için bir program yazıyorsanız, karmaşık sayılar kadar trigonometrik işlevlerle çalışmanız gerekecektir. Bu işlevleri doğrudan kullanamazsınız, ancak önce iki matematiksel modül ekleyerek bunlara erişebilirsiniz. Bu modüller math ve cmath dir.
İlki, gerçek sayılar için hiperbolik, trigonometrik ve logaritmik işlevlere erişmenizi sağlarken, ikincisi karmaşık sayılarla çalışmanıza izin verir. Bu yazıda, bu modüllerin sunduğu tüm önemli işlevleri gözden geçireceğim. Açıkça belirtilmediği sürece, döndürülen tüm değerler yüzdür.
Aritmetik Fonksiyonlar
Bu fonksiyonlar yuvarlama ve mutlak değer alma gibi bir dizi işlem gerçekleştirirler.
fonksiyonu x’den büyük veya eşit en küçük tam sayıyı verir. Benzer şekilde fonksiyonu ise x’den küçük veya eşit en büyük tam sayıyı verir. ise x’in mutlak değerini verir.Ayrıca
fonksiyonu ile bir sayının faktöriyelini alabilirsiniz. Bir faktöriyel, bir tamsayının ve ondan daha küçük olan tüm pozitif tamsayıların çarpımıdır. Kombinasyonlar ve permütasyonlar ile uğraşırken yoğun şekilde kullanılır. Sinüs ve kosinüs fonksiyonlarının değerini hesaplamak için de kullanılabilir.import math
def sinus(x):
carpan = 1
sonuc = 0
for i in range(1,20,2):
sonuc += carpan*pow(x,i)/math.factorial(i)
carpan *= -1
return sonuc
sinus(math.pi/2) # ciktisi 1.0 olacaktır
sinus(math.pi/4) # ciktisi 0.7071067811865475 olacaktır
math modülünde bulunan bir diğer faydalı fonksiyon ise
fonksiyonudur. Bu fonksiyon en büyük ortak böleni yani EBOB i verecektir. x ve y eğer sıfırdan farklı iki tam sayı ise bu fonksiyon bu iki tamsayıyı bölen en büyük tam sayıyı verecektir. Bu fonksiyonu kullanarak aşağıdaki formül yardımıyla en küçük ortak katı yani EKOK u da rahatlıkla bulabilirsiniz:gcd(a, b) x lcm(a, b) = a x b
Python’un sunduğu aritmetik işlemlerden bir kaçını şöyle sıralayabiliriz:
import math
math.ceil(1.001) # ciktisi 2
math.floor(1.001) # ciktisi 1
math.factorial(10) # ciktisi 3628800
math.gcd(10,125) # ciktisi 5
math.trunc(1.001) # ciktisi 1
math.trunc(1.999) # ciktisi 1
Trigonometrik Fonksiyonlar
Bu fonksiyonlar bir üçgenin açılarını kenar uzunluklarıyla ilişkilendirirler. Üçgen çalışmalar, ses, ışık ve manyetik dalgalar gibi periyodik olayların modellenmesinde trigonometrik fonksiyonlar kullanılır. Pythonda trigonometrik fonksiyonları kullanırken açı olarak radyan kullanmanız gerektiğini de unutmayın.
, ve fonksiyonlarını kullanarak hesaplamaları rahatlıkla yapabilirsiniz. Fakat , ve için ne yazık ki direk hesaplama yapan bir fonksiyon bulunmamaktadır.Ayrıca trigonometrik fonksiyonların terslerini sağlıyor bize. Ters trigonometrik fonksiyonlarımız şu şekildedir:
, vePisagor teoremine aşina mısınız? Pisagor, hipotenüsün karesinin diğer iki kenarın karelerinin toplamına eşit olduğunu belirtmektedir. Hipotenüs aynı zamanda dik açılı üçgenin en büyük tarafıdır. Matematik modülü hipotenüs uzunluğunu hesaplamak için
fonksiyonuna sahiptir.import math
math.sin(math.pi/4) # ciktisi 0.7071067811865476
math.cos(math.pi) # ciktisi -1.0
math.tan(math.pi/6) # ciktisi 0.5773502691896257
math.hypot(12,5) # ciktisi 13.0
math.atan(0.5773502691896257) # ciktisi 0.5235987755982988
math.asin(0.7071067811865476) # ciktisi 0.7853981633974484
Hiperbolik Fonksiyonlar
Hiperbolik fonksiyonlar, daire yerine bir hiperbola dayanan trigonometrik fonksiyonların analogudur. Trigonometride (cos b , sin b ) noktası bir birim çemberin noktalarını temsil eder. Hiperbolik fonksiyonlar da ise (cosh b , sinh b ) noktası bir eşkenar hiperbolün sağ yarısını oluşturan noktaları temsil etmektedir.
Trigonometrik fonksiyonlarda olduğu benzer fonksiyonlar hiperbolik fonksiyonlar için de geçerlidir:
, , , , veimport math
math.sinh(math.pi) # ciktisi 11.548739357257746
math.cosh(math.pi) # ciktisi 11.591953275521519
math.cosh(math.pi) # ciktisi 0.99627207622075
math.asinh(11.548739357257746) # ciktisi 3.141592653589793
math.acosh(11.591953275521519) # ciktisi 3.141592653589793
math.atanh(0.99627207622075) # ciktisi 3.141592653589798
Üstel ve Logaritmik Fonksiyonlar
Muhtemelen program geliştirirken trigonometrik veya hiperbolikten ziyade üstel ve logaritmik fonksiyonlarla uğraşacaksınız. Neyse ki, matematik modülü bize logaritma hesaplamak için bir çok fonksiyon sağlıyor.
Logaritma a tabanında x değerini bulmak için
kullanmanız yeterli olacaktır. Eğer taban değerini boş bırakırsanız x’in logaritması e tabanına göre alınacaktır. Burada e, değeri 2.71828182… olan matematiksel sabit bir sayıyı ifade etmektedir. Bu ifadeyi yazarak kullanabilirsiniz. Ayrıca pi sayısını da yazarak kullanabilirsiniz.2 veya 10 tabanında logaritmik işlemlerde
ve in cevapları ve a göre gerçeğe daha yakındır. Unutmayın ki bu sadece 2 ve 10 tabanı için böyle özel fonksiyonlar mevcut. gibi bir fonksiyon yoktur. 3 tabanında logaritma almak için şeklinde standart kullanıma devam etmelisiniz. ile x üzeri y’yi de rahatlıkla hesaplayabilirsiniz. Fakat üst alma için ifadesinden de faydalanabilirsiniz.Karekök almak içinse
fonksiyonu vardır. Fakat az önce göstermiş olduğum fonksiyonu ile de karekökü şeklinde rahatlıkla alabilirsiniz.import math math.exp(5) # ciktisi 148.4131591025766 math.e**5 # ciktisi 148.4131591025765 math.log(148.41315910257657) # ciktisi 5.0 math.log(148.41315910257657, 2) # ciktisi 7.213475204444817 math.log(148.41315910257657, 10) # ciktisi 2.171472409516258 math.log(1.0000025) # ciktisi 2.4999968749105643e-06 math.log1p(0.0000025) # ciktisi 2.4999968750052084e-06 math.pow(12.5, 2.8) # ciktisi 1178.5500657314767 math.pow(144, 0.5) # ciktisi 12.0 math.sqrt(144) # ciktisi 12.0
Karmaşık Sayılar
Karmaşık sayı, bir gerçel bir de sanal kısımdan oluşan bir nesnedir. x ve y sayıları gerçek olursa karmaşık sayılar şu biçimde gösterilirler:
z=x+iy
Genel olarak karmaşık sayılar için “z” harfi kullanılır. i^2 = -1 özelliğini sağlayan sanal birime i denir. Kimi zaman özellikle elektrik mühendisliğinde i yerine, j kullanılır.
Burada x gerçek kısım iken iy sanal kısmı oluşturuyor. Karmaşık sayılar bu şekilde gösterildiği gibi kutupsal koordinatlar şeklinde de gösterilebilirdi. Yani aynı zamanda r modülünde fi faz açısına sahip olacak şekilde bir kombinasyonla da gösterilebilir.
r değeri
fonksiyonu ile bulunabilirken fi açısı ise ile rahatlıkla elde edilebilir. Düzlemsel formdaki karmaşık sayıları fonksiyonu ile kutupsal forma çevirebilirseniz. Bu fonksiyon size şeklinde bir ikili verecektir.Benzer şekilde kutupsal formdan düzlemsel forma geçmek içinse
fonksiyonu kullanılır. Bu fonksiyon ise şöyle bir dönüş sağlayacaktır:import cmath cmath.polar(complex(1.0, 1.0)) # ciktisi (1.4142135623730951, 0.7853981633974483) cmath.phase(complex(1.0, 1.0)) # ciktisi 0.7853981633974483 abs(complex(1.0, 1.0)) # ciktisi 1.4142135623730951 cmath.sqrt(complex(25.0, 25.0)) # ciktisi (5.49342056733905+2.2754493028111367j) cmath.cos(complex(25.0, 25.0)) # ciktisi (35685729345.58163+4764987221.458499j)
Karmaşık sayılar sinyal analizi, akışkan dinamiği ve A/C elektrik devrelerinde yoğun bir şekilde kullanılır. Eğer bunlardan biri üzerine çalışıyorsanız cmath kütüphanesi sizi kesinlikle mutlu edecektir.
Bitti
Pythonda math ve cmath kütüphanelerinden, kullanım alanlarından ve ilgili fonksiyonların nasıl kullanıldığını güzelce anlatmış olduk.Umarım ki işinize yarar.. Lütfen yorumlarınızı benden esirgemeyin.