เมื่อใช้คณิตศาสตร์ ซึ่งเป็นโมดูลมาตรฐานของ Python สำหรับฟังก์ชันทางคณิตศาสตร์ คุณจะสามารถคำนวณฟังก์ชันเลขชี้กำลังและลอการิทึมได้ (ลอการิทึมธรรมชาติ ลอการิทึมสามัญ และลอการิทึมไบนารี)
มีการอธิบายสิ่งต่อไปนี้พร้อมกับโค้ดตัวอย่าง
- ฐานของลอการิทึมธรรมชาติ (เลขเนเปียร์):
math.e
- พลัง::
**
โอเปอเรเตอร์,pow()
,math.pow()
- รากที่สอง (ราก):
math.sqrt()
- ฟังก์ชันเลขชี้กำลัง (ฟังก์ชันเลขชี้กำลังธรรมชาติ):
math.exp()
- ฟังก์ชันลอการิทึม:
math.log()
,math.log10()
,math.log2()
ฐานของลอการิทึมธรรมชาติ (เลขเนเปียร์):math.e
ฐานของลอการิทึมธรรมชาติ (เลขเนเปียร์) ถูกจัดเตรียมเป็นค่าคงที่ในโมดูลคณิตศาสตร์ ซึ่งแสดงโดย math.e
import math
print(math.e)
# 2.718281828459045
อำนาจ: ** ตัวดำเนินการ pow(), math.pow():**โอเปอเรเตอร์,pow(),math.pow()
ในการคำนวณกำลัง ให้ใช้ตัวดำเนินการ ** ฟังก์ชันในตัว pow() หรือ math.pow()
ค่า y-square ของ x ได้ดังนี้
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() แปลงอาร์กิวเมนต์เป็นประเภททศนิยม ในทางกลับกัน pow() ฟังก์ชันในตัวของ Python ใช้ __pow()__ ที่กำหนดไว้สำหรับแต่ละประเภท
ตัวอย่างเช่น pow() อนุญาตให้ระบุประเภทที่ซับซ้อนเป็นอาร์กิวเมนต์ แต่ math.pow() ไม่สามารถแปลงประเภทที่ซับซ้อนเป็นประเภท float ทำให้เกิดข้อผิดพลาดได้
print(pow(1 + 1j, 2))
# 2j
# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float
pow() ฟังก์ชันในตัวของ Python ยังอนุญาตให้ใช้อาร์กิวเมนต์ที่สาม pow(x, y, z) ซึ่งจะคืนค่าส่วนที่เหลือ (ส่วนที่เหลือ) ของ z เป็นกำลัง y ของ x เป็นการคำนวณแบบเดียวกับ pow(x, y) % z แต่ pow(x, y, z) มีประสิทธิภาพมากกว่า
print(pow(2, 4, 5))
# 1
รากที่สอง (ราก):math.sqrt()
สแควร์รูท (รูท) สามารถตั้งค่าเป็น **0.5 โดยใช้ ** หรือ math.sqrt()
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 จะให้ค่าที่แม่นยำกว่า ค่าลบยังสามารถจัดการได้
import cmath
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
ฟังก์ชันเลขชี้กำลัง (ฟังก์ชันเลขชี้กำลังธรรมชาติ):math.exp()
ในการคำนวณกำลังของฐานของลอการิทึมธรรมชาติ (เลขเนเปียร์) e ให้ใช้ math.exp()
math.exp(x) คืนค่า 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) ส่งกลับค่าลอการิทึมของ x โดยมี y เป็นฐาน
print(math.log(25, 5))
# 2.0
หากละเว้นอาร์กิวเมนต์ที่สอง ลอการิทึมธรรมชาติจะแสดงอยู่ด้านล่าง
ลอการิทึม
ในคณิตศาสตร์ ลอการิทึมธรรมชาติ (ลอการิทึมที่มีเลข Napier e เป็นฐาน) แทนด้วย log หรือ ln สามารถคำนวณได้โดย math.log(x)
print(math.log(math.e))
# 1.0
ลอการิทึม (ฐาน 10)
ลอการิทึมธรรมดา (ลอการิทึมที่มีฐาน 10) สามารถคำนวณได้ด้วย math.log10(x) ซึ่งมีความแม่นยำมากกว่า math.log(x, 10)
print(math.log10(100000))
# 5.0
ลอการิทึมไบนารี
ลอการิทึมไบนารี (ลอการิทึมที่มีฐาน 2) สามารถคำนวณได้ด้วย math.log2(x) ซึ่งมีความแม่นยำมากกว่า math.log(x, 2)
print(math.log2(1024))
# 10.0