ในภาษาไพธอนมีฟังก์ชันที่เกียวกับการคำนวณทางคณิตศาสตร์อยู่หลายตัว มีส่วนหนึ่งที่อยู่ในฟังก์ชันหลักที่สามารถดึงมาใช้ได้ทันที เช่น ยกกำลัง 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) เอ็กซ์โพเนนเชียล e^x
- 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'
อ้างอิง