Изчисляване на експоненциални и логаритмични функции в Python (exp, log, log10, log2)

Бизнес

С помощта на math, стандартния модул на Python за математически функции, можете да изчислявате експоненциални и логаритмични функции (естествен логаритъм, обикновен логаритъм и двоичен логаритъм).

Тук е обяснено следното, както и примерен код.

  • Основа на естествения логаритъм (число на Напие):math.e
  • Захранване::**оператор,pow(),math.pow()
  • Квадратен корен (корен):math.sqrt()
  • Експоненциална функция (естествена експоненциална функция):math.exp()
  • логаритмична функция:math.log(),math.log10(),math.log2()

Основа на естествения логаритъм (число на Напие): math.e

Основата на естествения логаритъм (числото на Напие) се предоставя като константа в модула math, обозначена с math.e.

import math

print(math.e)
# 2.718281828459045

Захранване: ** оператор, pow(), math.pow(): **оператор, pow(), math.pow()

За да изчислите мощностите, използвайте оператора **, вградената функция pow() или math.pow().

Квадратът y на x се получава по следния начин

  • 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() преобразува аргумента в тип с плаваща запетая. От друга страна, вградената функция pow() на Python използва __pow()__, дефинирана за всеки тип.

Например функцията pow() позволява задаването на сложни типове като аргументи, но math.pow() не може да преобразува сложни типове в float типове, което води до грешка.

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()

Квадратният корен (root) може да се зададе на **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() преобразува аргументите в типове с плаваща запетая за обработка, така че посочването на тип, който не може да бъде преобразуван в тип 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 дава по-точна стойност. Отрицателните стойности също могат да бъдат обработвани.

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) връща логаритъма на x с основа 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
Copied title and URL