คำนวณฟังก์ชันตรีโกณมิติใน Python (sin, cos, tan, arcsin, arccos, arctan)

ธุรกิจ

เมื่อใช้คณิตศาสตร์ ซึ่งเป็นโมดูลมาตรฐานของ Python สำหรับฟังก์ชันทางคณิตศาสตร์ คุณสามารถคำนวณฟังก์ชันตรีโกณมิติ (sin, cos, tan) และฟังก์ชันตรีโกณมิติผกผัน (arcsin, arccos, arctan)

เนื้อหาต่อไปนี้อธิบายไว้ที่นี่พร้อมโค้ดตัวอย่าง

  • พาย (3.1415926..):math.pi
  • การแปลงมุม (เรเดียน องศา):math.degrees(),math.radians()
  • ไซน์ผกผันไซน์:math.sin(),math.asin()
  • โคไซน์, โคไซน์ผกผัน:math.cos(),math.acos()
  • แทนเจนต์ผกผันแทนเจนต์:math.tan(),math.atan(),math.atan2()
  • ความแตกต่างด้านล่าง:math.atan(),math.atan2()

พาย (3.1415926..):math.pi

Pi ถูกจัดเตรียมเป็นค่าคงที่ในโมดูลคณิตศาสตร์ ได้แสดงไว้ดังนี้
math.pi

import math

print(math.pi)
# 3.141592653589793

การแปลงมุม (เรเดียน องศา):math.degrees(),math.radians()

ฟังก์ชันตรีโกณมิติและผกผันในโมดูลคณิตศาสตร์ใช้เรเดียนเป็นหน่วยของมุม

ใช้ math.degrees() และ math.radians() เพื่อแปลงระหว่างเรเดียน (วิธีองศาอาร์ค) และองศา (วิธีองศา)

Math.degrees() แปลงจากเรเดียนเป็นองศา และ math.radians() แปลงจากองศาเป็นเรเดียน

print(math.degrees(math.pi))
# 180.0

print(math.radians(180))
# 3.141592653589793

ไซน์ผกผันไซน์:math.sin(),math.asin()

ฟังก์ชันเพื่อค้นหาไซน์ (sin) คือ math.sin() และฟังก์ชันเพื่อค้นหาไซน์ผกผัน (arcsin) คือ math.asin()

นี่คือตัวอย่างการหาไซน์ของ 30 องศา โดยใช้ math.radians() เพื่อแปลงองศาเป็นเรเดียน

sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994

ไซน์ของ 30 องศาคือ 0.5 แต่มีข้อผิดพลาดเนื่องจาก pi ซึ่งเป็นจำนวนอตรรกยะไม่สามารถคำนวณได้อย่างแม่นยำ

หากคุณต้องการปัดเศษเป็นจำนวนหลักที่เหมาะสม ให้ใช้ฟังก์ชัน round() หรือวิธี format() หรือฟังก์ชัน format()

โปรดทราบว่าผลตอบแทนของ round() เป็นตัวเลข (int หรือ float) แต่ผลตอบแทนของ format() เป็นสตริง หากคุณต้องการใช้สำหรับการคำนวณในภายหลัง ให้ใช้ round()

print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# <class 'float'>

print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# <class 'str'>

print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# <class 'str'>

ฟังก์ชัน round() ระบุจำนวนตำแหน่งทศนิยมเป็นอาร์กิวเมนต์ที่สอง โปรดทราบว่านี่ไม่ใช่การปัดเศษอย่างเคร่งครัด ดูบทความต่อไปนี้สำหรับรายละเอียด

ฟังก์ชัน format() และ format() ระบุจำนวนตำแหน่งทศนิยมในสตริงข้อกำหนดการจัดรูปแบบ ดูบทความต่อไปนี้สำหรับรายละเอียด

หากคุณต้องการเปรียบเทียบ คุณสามารถใช้ math.isclose() ได้

print(math.isclose(sin30, 0.5))
# True

ในทำนองเดียวกัน นี่คือตัวอย่างการหาอินเวอร์สไซน์ของ 0.5 math.asin() ส่งคืนค่าเรเดียน ซึ่งจะถูกแปลงเป็นองศาด้วย math.degrees()

asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996

print(round(asin05, 3))
# 30.0

โคไซน์, โคไซน์ผกผัน:math.cos(),math.acos()

ฟังก์ชันเพื่อค้นหาโคไซน์ (cos) คือ math.cos() และฟังก์ชันเพื่อค้นหาโคไซน์ผกผัน (arc cosine, arccos) คือ math.acos()

นี่คือตัวอย่างการหาโคไซน์ของ 60 องศาและโคไซน์ผกผันของ 0.5

print(math.cos(math.radians(60)))
# 0.5000000000000001

print(math.degrees(math.acos(0.5)))
# 59.99999999999999

หากคุณต้องการปัดเศษเป็นตัวเลขที่เหมาะสม คุณสามารถใช้ round() หรือ format() เช่นเดียวกับไซน์

แทนเจนต์ผกผันแทนเจนต์:math.tan(),math.atan(),math.atan2()

ฟังก์ชันเพื่อค้นหาแทนเจนต์ (tan) คือ math.tan() และฟังก์ชันเพื่อค้นหาค่าแทนเจนต์ผกผัน (arctan) คือ math.atan() หรือ math.atan2()
Math.atan2() จะอธิบายในภายหลัง

ตัวอย่างของการหาแทนเจนต์ของ 45 องศาและแทนเจนต์ผกผันของ 1 องศาแสดงไว้ด้านล่าง

print(math.tan(math.radians(45)))
# 0.9999999999999999

print(math.degrees(math.atan(1)))
# 45.0

ความแตกต่างระหว่าง math.atan() และ math.atan2()

ทั้ง math.atan() และ math.atan2() เป็นฟังก์ชันที่คืนค่าแทนเจนต์ผกผัน แต่มีจำนวนของอาร์กิวเมนต์และช่วงของค่าที่ส่งกลับต่างกัน

math.atan(x) มีหนึ่งอาร์กิวเมนต์และส่งกลับ arctan(x) เป็นเรเดียน ค่าที่ส่งคืนจะอยู่ระหว่าง -pi \ 2 และ pi \ 2 (-90 ถึง 90 องศา)

print(math.degrees(math.atan(0)))
# 0.0

print(math.degrees(math.atan(1)))
# 45.0

print(math.degrees(math.atan(-1)))
# -45.0

print(math.degrees(math.atan(math.inf)))
# 90.0

print(math.degrees(math.atan(-math.inf)))
# -90.0

ในตัวอย่างข้างต้น math.inf แสดงถึงอินฟินิตี้

math.atan2(y, x) มีสองอาร์กิวเมนต์และส่งกลับ arctan(y \ x) เป็นเรเดียน มุมนี้คือมุม (เดคลิลิน) ที่เวกเตอร์จากจุดกำเนิดไปยังพิกัด (x, y) ทำด้วยทิศทางบวกของแกน x ในระนาบพิกัดเชิงขั้ว และค่าที่ส่งคืนอยู่ระหว่าง -pi และ pi (-180 ถึง 180 องศา)

เนื่องจากสามารถรับมุมในจตุภาคที่สองและสามได้อย่างถูกต้อง ดังนั้น math.atan2() จึงเหมาะสมกว่า math.atan() เมื่อพิจารณาระนาบพิกัดเชิงขั้ว

โปรดทราบว่าลำดับของอาร์กิวเมนต์คือ y, x, ไม่ใช่ x, y

print(math.degrees(math.atan2(0, 1)))
# 0.0

print(math.degrees(math.atan2(1, 1)))
# 45.0

print(math.degrees(math.atan2(1, 0)))
# 90.0

print(math.degrees(math.atan2(1, -1)))
# 135.0

print(math.degrees(math.atan2(0, -1)))
# 180.0

print(math.degrees(math.atan2(-1, -1)))
# -135.0

print(math.degrees(math.atan2(-1, 0)))
# -90.0

print(math.degrees(math.atan2(-1, 1)))
# -45.0

ดังในตัวอย่างข้างต้น ทิศทางลบของแกน x (y เป็นศูนย์และ x เป็นลบ) คือ pi (180 องศา) แต่เมื่อ y เป็นลบศูนย์ มันคือ -pi (-180 องศา) ระวังถ้าคุณต้องการจัดการกับป้ายอย่างเคร่งครัด

print(math.degrees(math.atan2(-0.0, -1)))
# -180.0

ศูนย์ลบเป็นผลมาจากการดำเนินการต่อไปนี้

print(-1 / math.inf)
# -0.0

print(-1.0 * 0.0)
# -0.0

จำนวนเต็มไม่ถือเป็นศูนย์ลบ

print(-0.0)
# -0.0

print(-0)
# 0

แม้ว่าทั้ง x และ y เป็นศูนย์ ผลลัพธ์ก็ขึ้นอยู่กับเครื่องหมาย

print(math.degrees(math.atan2(0.0, 0.0)))
# 0.0

print(math.degrees(math.atan2(-0.0, 0.0)))
# -0.0

print(math.degrees(math.atan2(-0.0, -0.0)))
# -180.0

print(math.degrees(math.atan2(0.0, -0.0)))
# 180.0

มีตัวอย่างอื่นๆ ที่เครื่องหมายของผลลัพธ์เปลี่ยนแปลงโดยขึ้นอยู่กับศูนย์ติดลบ เช่น math.atan2() เช่นเดียวกับ math.sin(), math.asin(), math.tan() และ math.atan() .

print(math.sin(0.0))
# 0.0

print(math.sin(-0.0))
# -0.0

print(math.asin(0.0))
# 0.0

print(math.asin(-0.0))
# -0.0

print(math.tan(0.0))
# 0.0

print(math.tan(-0.0))
# -0.0

print(math.atan(0.0))
# 0.0

print(math.atan(-0.0))
# -0.0

print(math.atan2(0.0, 1.0))
# 0.0

print(math.atan2(-0.0, 1.0))
# -0.0

โปรดทราบว่าตัวอย่างจนถึงตอนนี้เป็นผลของการรันโปรแกรมใน CPython โปรดทราบว่าการใช้งานหรือสภาพแวดล้อมอื่นๆ อาจจัดการค่าศูนย์ติดลบต่างกัน

Copied title and URL