Математик функцэд зориулсан Python-ийн стандарт модуль болох math-ийг ашиглан та тригонометрийн функц (sin, cos, tan) болон урвуу тригонометрийн функцийг (arcsin, arccos, arctan) тооцоолох боломжтой.
Дараах агуулгыг энд жишээ кодоор тайлбарлав.
- Pi (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()
Pi (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() юм.
Энд math.radians() ашиглан градусыг радиан болгон хөрвүүлэхийн тулд 30 градусын синусыг олох жишээг үзүүлэв.
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(), урвуу косинусыг олох функц (нуман косинус, 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) хүртэлх векторын туйлын координатын хавтгайд х тэнхлэгийн эерэг чиглэлтэй хийх өнцөг (назар) бөгөөд буцах утга нь -pi ба pi (-180) хооронд байна. 180 градус хүртэл).
Хоёр ба гуравдугаар квадрат дахь өнцгийг мөн зөв олж авах боломжтой тул туйлын координатын хавтгайг авч үзэхэд math.atan2() нь math.atan()-аас илүү тохиромжтой.
Аргументуудын дараалал нь x, y биш, y, x гэдгийг анхаарна уу.
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
Дээрх жишээний нэгэн адил х тэнхлэгийн сөрөг чиглэл (y нь тэг, х сөрөг) нь 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 дээр ажиллуулсны үр дүн гэдгийг анхаарна уу. Бусад хэрэгжүүлэлт эсвэл орчин сөрөг тэгийг өөрөөр зохицуулж болохыг анхаарна уу.