Программирование и научные вычисления на языке Python/§2/Приложение: модули math и cmath
Чтобы вы знали о встроенных математических возможностях 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, но она возвращает модуль числа с тем же типом, что число, здесь же всегдаfloatabs(fabs).
- Возвращает абсолютное значение (модуль) числа
math.factorial(x)- Возвращает факториал целого числа
x, еслиxне целое возбуждается ошибкаValueError.
- Возвращает факториал целого числа
math.floor(x)- В противоположность
ceil(x)возвращает округленноеxкак ближайшее целое значение типаfloat, меньшее или равноеx(округление «вниз»).
- В противоположность
math.fmod(x, y)- Аналогична функции
fmod(x, y)библиотеки C. Отметим, что это не то же самое, что выражение Pythonx%y. Желательно использовать при работе с объектамиfloat, в то время какx %y больше подходит дляint.
- Аналогична функции
math.frexp(x)- Представляет число в экспоненциальной записи и возвращает мантиссу (действительное число, модуль которого лежит в интервале от 0,5 до 1) и порядок (целое число) как пару чисел
(m, e). Еслиx=0, то возвращает(0.0, 0)
- Представляет число в экспоненциальной записи и возвращает мантиссу (действительное число, модуль которого лежит в интервале от 0,5 до 1) и порядок (целое число) как пару чисел
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)- Возвращает натуральный логарифм от .
math.log10(x)- Возвращает десятичный логарифм
x.
- Возвращает десятичный логарифм
math.pow(x, y)- Возвращает .
math.sqrt(x)- Квадратный корень (square root) из
x.
- Квадратный корень (square root) из
Тригонометрические функции
[править]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.picmath.e
Изучив, данный раздел, мы можем приступить к третьему уроку данного курса, посвященному циклу и последовательностям.