Программирование и научные вычисления на языке 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
Изучив, данный раздел, мы можем приступить к третьему уроку данного курса, посвященному циклу и последовательностям.