Выкарыстоўваючы матэматыку, стандартны модуль Python для матэматычных функцый, вы можаце разлічваць экспанентныя і лагарыфмічныя функцыі (натуральны лагарыфм, звычайны лагарыфм і двайковы лагарыфм).
Тут тлумачыцца наступнае разам з прыкладам кода.
- Падстава натуральнага лагарыфма (лік Нэпье):
math.e
- Магутнасць::
**
аператар,pow()
,math.pow()
- Квадратны корань (корань):
math.sqrt()
- Экспанентная функцыя (натуральная экспанентная функцыя):
math.exp()
- лагарыфмічная функцыя:
math.log()
,math.log10()
,math.log2()
Падстава натуральнага лагарыфма (лік Нэпье):math.e
Падстава натуральнага лагарыфма (лік Нэп’е) падаецца ў матэматычным модулі ў выглядзе канстанты, якая пазначаецца math.e.
import math
print(math.e)
# 2.718281828459045
Магутнасць: ** аператар, pow(), math.pow():**аператар,pow(),math.pow()
Для вылічэння магутнасці выкарыстоўвайце аператар **, убудаваную функцыю pow() або math.pow().
У-квадрат х атрымліваецца наступным чынам
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() пераўтворыць аргумент у тып з плаваючай кропкай. З іншага боку, убудаваная функцыя Python pow() выкарыстоўвае __pow()__, вызначаны для кожнага тыпу.
Напрыклад, pow() дазваляе ўказваць складаныя тыпы ў якасці аргументаў, але math.pow() не можа пераўтварыць складаныя тыпы ў тыпы з плаваючай плынню, што прыводзіць да памылкі.
print(pow(1 + 1j, 2))
# 2j
# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float
Убудаваная ў Python функцыя pow() таксама дазваляе выкарыстоўваць трэці аргумент, pow(x, y, z), які вяртае рэшту (астатак) z у y-ступень x. Гэта той жа разлік, што і pow(x, y) % z, але pow(x, y, z) больш эфектыўны.
print(pow(2, 4, 5))
# 1
Квадратны корань (корань):math.sqrt()
Квадратны корань (корань) можна ўсталяваць у **0,5 з дапамогай ** або math.sqrt().
print(2**0.5)
# 1.4142135623730951
print(math.sqrt(2))
# 1.4142135623730951
print(2**0.5 == math.sqrt(2))
# True
Як і math.pow(), math.sqrt() пераўтворыць аргументы ў тыпы з плаваючай кропкай для апрацоўкі, таму ўказанне тыпу, які нельга пераўтварыць у тып з плаваючай кропкай, прывядзе да 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 дае больш дакладнае значэнне. Адмоўныя значэнні таксама можна апрацоўваць.
import cmath
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
Экспанентная функцыя (натуральная экспанентная функцыя):math.exp()
Каб вылічыць ступень асновы натуральнага лагарыфма (лік Нэпье) e, выкарыстоўвайце 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) вяртае лагарыфм х з асновай y.
print(math.log(25, 5))
# 2.0
Калі другі аргумент апушчаны, натуральны лагарыфм паказаны ніжэй.
лагарыфм
У матэматыцы натуральны лагарыфм (лагарыфм з лікам Нэп’е e ў якасці падставы), прадстаўлены log або ln, можа быць вылічаны з дапамогай math.log(x).
print(math.log(math.e))
# 1.0
лагарыфм (падстава 10)
Звычайны лагарыфм (лагарыфм з падставай 10) можна вылічыць з дапамогай math.log10(x), што больш дакладна, чым math.log(x, 10).
print(math.log10(100000))
# 5.0
двайковы лагарыфм
Двайковы лагарыфм (лагарыфм з падставай 2) можна вылічыць з дапамогай math.log2(x), што больш дакладна, чым math.log(x, 2).
print(math.log2(1024))
# 10.0