φυβλαςのβλογ
บล็อกของ phyblas



ภาษา python เบื้องต้น บทที่ ๑๖: ฟังก์ชันที่เกี่ยวข้องกับคณิตศาสตร์
เขียนเมื่อ 2016/03/05 21:10
แก้ไขล่าสุด 2024/02/22 11:03
 

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



อ้างอิง




-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> เขียนโปรแกรม >> python

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
มอดูลต่างๆ
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
ภาษา javascript
ภาษา mongol
ภาษาศาสตร์
maya
ความน่าจะเป็น
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
-- บันทึกในฮ่องกง
-- บันทึกในมาเก๊า
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

ไทย

日本語

中文