Python’un matematiksel fonksiyonlar için standart modülü olan matematiği kullanarak trigonometrik fonksiyonları (sin, cos, tan) ve ters trigonometrik fonksiyonları (arcsin, arccos, arctan) hesaplayabilirsiniz.
Aşağıdaki içerikler burada örnek kodlarla açıklanmıştır.
- Pi (3.1415926..):
math.pi
- Açı dönüşümü (radyan, derece):
math.degrees()
,math.radians()
- Sinüs, Ters sinüs:
math.sin()
,math.asin()
- kosinüs, ters kosinüs:
math.cos()
,math.acos()
- Teğet, Ters teğet:
math.tan()
,math.atan()
,math.atan2()
- Aşağıdaki farklılıklar:
math.atan()
,math.atan2()
Pi (3.1415926..):math.pi
Pi, matematik modülünde bir sabit olarak sağlanır. Aşağıdaki gibi ifade edilir.math.pi
import math
print(math.pi)
# 3.141592653589793
Açı dönüşümü (radyan, derece):math.degrees(),math.radians()
Matematik modülündeki trigonometrik ve ters trigonometrik fonksiyonlar, açı birimi olarak radyanı kullanır.
Radyan (yay derecesi yöntemi) ve derece (derece yöntemi) arasında dönüştürme yapmak için math.degrees() ve math.radians() kullanın.
Math.degrees(), radyandan dereceye dönüştürür ve math.radians(), dereceden radyana dönüştürür.
print(math.degrees(math.pi))
# 180.0
print(math.radians(180))
# 3.141592653589793
Sinüs, Ters sinüs:math.sin(),math.asin()
Sinüs (sin) bulma işlevi matematik.sin()’dir ve ters sinüs (arcsin) bulma işlevi matematik.asin()’dir.
Dereceleri radyana dönüştürmek için math.radians() kullanarak 30 derecenin sinüsünü bulma örneği.
sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994
30 derecenin sinüsü 0,5’tir, ancak bir hata vardır çünkü irrasyonel bir sayı olan pi doğru hesaplanamaz.
Uygun sayıda basamağa yuvarlamak istiyorsanız, round() işlevini veya format() yöntemini veya format() işlevini kullanın.
Round()’un dönüş değerinin bir sayı (int veya float) olduğuna, ancak format()’ın dönüş değerinin bir dize olduğuna dikkat edin. Sonraki hesaplamalar için kullanmak istiyorsanız, round() kullanın.
print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# <class 'float'>
print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# <class 'str'>
print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# <class 'str'>
round() işlevi, ikinci argümanı olarak ondalık basamak sayısını belirtir. Bunun kesinlikle yuvarlama olmadığını unutmayın. Ayrıntılar için aşağıdaki makaleye bakın.
format() yöntemi ve format() işlevi, biçimlendirme belirtimi dizesindeki ondalık basamak sayısını belirtir. Ayrıntılar için aşağıdaki makaleye bakın.
Karşılaştırmak isterseniz, math.isclose()’u da kullanabilirsiniz.
print(math.isclose(sin30, 0.5))
# True
Benzer şekilde, burada 0,5’in ters sinüsünü bulma örneği verilmiştir. math.asin(), math.degrees() ile dereceye dönüştürülen radyanları döndürür.
asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996
print(round(asin05, 3))
# 30.0
kosinüs, ters kosinüs:math.cos(),math.acos()
Kosinüsü (cos) bulma işlevi matematik.cos()’dur ve ters kosinüsü (yay kosinüsü, arkkos) bulma işlevi matematik.acos()’dur.
İşte 60 derecenin kosinüsünü ve 0,5’in ters kosinüsünü bulmanın bir örneği.
print(math.cos(math.radians(60)))
# 0.5000000000000001
print(math.degrees(math.acos(0.5)))
# 59.99999999999999
Uygun basamağa yuvarlamak isterseniz, sinüste olduğu gibi round() veya format() kullanabilirsiniz.
Teğet, Ters teğet:math.tan(),math.atan(),math.atan2()
Tanjantı (tan) bulma işlevi matematik.tan()’dır ve ters tanjantı (arctan) bulma işlevi matematik.atan() veya mat.atan2()’dir.
Math.atan2() daha sonra açıklanacaktır.
45 derecenin tanjantını ve 1 derecenin ters tanjantını bulma örneği aşağıda gösterilmiştir.
print(math.tan(math.radians(45)))
# 0.9999999999999999
print(math.degrees(math.atan(1)))
# 45.0
math.atan() ve math.atan2() arasındaki fark
Hem math.atan() hem de math.atan2(), ters tanjantı döndüren işlevlerdir, ancak bağımsız değişken sayısı ve dönüş değerleri aralığı bakımından farklılık gösterirler.
math.atan(x) bir bağımsız değişkene sahiptir ve radyan cinsinden arctan(x) değerini döndürür. Dönüş değeri -pi\2 ile pi\2 (-90 ila 90 derece) arasında olacaktır.
print(math.degrees(math.atan(0)))
# 0.0
print(math.degrees(math.atan(1)))
# 45.0
print(math.degrees(math.atan(-1)))
# -45.0
print(math.degrees(math.atan(math.inf)))
# 90.0
print(math.degrees(math.atan(-math.inf)))
# -90.0
Yukarıdaki örnekte, math.inf, sonsuzluğu temsil eder.
math.atan2(y, x) iki bağımsız değişkene sahiptir ve radyan cinsinden arctan(y \ x) değerini döndürür. Bu açı, orijinden (x, y) koordinatlarına vektörün kutupsal koordinat düzleminde x ekseninin pozitif yönü ile yaptığı açıdır (sapma) ve döndürülen değer -pi ile pi (-180 arasındadır) 180 dereceye kadar).
İkinci ve üçüncü çeyreklerdeki açılar da doğru bir şekilde elde edilebildiğinden, kutupsal koordinat düzlemi göz önüne alındığında mat.atan2(), mat.atan()’dan daha uygundur.
Argümanların sırasının x, y değil y, x olduğuna dikkat edin.
print(math.degrees(math.atan2(0, 1)))
# 0.0
print(math.degrees(math.atan2(1, 1)))
# 45.0
print(math.degrees(math.atan2(1, 0)))
# 90.0
print(math.degrees(math.atan2(1, -1)))
# 135.0
print(math.degrees(math.atan2(0, -1)))
# 180.0
print(math.degrees(math.atan2(-1, -1)))
# -135.0
print(math.degrees(math.atan2(-1, 0)))
# -90.0
print(math.degrees(math.atan2(-1, 1)))
# -45.0
Yukarıdaki örnekte olduğu gibi, x ekseninin negatif yönü (y sıfırdır ve x negatiftir) pi’dir (180 derece), ancak y negatif sıfır olduğunda, -pi’dir (-180 derece). Tabelayı kesinlikle işlemek istiyorsanız dikkatli olun.
print(math.degrees(math.atan2(-0.0, -1)))
# -180.0
Negatif sıfırlar aşağıdaki işlemlerin sonucudur
print(-1 / math.inf)
# -0.0
print(-1.0 * 0.0)
# -0.0
Tamsayılar, negatif sıfırlar olarak değerlendirilmez.
print(-0.0)
# -0.0
print(-0)
# 0
Hem x hem de y sıfır olduğunda bile sonuç işarete bağlıdır.
print(math.degrees(math.atan2(0.0, 0.0)))
# 0.0
print(math.degrees(math.atan2(-0.0, 0.0)))
# -0.0
print(math.degrees(math.atan2(-0.0, -0.0)))
# -180.0
print(math.degrees(math.atan2(0.0, -0.0)))
# 180.0
Sonucun işaretinin negatif sıfırlara bağlı olarak değiştiği başka örnekler de vardır, örneğin math.atan2() ve math.sin(), math.asin(), math.tan() ve math.atan() gibi .
print(math.sin(0.0))
# 0.0
print(math.sin(-0.0))
# -0.0
print(math.asin(0.0))
# 0.0
print(math.asin(-0.0))
# -0.0
print(math.tan(0.0))
# 0.0
print(math.tan(-0.0))
# -0.0
print(math.atan(0.0))
# 0.0
print(math.atan(-0.0))
# -0.0
print(math.atan2(0.0, 1.0))
# 0.0
print(math.atan2(-0.0, 1.0))
# -0.0
Şimdiye kadarki örneklerin, programı CPython’da çalıştırmanın sonuçları olduğunu unutmayın. Diğer uygulamaların veya ortamların negatif sıfırları farklı şekilde işleyebileceğini unutmayın.