Hướng dẫn dùng trigonometry functions python

Sử dụng toán học, mô-đun chuẩn của Python cho các hàm toán học, bạn có thể tính các hàm lượng giác (sin, cos, tan) và các hàm lượng giác ngược (arcsin, arccos, arctan).

  • Trigonometric functions — Mathematical functions — Python 3.10.4 Documentation

Các nội dung sau đây được giải thích ở đây với các mã mẫu.

  • Pi (3,1415926 ..):math.pi
  • Chuyển đổi góc (radian, độ):math.degrees(),math.radians()
  • Sin, sin nghịch đảo:math.sin(),math.asin()
  • cosin, cosin nghịch đảo:math.cos(),math.acos()
  • Tiếp tuyến, Tiếp tuyến nghịch đảo:math.tan(),math.atan(),math.atan2()
  • Sự khác biệt bên dưới:math.atan(),math.atan2()

Table of Contents

  • Pi (3,1415926 ..):math.pi
  • Chuyển đổi góc (radian, độ):math.degrees(),math.radians()
  • Sin, sin nghịch đảo:math.sin(),math.asin()
  • cosin, cosin nghịch đảo:math.cos(),math.acos()
  • Tiếp tuyến, Tiếp tuyến nghịch đảo:math.tan(),math.atan(),math.atan2()
  • Sự khác biệt giữa math.atan () và math.atan2 ()

Pi (3,1415926 ..):math.pi

Pi được cung cấp dưới dạng một hằng số trong mô-đun toán học. Nó được thể hiện như sau.
math.pi

import math

print(math.pi)
# 3.141592653589793

Chuyển đổi góc (radian, độ):math.degrees(),math.radians()

Các hàm lượng giác và hàm lượng giác nghịch đảo trong mô-đun toán học sử dụng radian làm đơn vị đo góc.

  • Radian – Wikipedia

Sử dụng math.degrees () và math.radians () để chuyển đổi giữa radian (phương pháp độ cung) và độ (phương pháp độ).

Math.degrees () chuyển đổi từ radian sang độ và math.radians () chuyển đổi từ độ sang radian.

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

print(math.radians(180))
# 3.141592653589793

Sin, sin nghịch đảo:math.sin(),math.asin()

Hàm tìm sin (sin) là math.sin () và hàm tìm sin nghịch đảo (arcsin) là math.asin ().

Đây là một ví dụ về việc tìm sin 30 độ, sử dụng math.radians () để chuyển đổi độ sang radian.

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

Sin của 30 độ là 0,5, nhưng có một sai số vì số pi, một số vô tỉ, không thể được tính toán chính xác.

Nếu bạn muốn làm tròn đến số chữ số thích hợp, hãy sử dụng hàm round () hoặc phương thức format () hoặc hàm format ().

Lưu ý rằng giá trị trả về của round () là một số (int hoặc float), nhưng giá trị trả về của format () là một chuỗi. Nếu bạn muốn sử dụng nó cho các phép tính tiếp theo, hãy sử dụng round ().

print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# 

print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# 

print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# 

Hàm round () chỉ định số vị trí thập phân làm đối số thứ hai của nó. Lưu ý rằng đây không phải là làm tròn hoàn toàn. Xem chi tiết bài viết sau.

  • CÓ LIÊN QUAN:Làm tròn số thập phân và số nguyên trong Python:round(),Decimal.quantize()

Phương thức format () và hàm format () chỉ định số vị trí thập phân trong chuỗi đặc tả định dạng. Xem chi tiết bài viết sau.

  • CÓ LIÊN QUAN:Chuyển đổi định dạng bằng Python, định dạng (điền 0, ký hiệu hàm mũ, hệ thập lục phân, v.v.)

Nếu bạn muốn so sánh, bạn cũng có thể sử dụng math.isclose ().

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

Tương tự, đây là một ví dụ về việc tìm sin nghịch đảo của 0,5. math.asin () trả về radian, được chuyển đổi thành độ với math.degrees ().

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

print(round(asin05, 3))
# 30.0

cosin, cosin nghịch đảo:math.cos(),math.acos()

Hàm tìm cosin (cos) là math.cos (), và hàm tìm cosin nghịch đảo (cung cosin, arccos) là math.acos ().

Đây là một ví dụ về tìm cosin 60 độ và cosin nghịch đảo 0,5.

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

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

Nếu bạn muốn làm tròn đến chữ số thích hợp, bạn có thể sử dụng round () hoặc format () như với sin.

Tiếp tuyến, Tiếp tuyến nghịch đảo:math.tan(),math.atan(),math.atan2()

Hàm tìm tiếp tuyến (tan) là math.tan () và hàm tìm tiếp tuyến ngược (arctan) là math.atan () hoặc math.atan2 ().
Math.atan2 () được mô tả sau.

Dưới đây là một ví dụ về tìm tiếp tuyến của 45 độ và tiếp tuyến nghịch đảo của 1 độ.

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

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

Sự khác biệt giữa math.atan () và math.atan2 ()

Cả math.atan () và math.atan2 () đều là những hàm trả về tiếp tuyến ngược, nhưng chúng khác nhau về số lượng đối số và phạm vi giá trị trả về.

math.atan (x) có một đối số và trả về arctan (x) tính bằng radian. Giá trị trả về sẽ nằm trong khoảng -pi \ 2 đến pi \ 2 (-90 đến 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

Trong ví dụ trên, math.inf đại diện cho vô hạn.

math.atan2 (y, x) có hai đối số và trả về arctan (y \ x) tính bằng radian. Góc này là góc (độ nghiêng) mà vectơ từ điểm gốc đến tọa độ (x, y) tạo với chiều dương của trục x trong mặt phẳng tọa độ cực và giá trị trả về nằm giữa -pi và pi (-180 đến 180 độ).

Vì các góc ở góc phần tư thứ hai và thứ ba cũng có thể lấy đúng, nên math.atan2 () thích hợp hơn math.atan () khi xét trên mặt phẳng tọa độ cực.

Lưu ý rằng thứ tự của các đối số là y, x, không phải 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

Như trong ví dụ trên, chiều âm của trục x (y là 0 và x là âm) là pi (180 độ), nhưng khi y là 0 âm, nó là -pi (-180 độ). Hãy cẩn thận nếu bạn muốn xử lý tấm biển một cách nghiêm minh.

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

Các số không âm là kết quả của các thao tác sau

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

print(-1.0 * 0.0)
# -0.0

Số nguyên không được coi là số không âm.

print(-0.0)
# -0.0

print(-0)
# 0

Ngay cả khi cả x và y đều bằng 0, kết quả vẫn phụ thuộc vào dấu hiệu.

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

Có các ví dụ khác trong đó dấu của kết quả thay đổi tùy thuộc vào các số không âm, chẳng hạn như math.atan2 () cũng như math.sin (), math.asin (), math.tan () và 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

Lưu ý rằng các ví dụ cho đến nay là kết quả của việc chạy chương trình trong CPython. Lưu ý rằng các triển khai hoặc môi trường khác có thể xử lý các số không âm theo cách khác.