Python ရှိ trigonometric လုပ်ဆောင်ချက်များကို တွက်ချက်ခြင်း (sin၊ cos၊ tan၊ arcsin၊ arccos၊ arctan)

စီးပွားရေးလုပ်ငန်း

သင်္ချာ၊ သင်္ချာလုပ်ဆောင်ချက်များအတွက် Python ၏စံ module ကိုအသုံးပြုခြင်းဖြင့် trigonometric functions (sin, cos, tan) နှင့် inverse trigonometric functions (arcsin, arccos, arctan) ကို သင်တွက်ချက်နိုင်ပါသည်။

အောက်ပါအကြောင်းအရာများကို နမူနာကုဒ်များဖြင့် ဤနေရာတွင် ရှင်းပြထားပါသည်။

  • Pi (3.1415926..):math.pi
  • ထောင့်ပြောင်းခြင်း (ရေဒီယံ၊ ဒီဂရီ):math.degrees(),math.radians()
  • Sine, Inverse sine:math.sin(),math.asin()
  • cosine၊ ပြောင်းပြန် ကိုsine: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()

သင်္ချာ module ရှိ trigonometric နှင့် inverse trigonometric functions များသည် radian ကို ထောင့်ယူနစ်အဖြစ် အသုံးပြုသည်။

radians (arc degree method) နှင့် degrees (degree method) အကြားသို့ ပြောင်းရန် math.degrees() နှင့် math.radians() ကိုသုံးပါ။

Math.degrees() သည် radian မှ ဒီဂရီ သို့ ပြောင်းလဲပြီး math.radians() သည် ဒီဂရီမှ radian သို့ ပြောင်းလဲပါသည်။

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

print(math.radians(180))
# 3.141592653589793

Sine, Inverse sine:math.sin(),math.asin()

sine (sin) ကို ရှာရန် function မှာ math.sin() ဖြစ်ပြီး inverse sine (arcsin) ကို ရှာရန် function မှာ math.asin() ဖြစ်သည်။

ဤသည်မှာ ဒီဂရီမှ ရေဒီယံသို့ပြောင်းရန် math.radians() ကိုအသုံးပြု၍ 30 ဒီဂရီ sine ကိုရှာဖွေခြင်း၏ ဥပမာတစ်ခုဖြစ်သည်။

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

30 ဒီဂရီ၏ sine သည် 0.5 ဖြစ်သည်၊ သို့သော် pi ၊ အချည်းနှီးသောနံပါတ်ကို တိကျစွာ မတွက်ချက်နိုင်သောကြောင့် အမှားအယွင်းရှိနေပါသည်။

သင့်လျော်သော ဂဏန်းအရေအတွက်သို့ လှည့်ပတ်လိုပါက round() function သို့မဟုတ် format() method သို့မဟုတ် format() function ကို အသုံးပြုပါ။

round() ၏ return value သည် နံပါတ် (int သို့မဟုတ် float) ဖြစ်သော်လည်း format() ၏ return value သည် string တစ်ခုဖြစ်သည်။ နောက်ဆက်တွဲ တွက်ချက်မှုတွေအတွက် အသုံးပြုချင်ရင် 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() method နှင့် format() function သည် formatting specification string တွင် decimal နေရာများကို သတ်မှတ်ပေးပါသည်။ အသေးစိတ်အတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

နှိုင်းယှဉ်ချင်ရင် math.isclose() ကိုသုံးနိုင်ပါတယ်။

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

အလားတူ၊ ဤနေရာတွင် 0.5 ၏ ပြောင်းပြန် sine ကိုရှာဖွေခြင်း၏ ဥပမာတစ်ခုဖြစ်သည်။ math.asin() သည် math.degrees() ဖြင့် ဒီဂရီအဖြစ်ပြောင်းထားသော radian ကို ပြန်ပေးသည်။

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

print(round(asin05, 3))
# 30.0

cosine၊ ပြောင်းပြန် ကိုsine:math.cos(),math.acos()

cosine (cos) ကိုရှာရန် function မှာ math.cos() ဖြစ်ပြီး inverse cosine (arc cosine, arccos) သည် math.acos() ဖြစ်သည်။

ဤတွင် ကိုsine 60 ဒီဂရီနှင့် ပြောင်းပြန် ကိုsine 0.5 ကိုရှာခြင်း၏ ဥပမာတစ်ခုဖြစ်သည်။

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

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

သင့်လျော်သောဂဏန်းသို့ လှည့်လိုပါက၊ sine ကဲ့သို့ round() သို့မဟုတ် format() ကို သုံးနိုင်သည်။

တန်ဂျန့်၊ ပြောင်းပြန် တန်းဂျင့်:math.tan(),math.atan(),math.atan2()

tangent (tan) ကို ရှာရန် function မှာ math.tan() ဖြစ်ပြီး inverse tangent (arctan) ကို ရှာရန် function မှာ 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() နှစ်ခုလုံးသည် inverse tangent ကို ပြန်ပေးသည့် function များဖြစ်သည်၊ သို့သော် ၎င်းတို့သည် argument အရေအတွက်နှင့် return တန်ဖိုးများ၏ အကွာအဝေးတွင် ကွဲပြားသည်။

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) သို့ vector မှ ဝင်ရိုးစွန်းသြဒီနိတ်လေယာဉ်ရှိ x ဝင်ရိုး၏ အပြုသဘောဆောင်သော ဦးတည်ချက်ဖြင့် ပြုလုပ်ပေးသော ထောင့်ဖြစ်ပြီး ပြန်ပေးသည့်တန်ဖိုးမှာ -pi နှင့် pi (-180) 180 ဒီဂရီအထိ) ။

ဒုတိယနှင့် တတိယမြောက် quadrants များရှိ ထောင့်များကိုလည်း မှန်ကန်စွာ ရယူနိုင်သောကြောင့်၊ 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 တွင် ပရိုဂရမ်ကို လုပ်ဆောင်ခြင်း၏ ရလဒ်များဖြစ်ကြောင်း သတိပြုပါ။ အခြားအကောင်အထည်ဖော်မှုများ သို့မဟုတ် ပတ်ဝန်းကျင်များသည် အနုတ်သုညများကို ကွဲပြားစွာကိုင်တွယ်နိုင်သည်ကို သတိပြုပါ။