φυβλαςのβλογ
บล็อกของ 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)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

บทความแต่ละเดือน

2024年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2023年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2022年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2021年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2020年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

ค้นบทความเก่ากว่านั้น

ไทย

日本語

中文