Riyazi funksiyalar üçün Python-un standart modulu olan riyaziyyatdan istifadə edərək triqonometrik funksiyaları (sin, cos, tan) və tərs triqonometrik funksiyaları (arcsin, arccos, arctan) hesablaya bilərsiniz.
Aşağıdakı məzmunlar burada nümunə kodlarla izah olunur.
- Pi (3.1415926..):
math.pi
- Bucaq çevrilməsi (radian, dərəcə):
math.degrees()
,math.radians()
- Sinus, tərs sinus:
math.sin()
,math.asin()
- kosinus, tərs kosinus:
math.cos()
,math.acos()
- Tangens, Tərs tangens:
math.tan()
,math.atan()
,math.atan2()
- Aşağıdakı fərqlər:
math.atan()
,math.atan2()
Pi (3.1415926..):math.pi
Pi riyaziyyat modulunda sabit kimi verilir. Aşağıdakı kimi ifadə edilir.math.pi
import math
print(math.pi)
# 3.141592653589793
Bucaq çevrilməsi (radian, dərəcə):math.degrees(),math.radians()
Riyaziyyat modulunda triqonometrik və tərs triqonometrik funksiyalar bucaq vahidi kimi radyandan istifadə edir.
Radian (qövs dərəcəsi metodu) və dərəcə (dərəcə üsulu) arasında çevirmək üçün math.degrees() və math.radians() istifadə edin.
Math.degrees() radiandan dərəcəyə, math.radians() isə dərəcələrdən radana çevirir.
print(math.degrees(math.pi))
# 180.0
print(math.radians(180))
# 3.141592653589793
Sinus, tərs sinus:math.sin(),math.asin()
Sinini (sin) tapmaq funksiyası math.sin(), tərs sinüsü (arcsin) tapmaq funksiyası isə math.asin() funksiyasıdır.
Budur dərəcələri radana çevirmək üçün math.radians() istifadə edərək 30 dərəcə sinusunu tapmaq nümunəsi.
sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994
30 dərəcənin sinusu 0,5-dir, lakin səhv var, çünki irrasional ədəd olan pi dəqiq hesablana bilmir.
Əgər müvafiq rəqəm sayına yuvarlaqlaşdırmaq istəyirsinizsə, round() funksiyasından və ya format() metodundan və ya format() funksiyasından istifadə edin.
Nəzərə alın ki, round() funksiyasının qaytarılan dəyəri rəqəmdir (int və ya float), lakin format() funksiyasının qaytarılması sətirdir. Əgər ondan sonrakı hesablamalar üçün istifadə etmək istəyirsinizsə, round() funksiyasından istifadə edin.
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() funksiyası ikinci arqument kimi onluq yerlərin sayını təyin edir. Qeyd edək ki, bu, ciddi şəkildə yuvarlaqlaşdırma deyil. Təfərrüatlar üçün aşağıdakı məqaləyə baxın.
Format() metodu və format() funksiyası formatlama spesifikasiyası sətirində onluq yerlərin sayını təyin edir. Təfərrüatlar üçün aşağıdakı məqaləyə baxın.
Əgər müqayisə etmək istəyirsinizsə, math.isclose() funksiyasından da istifadə edə bilərsiniz.
print(math.isclose(sin30, 0.5))
# True
Eynilə, burada 0,5-in tərs sinüsünün tapılması nümunəsi verilmişdir. math.asin() math.degrees() ilə dərəcələrə çevrilən radyanları qaytarır.
asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996
print(round(asin05, 3))
# 30.0
kosinus, tərs kosinus:math.cos(),math.acos()
Kosinusu (cos) tapmaq funksiyası math.cos(), tərs kosinusu (arc kosinusu, arccos) tapmaq funksiyası isə math.acos() funksiyasıdır.
Burada 60 dərəcə kosinusu və 0,5 tərs kosinusu tapmaq nümunəsi verilmişdir.
print(math.cos(math.radians(60)))
# 0.5000000000000001
print(math.degrees(math.acos(0.5)))
# 59.99999999999999
Əgər uyğun rəqəmə yuvarlaqlaşdırmaq istəyirsinizsə, sinus ilə olduğu kimi round() və ya format() funksiyalarından istifadə edə bilərsiniz.
Tangens, Tərs tangens:math.tan(),math.atan(),math.atan2()
Tangensi tapmaq üçün funksiya (tan) math.tan(), tərs tangensi tapmaq funksiyası (arctan) isə math.atan() və ya math.atan2().
Math.atan2() daha sonra təsvir edilmişdir.
45 dərəcə tangensi və 1 dərəcə tərs tangensi tapmaq nümunəsi aşağıda göstərilmişdir.
print(math.tan(math.radians(45)))
# 0.9999999999999999
print(math.degrees(math.atan(1)))
# 45.0
math.atan() və math.atan2() arasındakı fərq
Həm math.atan(), həm də math.atan2() tərs tangensi qaytaran funksiyalardır, lakin onlar arqumentlərin sayında və qaytarılan qiymətlərin diapazonunda fərqlənirlər.
math.atan(x) bir arqumentə malikdir və arktan(x)-ı radyanla qaytarır. Qaytarma dəyəri -pi \ 2 və pi \ 2 (-90 ilə 90 dərəcə) arasında olacaq.
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
Yuxarıdakı nümunədə math.inf sonsuzluğu təmsil edir.
riyaziyyat.atan2(y, x) iki arqumentə malikdir və radyanla arktan(y \ x) qaytarır. Bu bucaq vektorun mənşədən koordinatlara (x, y) qütb koordinat müstəvisində x oxunun müsbət istiqaməti ilə etdiyi bucaq (ayilma) və qaytarılan qiymət -pi və pi (-180) arasındadır. 180 dərəcəyə qədər).
İkinci və üçüncü kvadrantlardakı bucaqları da düzgün əldə etmək mümkün olduğundan, qütb koordinat müstəvisini nəzərdən keçirərkən math.atan2() math.atan()-dan daha uyğundur.
Qeyd edək ki, arqumentlərin sırası x, y deyil, y, x-dir.
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
Yuxarıdakı nümunədə olduğu kimi, x oxunun mənfi istiqaməti (y sıfır və x mənfidir) pi (180 dərəcə), lakin y mənfi sıfır olduqda -pi (-180 dərəcə) olur. İşarəni ciddi şəkildə idarə etmək istəyirsinizsə, diqqətli olun.
print(math.degrees(math.atan2(-0.0, -1)))
# -180.0
Mənfi sıfırlar aşağıdakı əməliyyatların nəticəsidir
print(-1 / math.inf)
# -0.0
print(-1.0 * 0.0)
# -0.0
Tam ədədlər mənfi sıfırlar kimi qəbul edilmir.
print(-0.0)
# -0.0
print(-0)
# 0
Həm x, həm də y sıfır olduqda belə, nəticə işarədən ası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
Nəticənin işarəsinin mənfi sıfırlardan asılı olaraq dəyişdiyi başqa nümunələr də var, məsələn, math.atan2(), eləcə də math.sin(), math.asin(), math.tan() və math.atan() .
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
Qeyd edək ki, indiyə qədərki nümunələr proqramı CPython-da işlətməyin nəticələridir. Nəzərə alın ki, digər tətbiqlər və ya mühitlər mənfi sıfırları fərqli şəkildə idarə edə bilər.