- Модуль числа в Python — функции abs() и math.fabs()
- Что такое модуль числа
- Abs
- Fabs
- Основные свойства модулей
- Модуль числа в Python
- Модуль числа
- Вычисление
- abs
- fabs
- Свое решение
- Модуль комплексного числа
- Числа в Python и методы работы с ними
- Целые числа (int) в Python
- Числа с плавающей точкой (float)
- Комплексные числа (complex)
- Проверка типа данных переменной
- Арифметические действия в Python
- Округление чисел с плавающей точкой
- Получение модуля числа
- Вывод
Модуль числа в Python — функции abs() и math.fabs()
Запускаю китайскую реплику «ТАРДИС», и вот мы в пятом классе. На доске нарисована числовая ось, а на ней выделен отрезок. Его начало в точке 4, а конец — в 8. Учительница говорит, что длину отрезка можно найти путём вычитания координаты начала отрезка из координаты его конца. Вычитаем, получаем 4, и радуемся — мы нашли длину. Ура! 🎉
Перемещаемся на год вперёд, и там происходит странное: учительница выделяет мелом другой отрезок, но делает это в каком-то неправильном месте — левее точки с цифрой «0». Теперь перед нами старая задача, но с новыми числами и даже буквами: A, B, минус 4 и минус 8. Мы начинаем искать длину отрезка AB = [-4;-8]:
Переводим непонимающий взгляд с получившейся отрицательной длины на довольную улыбающуюся учительницу, а затем на доску. Там наверху, рядом с сегодняшней датой, написана тема урока: «Модуль числа».
Что такое модуль числа
Для вещественных чисел модуль определяется так:
Т.е. в любом случае, модуль — число большее или равное 0. Поэтому отрицательная длина в примере хитрой учительницы должна была быть взята по модулю:
Тогда дети бы увидели, что геометрический смысл модуля — есть расстояние. Это справедливо и для комплексных чисел, однако формальное определение для них отличается от вещественного:
, где z — комплексное число: z = x + i y.
В Python для нахождения модуля числа применяются две функции: fabs() из подключаемой библиотеки math и встроенная функция abs() .
Abs
В то время как math.fabs() может оперировать только вещественными аргументами, abs() отлично справляется и с комплексными. Для начала покажем, что abs в python работает строго в соответствии с математическим определением.
# для вещественных чисел print(abs(-1)) print(abs(0)) print(abs(1)) > 1 > 0 > 1
Как видно, с вещественными числами всё в порядке. Перейдём к комплексным.
# для комплексных чисел print(complex(-3, 4)) print(abs(complex(-3, 4))) > (-3+4j) > 5.0
Если вспомнить, что комплексное число выглядит так: z = x + i y, а его модуль вычисляется по формуле:
, то можно без труда посчитать, что sqrt(3**2 + 4**2) действительно равно 5.0 .
Можно заметить, что abs() возвращает значения разных типов. Это зависит от типа аргумента:
print(type(abs(1))) > print(type(abs(1.0))) > print(type(abs(complex(1.0, 1.0))))
В этом кроется ещё одно отличие abs() от fabs() . Функция из модуля math всегда приводит аргумент к вещественному типу, а если это невозможно сделать — выбрасывает ошибку:
print(type(math.fabs(complex(2,3)))) > TypeError: can’t convert complex to float
Fabs
Для начала работы с fabs() необходимо импортировать модуль math с помощью следующей инструкции:
Мы уже выяснили, что fabs() не работает с комплексными числами, поэтому проверим работу функции на вещественных:
print(math.fabs(-10)) print(math.fabs(0)) print(math.fabs(10)) > 10.0 > 0.0 > 10.0
Функция производит вычисления в соответствие с математическим определением, однако, в отличие от abs() , всегда возвращает результат типа float :
Основные свойства модулей
# Квадрат модуля = квадрату числа print(pow(4, 2) == pow(abs(4), 2)) > True # |x| = |-x| print(abs(-10) == abs(10)) > True # Модуль произведения = произведению модулей: |ab|=|a||b| print(math.fabs(11 * 3) == math.fabs(11) * math.fabs(3)) > True # Аналогично для деления: |a/b|=|a|/|b| print(math.fabs(48/8) == math.fabs(48) / math.fabs(8)) > True # |a ** b| = |a| ** b print(abs(2 ** 10) == abs(2) ** 10) > True
И еще несколько важных неравенств:
Модуль числа в Python
Очень часто возникает необходимость вычисления модуля числа в Python. Рассмотрим, что такое модуль числа, какие есть способы его вычисления. Так же отдельно коснемся комплексных чисел.
Модуль числа
Часто в программировании требуется вычислить абсолютное значение числа. Иначе говоря, отбросить знак.
При вычислении модуля возможны 3 ситуации:
- Когда число больше 0. Если взять его по модулю — не изменится.
- Модуль нуля так же равен нулю.
- У отрицательного числа отбрасываем знак. То есть умножаем его на -1.
Но это все справедливо только для действительных чисел. Чему же тогда будет равен модуль комплексных?
Комплексное число состоит из действительной составляющей и мнимой. Геометрически это можно представить как 2 ортогональные оси: действительную и мнимую. Отмечаем на координатных осях требуемую точку. Модулем будет длина отрезка, проведенного из начала координат в эту точку.
Исходя из теоремы Пифагора получаем, что модуль комплексного числа это корень квадратный из суммы квадратов мнимой и действительной частей.
Вычисление
Вычислять модуль можно следующими способами:
- Используя стандартную функцию abs.
- С помощью функции fabs библиотеки math.
- При помощи самостоятельно написанной функции.
Все эти функции работают как в Python 2, так и в Python 3.
abs
Для вычисления в Python модуля числа используется функция abs. Результат функции того же типа, которого был аргумент.
a = -10 b = abs(a) print(b) print(type(b)) 10
fabs
Можно так же воспользоваться функцией fabs из библиотеки math. Библиотеку можно подключить с помощью from math import fabs .
from math import fabs a = -10 b = fabs(a) print(b) print(type(b)) 10.0
Отличие abs от fabs заключается в том, что функция abs возвращает значение того же типа, что и аргумент. Функция же fabs вначале преобразует тип аргумента к вещественному числу.
Свое решение
Если по каким то причинам нет возможности или желания использовать стандартные функции, то можно написать свое решение.
Например, можно вычислить воспользоваться тернарным оператором.
a = -10 b = a if a > 0 else -a print(b) 10
На основе такого условия сделаем свою функцию.
def my_abs(a): return a if a > 0 else -a print(my_abs(-3)) 3
Модуль комплексного числа
Мы разобрались как происходит вычисление с действительными числами. Теперь посмотрим, как в языке программирования Python можно получить модуль комплексного.
Функцией fabs мы не сможем воспользоваться. Если попытаемся это сделать, то получим ошибку приведения комплексного числа к действительному (TypeError).
from math import fabs a = -10-2j b = fabs(a) print(b) Traceback (most recent call last): File "main.py", line 3, in b = fabs(a) TypeError: can't convert complex to float
А вот с помощью abs преобразование удается.
a = -10-2j b = abs(a) print(b) 10.19803902718557
Или же напишем свою функцию:
from math import sqrt def my_abs_complex(c): return sqrt(c.real**2 + c.imag**2) a = -10-2j b = my_abs_complex(a) print(b) 10.198039027185569
Результаты получились одинаковыми. Но нам все равно пришлось подключить библиотеку math для вычисления квадратного корня.
Числа в Python и методы работы с ними
В Python, как и во всех популярных языках программирования, имеются целые числа (int) и числа с плавающей точкой (float). Но у Python есть и отличительная особенность – комплексные числа (complex).
Стоит также уточнить, что при присваивании переменной любого типа числа, не нужно использовать кавычки, так как они определяют строку, а не число. Пример:
str1 = '1' str2 = '2' num1 = 1 num2 = 2 print(str1+str2) # Выведет '12' print(num1+num2) # Выведет 3
Целые числа (int) в Python
В Python, как и в привычной нам математике, целыми числами являются все числа, которые лишены дробной части, то есть не имеют плавающей точки. Рассмотрим на примере:
num1 = 1 num2 = 2 # Присваиваем переменным целые числа print(num1, num2) # Выведет 1 2
Для упрощения создания больших чисел в Python используется нижнее подчеркивание, а не запятая. Пример:
num = 999_999_999 print(num) # Выведет 999999999 num = 999,999,999 print(num) # Выдаст ошибку
Числа с плавающей точкой (float)
Для отделения целой части числа в Python используется точка. Рассмотрим создание float-числа на примере:
num1 = 0.1 num2 = 0.22 # Присваиваем переменным целые числа print(num1, num2) # Выведет 0.1 0.22
Комплексные числа (complex)
Как я писал выше, Python поддерживает комплексные числа без установки дополнительных модулей. Рассмотрим создание таких чисел на примере:
# создание и сложение двух комплексных чисел num1 = 1 + 2j num2 = 2 + 4j summa = num1 + num2 print(summa) # Выведет (3+6j)
Проверка типа данных переменной
Для проверки типа данных переменной в Python используется встроенная функция type(). Рассмотрим на примере:
str = ‘1’ int = 1 float = 1.1 com1 = 1 + 2j com2 = 2 + 4j complex = com1 + com2 print(type(str)) # Выведет print(type(int)) # Выведет print(type(float)) # Выведет print(type(complex)) # Выведет
Арифметические действия в Python
Сложение делается с помощью оператора “+”. Пример:
a = 1 + 1 print(a) # Выведет 2
С помощью сложения можно преобразовать целое число в число с плавающей точкой. Рассмотрим на примере:
a = 1 + 1.0 print(a) # Выведет 2.0
Вычитание выполняется с помощью оператора “—”. Пример:
a = 1 - 1 print(a) # Выведет 0
Умножение делается с помощью оператора “*”:
a = 2 * 2 print(a) # Выведет 4
Возведение в степень выполняется с помощью оператора “**”. Пример:
Также возведение в степень можно производить с помощью функции pow():
num1 = 2 num2 = 3 print(pow(num1, num2)) # Выведет 8
Деление выполняется с помощью оператора “/”. Пример:
a = 4 / 2 print(a) # Выведет 2
Для получения остатка от деления используется оператор “%”. Пример:
a = 5 % 2 print(a) # Выведет 1
Целочисленное деление выполняется с помощью оператора “//”. Пример:
a = 5 // 2 print(a) # Выведет 2
Округление чисел с плавающей точкой
Для округления float-чисел до ближайшего целого числа используется функция round(). Рассмотрим на примере:
num1 = 1.4 num2 = 1.6 print(round(num1)) # Выведет 1 print(round(num2)) # Выведет 2
Получение модуля числа
Для получения модуля любого числа мы можем использовать функцию abs(). Рассмотрим на примере:
num1 = -2 num2 = 3 print(abs(num1)) # Выведет 2 print(abs(num2)) # Выведет 3
Вывод
Мы разобрали функции для работы с числами в Python и научились ими пользоваться. Надеюсь, эта статья оказалась для вас полезной. Удачи в ваших начинаниях!