သင်္ချာ၊ သင်္ချာလုပ်ဆောင်ချက်များအတွက် Python ၏ စံ module ကိုအသုံးပြု၍ exponential နှင့် logarithmic functions (natural logarithm၊ သာမန် logarithm နှင့် binary logarithm) ကို တွက်ချက်နိုင်သည်။
နမူနာကုဒ်နှင့်အတူ အောက်ပါတို့ကို ဤနေရာတွင် ရှင်းပြထားသည်။
- သဘာဝ လောဂရစ်သမ် အခြေခံ (Napier နံပါတ်):
math.e
- ပါဝါ-:
**
အော်ပရေတာ,pow()
,math.pow()
- လေးထောင့်အမြစ် (အမြစ်):
math.sqrt()
- အညွှန်းကိန်း လုပ်ဆောင်ချက် (သဘာဝ ကိန်းဂဏန်း လုပ်ဆောင်ချက်):
math.exp()
- လော့ဂရစ်သမ်လုပ်ဆောင်ချက်:
math.log()
,math.log10()
,math.log2()
သဘာဝ လောဂရစ်သမ် အခြေခံ (Napier နံပါတ်):math.e
သဘာဝ လော့ဂရစ်သမ် (Napier နံပါတ်) ၏ အခြေခံအား math.e ဖြင့် ဖော်ပြထားသော သင်္ချာမော်ဂျူးတွင် ကိန်းသေတစ်ခုအဖြစ် ပေးထားသည်။
import math
print(math.e)
# 2.718281828459045
ပါဝါ- **အော်ပရေတာ၊ pow(), math.pow():**အော်ပရေတာ,pow(),math.pow()
ပါဝါများကိုတွက်ချက်ရန်၊ **အော်ပရေတာ၊ တပ်ဆင်ထားသောလုပ်ဆောင်ချက် pow() သို့မဟုတ် math.pow() ကိုသုံးပါ။
x ၏ y-square ကို အောက်ပါအတိုင်း ရရှိသည်။
x**y
pow(x, y)
math.pow(x, y)
print(2**4)
# 16
print(pow(2, 4))
# 16
print(math.pow(2, 4))
# 16.0
math.pow() သည် အငြင်းအခုံကို floating-point အမျိုးအစားသို့ ပြောင်းသည်။ အခြားတစ်ဖက်တွင်၊ Python ၏ built-in function pow() သည် အမျိုးအစားတစ်ခုစီအတွက် သတ်မှတ်ထားသော __pow()__ ကို အသုံးပြုသည်။
ဥပမာအားဖြင့်၊ pow() သည် ရှုပ်ထွေးသောအမျိုးအစားများကို arguments အဖြစ်သတ်မှတ်ရန်ခွင့်ပြုသော်လည်း math.pow() သည် ရှုပ်ထွေးသောအမျိုးအစားများကို float အမျိုးအစားအဖြစ်သို့ပြောင်းလဲ၍မရသဖြင့် error ဖြစ်ပေါ်စေပါသည်။
print(pow(1 + 1j, 2))
# 2j
# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float
Python built-in function pow() သည် pow(x, y, z) ၏ အကြွင်း (ကျန်) ကို x ၏ y-power သို့ ပြန်ပေးသည့် တတိယအငြင်းပွားမှုကိုလည်း ခွင့်ပြုသည်။ ၎င်းသည် pow(x, y) %z နှင့် တူညီသော တွက်ချက်မှုဖြစ်ပြီး pow(x, y, z) သည် ပိုထိရောက်သည်။
print(pow(2, 4, 5))
# 1
လေးထောင့်အမြစ် (အမြစ်):math.sqrt()
နှစ်ထပ်ကိန်း (root) ကို ** သို့မဟုတ် math.sqrt() သုံးပြီး **0.5 ဟု သတ်မှတ်နိုင်သည်။
print(2**0.5)
# 1.4142135623730951
print(math.sqrt(2))
# 1.4142135623730951
print(2**0.5 == math.sqrt(2))
# True
math.pow(), math.sqrt() ကဲ့သို့ အငြင်းအခုံများကို လုပ်ဆောင်ရန်အတွက် Float-Point အမျိုးအစားများအဖြစ်သို့ ပြောင်းပေးသည်၊ ထို့ကြောင့် float အမျိုးအစားသို့ ပြောင်းလဲ၍မရသော အမျိုးအစားကို သတ်မှတ်ခြင်းသည် TypeError ဖြစ်နိုင်ပါသည်။
print((-3 + 4j)**0.5)
# (1.0000000000000002+2j)
# print(math.sqrt(-3 + 4j))
# TypeError: can't convert complex to float
ထို့အပြင်၊ math.sqrt() သည် အနုတ်တန်ဖိုးများကို မလုပ်ဆောင်နိုင်သောကြောင့် ValueError ဖြစ်ပေါ်စေပါသည်။
print((-1)**0.5)
# (6.123233995736766e-17+1j)
# print(math.sqrt(-1))
# ValueError: math domain error
ရှုပ်ထွေးသောနံပါတ်များနှင့် ဆက်ဆံရာတွင်၊ **အော်ပရေတာအသုံးပြုသည့် ဥပမာသည် အမှားတစ်ခုပြသသော်လည်း cmath module သည် ပိုမိုတိကျသောတန်ဖိုးကိုပေးဆောင်သည်ကို သတိပြုပါ။ အနုတ်လက္ခဏာတန်ဖိုးများကိုလည်း ကိုင်တွယ်နိုင်သည်။
import cmath
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
အညွှန်းကိန်း လုပ်ဆောင်ချက် (သဘာဝ ကိန်းဂဏန်း လုပ်ဆောင်ချက်):math.exp()
သဘာဝ လော့ဂရစ်သမ် (Napier နံပါတ်) ၏ အခြေခံ ပါဝါကို တွက်ချက်ရန် math.exp() ကို အသုံးပြုပါ။
math.exp(x) သည် x နှစ်ထပ်ကိန်း e ကို ပြန်ပေးသည်။
math.exp(x) သည် “ math.e**x” နှင့် ညီမျှသည် မဟုတ်ဘဲ math.exp(x) သည် ပိုမိုတိကျသည်။
print(math.exp(2))
# 7.38905609893065
print(math.exp(2) == math.e**2)
# False
လော့ဂရစ်သမ်လုပ်ဆောင်ချက်:math.log(),math.log10(),math.log2()
လော့ဂရစ်သမ်လုပ်ဆောင်ချက်ကို တွက်ချက်ရန် math.log(),math.log10(),math.log2() ကိုသုံးပါ။
math.log(x၊ y) သည် x ၏ logarithm ကို အခြေခံအဖြစ် y ဖြင့် ပြန်ပေးသည်။
print(math.log(25, 5))
# 2.0
ဒုတိယ အငြင်းအခုံကို ချန်လှပ်ထားလျှင် သဘာဝ လော့ဂရစ်သမ်ကို အောက်တွင် ပြထားသည်။
လော့ဂရစ်သမ်
သင်္ချာတွင်၊ လော့ဂရစ်သမ် (Napier နံပါတ် e ကို အခြေခံအဖြစ်) ပါရှိသော လော့ဂရစ်သမ်ကို လော့ဂ် သို့မဟုတ် ln ဖြင့် ကိုယ်စားပြု၍ math.log(x) ဖြင့် တွက်ချက်နိုင်သည်။
print(math.log(math.e))
# 1.0
လော့ဂရစ်သမ် (အခြေခံ ၁၀)
သာမန် လော့ဂရစ်သမ် (အခြေ 10 ပါသော လော့ဂရစ်သမ်) ကို math.log(x၊ 10) ထက် ပိုမိုတိကျသော math.log10(x) ဖြင့် တွက်ချက်နိုင်ပါသည်။
print(math.log10(100000))
# 5.0
ဒွိလောဂရစ်သမ်
ဒွိလောဂရစ်သမ် (အခြေ 2 ပါသော လော့ဂရစ်သမ်) ကို math.log(x၊ 2) ထက် ပိုမိုတိကျသည့် math.log2(x) ဖြင့် တွက်ချက်နိုင်ပါသည်။
print(math.log2(1024))
# 10.0