Python-ийн математик функцүүдийн стандарт модулийг ашиглан та экспоненциал болон логарифм функцийг (натурал логарифм, энгийн логарифм, хоёртын логарифм) тооцоолж болно.
Дараахыг жишээ кодын хамт энд тайлбарлав.
- Натурал логарифмын суурь (Napier тоо):
math.e
- Эрчим хүч::
**
оператор,pow()
,math.pow()
- Квадрат үндэс (үндэс):
math.sqrt()
- Экспоненциал функц (байгалийн экспоненциал функц):
math.exp()
- логарифм функц:
math.log()
,math.log10()
,math.log2()
Натурал логарифмын суурь (Napier тоо):math.e
Натурал логарифмын суурь (Napier тоо) нь математикийн модульд тогтмол хэлбэрээр өгөгдсөн бөгөөд math.e гэж тэмдэглэнэ.
import math
print(math.e)
# 2.718281828459045
Эрчим хүч: ** оператор, pow(), math.pow():**оператор,pow(),math.pow()
Чадлыг тооцоолохын тулд ** оператор, суулгасан функц pow(), эсвэл math.pow()-ийн аль нэгийг ашиглана уу.
x-ийн y-квадратыг дараах байдлаар авна
x**y
pow(x, y)
math.pow(x, y)
print(2**4)
# 16
print(pow(2, 4))
# 16
print(math.pow(2, 4))
# 16.0
math.pow() нь аргументыг хөвөгч цэгийн төрөл болгон хувиргадаг. Нөгөөтэйгүүр, Python-ийн суулгасан функц pow() нь төрөл тус бүрээр тодорхойлсон __pow()__-г ашигладаг.
Жишээлбэл, pow() нь нийлмэл төрлүүдийг аргумент болгон зааж өгөхийг зөвшөөрдөг боловч math.pow() нь төвөгтэй төрлүүдийг хөвөгч төрлүүдэд хөрвүүлэх боломжгүй тул алдаа гарна.
print(pow(1 + 1j, 2))
# 2j
# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float
Python-д суулгасан pow() функц нь мөн гурав дахь аргумент болох pow(x, y, z)-ийг зөвшөөрдөг бөгөөд энэ нь z-ийн үлдэгдлийг (үлдэгдэл) х-ийн y-цэгт буцаана. Энэ нь pow(x, y) % z-тэй ижил тооцоо боловч pow(x, y, z) нь илүү үр дүнтэй байдаг.
print(pow(2, 4, 5))
# 1
Квадрат үндэс (үндэс):math.sqrt()
Квадрат язгуурыг (язгуур) ** эсвэл math.sqrt() ашиглан **0.5 болгож тохируулж болно.
print(2**0.5)
# 1.4142135623730951
print(math.sqrt(2))
# 1.4142135623730951
print(2**0.5 == math.sqrt(2))
# True
math.pow()-ын нэгэн адил math.sqrt() нь аргументуудыг боловсруулахад хөвөгч цэгийн төрөл болгон хувиргадаг тул хөвөгч төрөл рүү хөрвүүлэх боломжгүй төрлийг зааж өгвөл TypeError гарч ирнэ.
print((-3 + 4j)**0.5)
# (1.0000000000000002+2j)
# print(math.sqrt(-3 + 4j))
# TypeError: can't convert complex to float
Мөн math.sqrt() нь сөрөг утгыг боловсруулж чадахгүй тул ValueError гарч ирнэ.
print((-1)**0.5)
# (6.123233995736766e-17+1j)
# print(math.sqrt(-1))
# ValueError: math domain error
Нарийн төвөгтэй тоонуудтай ажиллах үед ** операторыг ашигласан жишээ нь алдааг харуулж байгаа боловч cmath модуль нь илүү нарийвчлалтай утгыг өгдөг гэдгийг анхаарна уу. Сөрөг утгыг мөн зохицуулж болно.
- ХОЛБООТОЙ:Python, нийлмэл тоонуудтай ажиллах цогц төрлүүд (үнэмлэхүй утга, бууралт, туйлын хувиргалт гэх мэт)
import cmath
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
Экспоненциал функц (байгалийн экспоненциал функц):math.exp()
Натурал логарифмын суурийн хүчийг (Napier тоо) e тооцоолохын тулд math.exp() ашиглана уу.
math.exp(x) нь e-ийн х квадратыг буцаана.
math.exp(x) нь “math.e ** x”-тэй тэнцүү биш бөгөөд math.exp(x) илүү нарийвчлалтай.
print(math.exp(2))
# 7.38905609893065
print(math.exp(2) == math.e**2)
# False
логарифм функц:math.log(),math.log10(),math.log2()
Логарифм функцийг тооцоолохдоо math.log(),math.log10(),math.log2()-г ашиглана.
math.log(x, y) нь у суурьтай х-ийн логарифмыг буцаана.
print(math.log(25, 5))
# 2.0
Хэрэв хоёр дахь аргументыг орхигдуулсан бол натурал логарифмийг доор харуулав.
логарифм
Математикийн хувьд log эсвэл ln-ээр илэрхийлэгдэх натурал логарифм (суурь нь Napier e тоо бүхий логарифм)-ийг math.log(x) ашиглан тооцоолж болно.
print(math.log(math.e))
# 1.0
логарифм (суурь 10)
Энгийн логарифмыг (10 суурьтай логарифм) math.log(x, 10)-аас илүү нарийвчлалтай math.log10(x) ашиглан тооцоолж болно.
print(math.log10(100000))
# 5.0
хоёртын логарифм
Хоёртын логарифмыг (2 суурьтай логарифм) math.log2(x)-ээр тооцоолж болох бөгөөд энэ нь math.log(x, 2)-аас илүү нарийвчлалтай.
print(math.log2(1024))
# 10.0