ในภาษาไพธอนมีฟังก์ชันที่เกียวกับการคำนวณทางคณิตศาสตร์อยู่หลายตัว มีส่วนหนึ่งที่อยู่ในฟังก์ชันหลักที่สามารถดึงมาใช้ได้ทันที เช่น ยกกำลัง
pow
ค่าสัมบูรณ์
abs
ซึ่งได้กล่าวถึงไปแล้วใน
บทที่ ๕ แต่ก็มีอีกจำนวนมากที่ไม่ได้อยู่ในคำสั่งหลัก ไม่สามารถที่จะใช้ได้ทันที จะต้องดึงมอดูลที่ชื่อว่า
math
จากไลบรารีมาตรฐานของไพธอนมาใช้
ในบทที่แล้วได้แนะนำวิธีการเรียกใช้มอดูลมาแล้ว เพื่อเป็นตัวอย่างจึงขอยกมอดูล
math
มาพูดถึงโดยละเอียดสักหน่อย เพราะเป็นมอดูลที่มีแนวโน้มใช้บ่อยที่สุด
math
เป็นหนึ่งในมอดูลภายในตัวของไพธอน มีความสำคัญมากเพราะเต็มไปด้วยฟังก์ชันที่ช่วยในการคำนวณ ในที่นี้จะยกส่วนหนึ่งมาแนะนำ
ก่อนอื่นต้องทำการเรียกใช้ด้วยคำสั่ง
import
ก่อน
import math
ค่าคงที่ ในมอดูล
math
ได้มีการจัดเตรียมค่าคงที่ทางคณิตศาสตร์ที่สำคัญไว้ ๒ ตัว คือ
math.pi
ค่า π
math.e
ค่า e
ตัวอย่าง
print('%.60f'%math.e) # ได้ 2.718281828459045090795598298427648842334747314453125000000000
print('%.60f'%math.pi) # ได้ 3.141592653589793115997963468544185161590576171875000000000000
ฟังก์ชันเลขชี้กำลัง ประกอบไปด้วยฟังก์ชันลอการิธึมและเอ็กซ์โพเนนเชียล โดยลอการิธึมฐาน 2 กับ 10 ใช้บ่อยจึงมีแยกเป็นฟังก์ชันไว้ต่างหากด้วย
math.exp(x)
เอ็กซ์โพเนนเชียล ex
math.log(x,เลขฐาน)
ลอการิธึมฐานอะไรก็ได้ ถ้าไม่ใส่ฐานจะเป็นฐานธรรมชาติ (ฐาน e)
math.log2(x)
ลอการิธึมฐาน 2
math.log10(x)
ลอการิธึมฐาน 10
ตัวอย่าง
print(math.log(27)) # ได้ 3.295836866004329
print(math.log(27,3)) # ได้ 3
print(math.log2(1024)) # ได้ 10
print(math.log10(1e-19)) # ได้ -19.0
ฟังก์ชันตรีโกณมิติ ประกอบไปด้วยฟังก์ชันตรีโกณหลัก ๓ ตัว คือ
sin cos tan
ส่วน
cosec sec cot
นั้นไม่มีต้องแทนเป็นส่วนกลับของ
sin cos tan
math.sin(x)
ค่า sine ของ x
math.cos(x)
ค่า cosine ของ x
math.tan(x)
ค่า tangent ของ x
ค่าที่ใช้ในฟังก์ชันตรีโกณนั้นต้องมีหน่วยเป็นเรเดียน ซึ่งถ้าจะใช้มุมในหน่วยองศาก็ต้องมาคูณด้วย π/180
ตัวอย่าง
print('%.40f'%math.sin(math.pi)) # ได้ 0.0000000000000001224646799147353207173764
print('%.40f'%math.cos(math.pi/2)) # ได้ 0.0000000000000000612323399573676603586882
print('%f'%math.tan(math.pi/2)) # ได้ 16331239353195370.000000
แล้วก็มีค่าตรีโกณผกผัน โดยเติม a นำหน้า
math.asin(x)
ค่า arcsine ของ x
math.acos(x)
ค่า arccosine ของ x
math.atan(x)
ค่า arctangent ของ x
หน่วยที่ได้จะออกมาเป็นเรเดียน
ตัวอย่าง
print(math.asin(0.5)/math.pi*180) # ได้ 30.0
print(math.acos(2)) # ได้ ValueError: math domain error
print(math.atan(1e100)/math.pi*180) # ได้ 90.0
นอกจากนั้นก็ยังมีฟังก์ชันไฮเพอร์โบลิก
math.sinh(x)
math.cosh(x)
math.tanh(x)
math.asinh(x)
math.acosh(x)
math.atanh(x)
ฟังก์ชันเปลี่ยนค่ามุม หากไม่ต้องการจะต้องมาคอยคูณหรือหารด้วย π/180 เวลาที่เปลี่ยนระหว่างเรเดียนกับองศาก็สามารถใช้ฟังก์ชันเพื่อเปลี่ยนค่ามุมได้
math.degrees(x)
แปลงเรเดียนเป็นองศา มีค่าเท่ากับ x/math.pi*180
math.radians(x)
แปลงองศาเป็นเรเดียน มีค่าเท่ากับ x*math.pi/180
ตัวอย่าง
print(math.radians(360)) # ได้ 6.283185307179586
print(1/math.pi*180 == math.degrees(1)) # ได้ True
อื่นๆ
math.sqrt(x)
ค่ารากที่ 2 ของ x
math.hypot(x,y)
ค่าผลบวกพีทาโกรัสของสามเหลี่ยมมุมฉากที่มีด้านประชิดมุมฉากเป็น x และ y
math.factorial(x)
ค่าแฟกทอเรียล x!
math.ceil(x)
จำนวนเต็มต่ำสุดที่มีค่ามากกว่า x
math.floor(x)
จำนวนเต็มสูงสุดที่มีค่ามากกว่า x
ตัวอย่าง
print(math.sqrt(2)) # ได้ 1.4142135623730951
print(math.hypot(3,4)) # ได้ 5.0
print(math.factorial(12)) # ได้ 479001600
print(math.floor(3.91)) # ได้ 3
print(math.ceil(3.91)) # ได้ 4
อนึ่ง ปกติแล้วถ้าใช้
int
ก็สามารถปัดเศษได้เช่นเดียวกับ
floor
ผลที่ได้จะเหมือนกัน
print(int(3.91)) # ได้ 3
แต่ผลที่ได้จะต่างกันหากเลขเป็นจำนวนลบ ในกรณีนั้น
int
จะได้ผลเหมือนกับ
ceil
แทน
print(int(-2.31)) # ได้ -2
print(math.floor(-2.31)) # ได้ -3
print(math.ceil(-2.31)) # ได้ -2'
อ้างอิง