คำนวณฟังก์ชันเลขชี้กำลังและลอการิทึมใน Python (exp, log, log10, log2)

ธุรกิจ

เมื่อใช้คณิตศาสตร์ ซึ่งเป็นโมดูลมาตรฐานของ 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
Copied title and URL