គណនាអនុគមន៍ត្រីកោណមាត្រនៅក្នុង Python (sin, cos, tan, arcsin, arccos, arctan)

អាជីវកម្ម

ដោយប្រើគណិតវិទ្យា ម៉ូឌុលស្តង់ដាររបស់ 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 ។ ចំណាំថាការអនុវត្ត ឬបរិស្ថានផ្សេងទៀតអាចដោះស្រាយសូន្យអវិជ្ជមានខុសគ្នា។

Copied title and URL