Программирование и научные вычисления на языке Python/§2/Приложение

Чтобы вы знали о встроенных математических возможностях Python отдельным приложением к уроку 2 служит полный перечень функций модулей math и cmath. Если вы что-то забудете из приведенного, вы всегда можете импортировать модуль в интерпретаторе и набрать команды справки help(something), где в качестве something может стоять имя модуля, функции и т. д.


math править

Модуль math всегда доступен и обеспечивает доступ к математическим функциям.

Данные функции неприменимы к комплексным числам, для работы с комплексными числами имеются функции с теми же именами в модуле cmath.

Модуль содержит следующие функции. Во всех случаях, кроме особо оговоренных, функции возвращают число типа float.


Теоретико-численные функции и функции представления править

  • math.ceil(x)
    • Возвращает округленное x как ближайшее целое значение типа float, большее или равное x (округление "вверх").


  • math.copysign(x, y)
    • Возвращает число x со знаком числа y. На платформе, поддерживающей знак нуля copysign(1.0, -0.0) даст -1.0.


  • math.fabs(x)
    • Возвращает абсолютное значение (модуль) числа x. В Python есть встроенная функция abs, но она возвращает модуль числа с тем же типом, что число, здесь же всегда float abs (fabs).


  • math.factorial(x)
    • Возвращает факториал целого числа x, если x не целое возбуждается ошибка ValueError.


  • math.floor(x)
    • В противоположность ceil(x) возвращает округленное x как ближайшее целое значение типа float, меньшее или равное x (округление "вниз").


  • math.fmod(x, y)
    • Аналогична функции fmod(x, y) библиотеки C. Отметим, что это не то же самое, что выражение Python x%y. Желательно использовать при работе с объектами float, в то время как x % y больше подходит для int.


  • math.frexp(x)
    • Представляет число в экспоненциальной записи   и возвращает мантиссу m (действительное число, модуль которого лежит в интервале от 0.5 до 1) и порядок e (целое число) как пару чисел (m, e). Если x=0, то возвращает (0.0, 0)


  • math.fsum(iterable)
    • Возвращает float сумму от числовых элементов итерируемого объекта.


  • math.isinf(x)
    • Проверяет, является ли float объект x плюс или минус бесконечностью, результат соответственно True или False.


  • math.isnan(x)
    • Проверяет, является ли float объект x объектом NaN (not a number).


  • math.ldexp(x, i)
    • Возвращает значение  , то есть осуществляет действие, обратное функции math.frexp(x).


  • math.modf(x)
    • Возвращает часть, идущую после запятой и целую часть от float числа. Оба результата сохраняют знак исходного числа x и представлены типом float.


  • math.trunc(x)
    • Возвращает целую часть числа x в виде int объекта.


Степенные и логарифмические функции править

  • math.exp(x)
    • Возвращает  .


  • math.log(x[, base])
    • При передаче функции одного аргумента x, возвращает натуральный логарифм x. При передаче двух аргументов, второй берется как основание логарифма.


  • math.log1p(x)
    • Возвращает натуральный логарифм от x+1.


  • math.log10(x)
    • Возвращает десятичный логарифм x.


  • math.pow(x, y)
    • Возвращает  .


  • math.sqrt(x)
    • Квадратный корень (square root) из x.


Тригонометрические функции править

  • math.acos(x)
    • Возвращает арккосинус x, в радианах.


  • math.asin(x)
    • Возвращает арксинус x, в радианах.


  • math.atan(x)
    • Возвращает арктангенс x, в радианах.


  • math.atan2(y, x)
    • Возвращает atan(y/x), в радианах. Результат лежит в интервале [-π, π]. Вектор, конец, которого задается точкой (x, y) образует угол с положительным направлением оси x. Поэтому эта функция имеет более общее назначение, чем предыдущая. Например и atan(1), и atan2(1, 1) дадут в результате pi/4, но atan2(-1, -1) это уже -3*pi/4.


  • math.cos(x)
    • Возвращает косинус x, где x выражен в радианах.


  • math.hyp(x, y)
    • Возвращает евклидову норму, то есть sqrt(x**2+y**2). Удобно для вычисления гипотенузы (hyp) и длины вектора.


  • math.sin(x)
    • Возвращает синус x, где x выражен в радианах.


  • math.tan(x)
    • Возвращает тангенс x, где x выражен в радианах.


Радианы в градусы и наоборот править

  • math.degrees(x)
    • Конвертирует значение угла x из радиан в градусы.


  • math.radians(x)
    • Конвертирует значение угла x из градусов в радианы.


Гиперболические функции править

Смысл ясен из названий и соответствует стандартным обозначениям англоязычной литературы:

  • math.acosh(x)
  • math.asinh(x)
  • math.atanh(x)
  • math.cosh(x)
  • math.sinh(x)
  • math.tanh(x)


Константы править

  • math.pi
    • 3.1415926535897931


  • math.e
    • 2.7182818284590451

cmath править

Этот модуль всегда доступен и позволяет проводить операции над комплексными числами. При этом функции модуля поддерживают работу не только с комплексными, но и с целыми числами и числами с плавающей запятой

Причина, по которой имеются два таких схожих модуля, в том, что многим пользователям не нужны комплексные числа или они просто не знают что это такое. В этих случаях будет даже лучше, если при math.sqrt(-1) будет возбуждено исключение, чем будет найдено комплексное решение. При этом отметим, что функции в модуле всегда возвращают комплексное число, даже если исходные числа не содержат мнимой части.


Переход к полярным координатам и обратно править

Комплексное число z может быть представлено в Декартовой системе координат в представлении, что действительная z.real часть откладывается по оси x, а мнимая z.imag — по оси y. Само число z записывается:


z = z.real + z.imag*1j


Полярные координаты позволяют представить комплексное число другим образом — в виде радиуса ρ и фазового угла φ. Координата ρ определяет расстояние от точки до полюса, координата φ — угол между полярной осью и отрезком, соединяющим полюс и рассматриваемую точку.

Следующие функции могут быть использованы для перехода от исходных прямоугольных координат к полярным:


  • cmath.phase(x)
    • Возвращает фазовый угол φ для числа x, phase(x) эквивалентно math.atan2(x.imag, x.real). Результат лежит в интервале [-π, π].


  • cmath.polar(x)
    • Возвращает представление x в полярных координатах, то есть возвращает пару (r, phi).


  • cmath.rect(r, phi)(x)
    • Возвращает обычное комплексное представление x из представления в полярных координатах.


Другие функции править

Модуль содержит также ряд функций, с которыми мы ознакомились в модуле math, имеющими то же применение не только к действительным, но и к комплексным числам:

Степенные и логарифмические функции править

  • cmath.exp(x)
  • cmath.log(x [,base])
  • cmath.log10(x)
  • cmath.sqrt(x)

Тригонометрические функции править

  • cmath.acos(x)
  • cmath.asin(x)
  • cmath.atan(x)
  • cmath.cos(x)
  • cmath.sin(x)
  • cmath.tan(x)

Гиперболические функции править

  • cmath.acosh(x)
  • cmath.asinh(x)
  • cmath.atanh(x)
  • cmath.cosh(x)
  • cmath.sinh(x)
  • cmath.tanh(x)

Классифицирующие функции править

  • cmath.isinf(x)
  • cmath.isnan(x)

Константы править

  • cmath.pi
  • cmath.e


Изучив, данный раздел, мы можем приступить к третьему уроку данного курса, посвященному циклу и последовательностям.

Ссылки править