abs(x)
Возвращает абсолютное значение числа. Аргумент может быть целым числом, числом с плавающей запятой или объектом, реализующим abs() . Если аргумент представляет собой комплексное число, возвращается его величина.
Параметры ¶
Функция abs() принимает один аргумент: num — число, абсолютное значение которого должно быть возвращено.
Возвращаемое значение ¶
Метод abs() возвращает абсолютное значение заданного числа.
- Для целых чисел — возвращается целочисленное абсолютное значение
- Для чисел с плавающей запятой — возвращается абсолютное значение с плавающей запятой
- Для комплексных чисел — возвращается величина числа
Примеры ¶
number = -10 absolute = abs(number)print(absolute) # Результат: 10
Получить абсолютное значение числа
# случайное целое числоinteger = -40print('Абсолютное значение -40:', abs(integer)) #случайное число с плавающей запятойfloating = -56.21print('Абсолютное значение -56.21:', abs(floating)) # Результат: # Модуль числа -40: 40# Модуль числа -56.21: 56.21
Получить модуль комплексного числа
# случайное комплексное числоcomplex_ = (3 - 4j)print('Абсолютное значение 3 - 4j:', abs(complex_)) # Результат: # Абсолютное значение 3 - 4j is: 5.0
Модуль числа в 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
И еще несколько важных неравенств: