Программирование и научные вычисления на языке 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.

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



`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)`. Результат лежит в интервале [-π, π].

- Возвращает фазовый угол φ для числа x,



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

- Возвращает представление x в полярных координатах, то есть возвращает пару



`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**


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