ដោយប្រើគណិតវិទ្យា ម៉ូឌុលស្តង់ដាររបស់ Python សម្រាប់អនុគមន៍គណិតវិទ្យា អ្នកអាចគណនាអនុគមន៍ត្រីកោណមាត្រ (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()។
នេះគឺជាឧទាហរណ៍នៃការស្វែងរកស៊ីនុសនៃ 30 ដឺក្រេ ដោយប្រើ math.radians() ដើម្បីបំប្លែងដឺក្រេទៅជារ៉ាដ្យង់។
sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994
ស៊ីនុសនៃ 30 ដឺក្រេគឺ 0.5 ប៉ុន្តែមានកំហុសមួយដោយសារតែ pi ដែលជាចំនួនមិនសមហេតុផលមិនអាចគណនាបានត្រឹមត្រូវ។
ប្រសិនបើអ្នកចង់បង្គត់ទៅចំនួនខ្ទង់ដែលសមរម្យ សូមប្រើអនុគមន៍ round() ឬ format() method ឬ format() function។
ចំណាំថាតម្លៃត្រឡប់នៃ 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() ដូចនឹង sine ។
តង់សង់, តង់សង់បញ្ច្រាស: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 ដល់ ១៨០ ដឺក្រេ) ។
ដោយសារមុំនៅក្នុងចតុកោណកែងទីពីរ និងទីបីក៏អាចទទួលបានត្រឹមត្រូវដែរ 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 ។ ចំណាំថាការអនុវត្ត ឬបរិស្ថានផ្សេងទៀតអាចដោះស្រាយសូន្យអវិជ្ជមានខុសគ្នា។